make originator unmarshalable (#77)
This commit is contained in:
parent
97bec2e80f
commit
e870447e75
14
v1/types.go
14
v1/types.go
@ -521,6 +521,20 @@ func (o Originator) MarshalText() ([]byte, error) {
|
||||
return nil, ErrInvalidOriginator
|
||||
}
|
||||
|
||||
// UnmarshalText unmarshals originator from text to the value.
|
||||
func (o *Originator) UnmarshalText(text []byte) error {
|
||||
switch string(text) {
|
||||
case "customer":
|
||||
*o = OriginatorCustomer
|
||||
return nil
|
||||
case "channel":
|
||||
*o = OriginatorChannel
|
||||
return nil
|
||||
}
|
||||
|
||||
return ErrInvalidOriginator
|
||||
}
|
||||
|
||||
type TransportErrorCode string
|
||||
|
||||
const (
|
||||
|
@ -98,6 +98,37 @@ func TestOriginator(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("MarshalJSON_Invalid", OriginatorMarshalJSONInvalid)
|
||||
|
||||
t.Run("UnmarshalText_Valid", func(t *testing.T) {
|
||||
cases := []struct {
|
||||
value Originator
|
||||
text []byte
|
||||
}{
|
||||
{1, []byte("customer")},
|
||||
{2, []byte("channel")},
|
||||
}
|
||||
for _, c := range cases {
|
||||
var o Originator
|
||||
err := o.UnmarshalText(c.text)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, c.value, o)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("UnmarshalText_Invalid", func(t *testing.T) {
|
||||
var o Originator
|
||||
err := o.UnmarshalText([]byte{})
|
||||
assert.Empty(t, o)
|
||||
assert.Equal(t, err, ErrInvalidOriginator)
|
||||
})
|
||||
|
||||
t.Run("UnmarshalJSON_Invalid", func(t *testing.T) {
|
||||
var o Originator
|
||||
err := json.Unmarshal([]byte("\"unknown\""), &o)
|
||||
assert.Empty(t, o)
|
||||
assert.Error(t, err)
|
||||
assert.Equal(t, ErrInvalidOriginator, err)
|
||||
})
|
||||
}
|
||||
|
||||
func TestTransportErrorResponse(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user