-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconfiguration_test.go
149 lines (131 loc) · 2.94 KB
/
configuration_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package unipitt
import (
"io/ioutil"
"os"
"testing"
yaml "gopkg.in/yaml.v2"
)
func TestConfigurationUnmarshal(t *testing.T) {
input := []byte(`
topics:
di_1_01: kitchen switch
do_2_02: living light
`)
var c Configuration
err := yaml.Unmarshal(input, &c)
if err != nil {
t.Fatal(err)
}
expected := &Configuration{
Topics: map[string]string{
"di_1_01": "kitchen switch",
"do_2_02": "living light",
},
}
for k, v := range expected.Topics {
if topic, ok := c.Topics[k]; !ok {
t.Errorf("Could not find topic for name %s\n", k)
} else if topic != v {
t.Errorf("Expected topic to be %s, but got %s\n", v, topic)
}
}
}
func TestConfigurationTopic(t *testing.T) {
cases := []struct {
Name string
Expected string
}{
{Name: "foo", Expected: "qux"},
{Name: "bar", Expected: "bar"},
}
c := Configuration{
Topics: map[string]string{
"foo": "qux",
},
}
for _, testCase := range cases {
result := c.Topic(testCase.Name)
if result != testCase.Expected {
t.Fatalf("Expected result to be %s, got %s\n", testCase.Expected, result)
}
}
}
func TestConfigurationName(t *testing.T) {
cases := []struct {
Topic string
Expected string
}{
{Topic: "foo", Expected: "qux"},
{Topic: "bar", Expected: "bar"},
}
c := Configuration{
Topics: map[string]string{
"qux": "foo",
},
}
for _, testCase := range cases {
result := c.Name(testCase.Topic)
if result != testCase.Expected {
t.Fatalf("Expected result to be %s, got %s\n", testCase.Expected, result)
}
}
}
func TestConfigFromFileNonExistant(t *testing.T) {
_, err := configFromFile("foo")
if err == nil {
t.Fatalf("Expected an error to occur reading non-existent file, got not none")
}
}
func TestConfigFromFile(t *testing.T) {
configFile, err := ioutil.TempFile("", "config")
if err != nil {
t.Fatal(err)
}
defer os.Remove(configFile.Name())
content := []byte(`
topics:
di_1_01: kitchen switch
do_2_02: living light
`)
if _, err := configFile.Write(content); err != nil {
t.Fatal(err)
}
if err := configFile.Close(); err != nil {
t.Fatal(err)
}
c, err := configFromFile(configFile.Name())
if err != nil {
t.Fatal(err)
}
expected := &Configuration{
Topics: map[string]string{
"di_1_01": "kitchen switch",
"do_2_02": "living light",
},
}
for k, v := range expected.Topics {
if topic, ok := c.Topics[k]; !ok {
t.Errorf("Could not find topic for name %s\n", k)
} else if topic != v {
t.Errorf("Expected topic to be %s, but got %s\n", v, topic)
}
}
}
func TestConfigFromFileUnmarshalIssue(t *testing.T) {
configFile, err := ioutil.TempFile("", "config")
if err != nil {
t.Fatal(err)
}
defer os.Remove(configFile.Name())
content := []byte("foo")
if _, err := configFile.Write(content); err != nil {
t.Fatal(err)
}
if err := configFile.Close(); err != nil {
t.Fatal(err)
}
_, err = configFromFile(configFile.Name())
if err == nil {
t.Fatal("Expected an error on unmarshalling, got none")
}
}