Skip to content

Commit d25d305

Browse files
author
Julien Pivotto
authored
Merge pull request #450 from roidelapluie/marshal
Fix and test JSON & YAML marshalling
2 parents 72ed068 + 6004368 commit d25d305

File tree

2 files changed

+82
-2
lines changed

2 files changed

+82
-2
lines changed

config/http_config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func (tv *TLSVersion) UnmarshalJSON(data []byte) error {
106106
func (tv TLSVersion) MarshalJSON() ([]byte, error) {
107107
for s, v := range TLSVersions {
108108
if tv == v {
109-
return []byte(s), nil
109+
return json.Marshal(s)
110110
}
111111
}
112112
return nil, fmt.Errorf("unknown TLS version: %d", tv)

config/tls_config_test.go

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,88 @@ func TestInvalidTLSConfig(t *testing.T) {
127127
}
128128
}
129129

130-
func TestStringer(t *testing.T) {
130+
func TestTLSVersionStringer(t *testing.T) {
131131
if s := (TLSVersion)(tls.VersionTLS13); s.String() != "TLS13" {
132132
t.Fatalf("tls.VersionTLS13 string should be TLS13, got %s", s.String())
133133
}
134134
}
135+
136+
func TestTLSVersionMarshalYAML(t *testing.T) {
137+
var tests = []struct {
138+
input TLSVersion
139+
expected string
140+
err error
141+
}{
142+
{
143+
input: TLSVersions["TLS13"],
144+
expected: "TLS13\n",
145+
err: nil,
146+
},
147+
{
148+
input: TLSVersions["TLS10"],
149+
expected: "TLS10\n",
150+
err: nil,
151+
},
152+
{
153+
input: TLSVersion(999),
154+
expected: "",
155+
err: fmt.Errorf("unknown TLS version: 999"),
156+
},
157+
}
158+
159+
for _, test := range tests {
160+
t.Run(fmt.Sprintf("MarshalYAML(%d)", test.input), func(t *testing.T) {
161+
actualBytes, err := yaml.Marshal(&test.input)
162+
if err != nil {
163+
if test.err == nil || err.Error() != test.err.Error() {
164+
t.Fatalf("error %v, expected %v", err, test.err)
165+
}
166+
return
167+
}
168+
actual := string(actualBytes)
169+
if actual != test.expected {
170+
t.Fatalf("returned %s, expected %s", actual, test.expected)
171+
}
172+
})
173+
}
174+
}
175+
176+
func TestTLSVersionMarshalJSON(t *testing.T) {
177+
var tests = []struct {
178+
input TLSVersion
179+
expected string
180+
err error
181+
}{
182+
{
183+
input: TLSVersions["TLS13"],
184+
expected: `"TLS13"`,
185+
err: nil,
186+
},
187+
{
188+
input: TLSVersions["TLS10"],
189+
expected: `"TLS10"`,
190+
err: nil,
191+
},
192+
{
193+
input: TLSVersion(999),
194+
expected: "",
195+
err: fmt.Errorf("unknown TLS version: 999"),
196+
},
197+
}
198+
199+
for _, test := range tests {
200+
t.Run(fmt.Sprintf("MarshalJSON(%d)", test.input), func(t *testing.T) {
201+
actualBytes, err := json.Marshal(&test.input)
202+
if err != nil {
203+
if test.err == nil || !strings.HasSuffix(err.Error(), test.err.Error()) {
204+
t.Fatalf("error %v, expected %v", err, test.err)
205+
}
206+
return
207+
}
208+
actual := string(actualBytes)
209+
if actual != test.expected {
210+
t.Fatalf("returned %s, expected %s", actual, test.expected)
211+
}
212+
})
213+
}
214+
}

0 commit comments

Comments
 (0)