yanic/respond/collector_test.go

106 lines
1.9 KiB
Go

package respond
import (
"os"
"testing"
"time"
"github.com/FreifunkBremen/yanic/runtime"
"github.com/stretchr/testify/assert"
)
const (
SITE_TEST = "ffhb"
DOMAIN_TEST = "city"
)
func TestCollector(t *testing.T) {
nodes := runtime.NewNodes(&runtime.NodesConfig{})
config := &Config{
Sites: map[string]SiteConfig{
SITE_TEST: {
Domains: []string{DOMAIN_TEST},
},
},
}
collector := NewCollector(nil, nodes, config)
collector.Start(time.Millisecond)
time.Sleep(time.Millisecond * 10)
collector.Close()
}
func TestParse(t *testing.T) {
assert := assert.New(t)
// read testdata
compressed, err := os.ReadFile("testdata/nodeinfo.flated")
assert.Nil(err)
res := &Response{
Raw: compressed,
}
data, err := res.parse([]CustomFieldConfig{})
assert.NoError(err)
assert.NotNil(data)
assert.Equal("f81a67a5e9c1", data.Nodeinfo.NodeID)
}
func TestParseCustomFields(t *testing.T) {
assert := assert.New(t)
// read testdata
compressed, err := os.ReadFile("testdata/nodeinfo.flated")
assert.Nil(err)
res := &Response{
Raw: compressed,
}
customFields := []CustomFieldConfig{
{
Name: "my_custom_field",
Path: "nodeinfo.hostname",
},
}
data, err := res.parse(customFields)
assert.NoError(err)
assert.NotNil(data)
assert.Equal("Trillian", data.CustomFields["my_custom_field"])
assert.Equal("Trillian", data.Nodeinfo.Hostname)
}
func TestParseCustomFieldNotExistant(t *testing.T) {
assert := assert.New(t)
// read testdata
compressed, err := os.ReadFile("testdata/nodeinfo.flated")
assert.Nil(err)
res := &Response{
Raw: compressed,
}
customFields := []CustomFieldConfig{
{
Name: "some_other_field",
Path: "nodeinfo.some_field_which_doesnt_exist",
},
}
data, err := res.parse(customFields)
assert.NoError(err)
assert.NotNil(data)
_, ok := data.CustomFields["some_other_field"]
assert.Equal("Trillian", data.Nodeinfo.Hostname)
assert.False(ok)
}