More coverage of the validation error serialization

Signed-off-by: Ying Li <ying.li@docker.com>
This commit is contained in:
Ying Li 2015-12-09 17:12:14 -08:00
parent 20f5b5f3b2
commit b69c200038
1 changed files with 16 additions and 18 deletions

View File

@ -23,29 +23,27 @@ func TestNewSerializableErrorValidationError(t *testing.T) {
assert.Equal(t, vError, s.Error) assert.Equal(t, vError, s.Error)
} }
// We can unmarshal a marshalled SerializableError // We can unmarshal a marshalled SerializableError for all validation errors
func TestUnmarshalSerialiableErrorSuccessfully(t *testing.T) { func TestUnmarshalSerialiableErrorSuccessfully(t *testing.T) {
origS, err := NewSerializableError(ErrBadHierarchy{Missing: "root", Msg: "badness"}) validationErrors := []error{
assert.NoError(t, err) ErrValidation{"bad validation"},
ErrBadHierarchy{Missing: "root", Msg: "badness"},
b, err := json.Marshal(origS) ErrBadRoot{"bad root"},
assert.NoError(t, err) ErrBadTargets{"bad targets"},
ErrBadSnapshot{"bad snapshot"},
jsonBytes := [][]byte{
b,
[]byte(`{"Name":"ErrBadHierarchy","Error":{"Missing":"root","Msg":"badness"}}`),
} }
for _, toUnmarshal := range jsonBytes { for _, validError := range validationErrors {
var newS SerializableError origS, err := NewSerializableError(validError)
err = json.Unmarshal(toUnmarshal, &newS) assert.NoError(t, err)
jsonBytes, err := json.Marshal(origS)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, "ErrBadHierarchy", newS.Name) var newS SerializableError
e, ok := newS.Error.(ErrBadHierarchy) err = json.Unmarshal(jsonBytes, &newS)
assert.True(t, ok) assert.NoError(t, err)
assert.Equal(t, "root", e.Missing)
assert.Equal(t, "badness", e.Msg) assert.Equal(t, validError, newS.Error)
} }
} }