diff --git a/email_validation.go b/email_validation.go index 1f6decad..da79779d 100644 --- a/email_validation.go +++ b/email_validation.go @@ -36,7 +36,7 @@ type EmailVerificationParts struct { // Reason contains error's description. type EmailVerification struct { IsValid bool `json:"is_valid"` - MailboxVerification bool `json:"mailbox_verification,string"` + MailboxVerification string `json:"mailbox_verification"` Parts EmailVerificationParts `json:"parts"` Address string `json:"address"` DidYouMean string `json:"did_you_mean"` diff --git a/email_validation_test.go b/email_validation_test.go index 1e402c44..89643f94 100644 --- a/email_validation_test.go +++ b/email_validation_test.go @@ -3,6 +3,8 @@ package mailgun import ( "testing" + "encoding/json" + "github.com/facebookgo/ensure" ) @@ -15,7 +17,7 @@ func TestEmailValidation(t *testing.T) { ensure.Nil(t, err) ensure.True(t, ev.IsValid) - ensure.True(t, ev.MailboxVerification) + ensure.DeepEqual(t, ev.MailboxVerification, "") ensure.False(t, ev.IsDisposableAddress) ensure.False(t, ev.IsRoleAddress) ensure.True(t, ev.Parts.DisplayName == "") @@ -43,3 +45,33 @@ func TestParseAddresses(t *testing.T) { } ensure.True(t, len(unparsableAddresses) == 1) } + +func TestUnmarshallResponse(t *testing.T) { + payload := []byte(`{ + "address": "some_email@aol.com", + "did_you_mean": null, + "is_disposable_address": false, + "is_role_address": false, + "is_valid": true, + "mailbox_verification": "unknown", + "parts": + { + "display_name": null, + "domain": "aol.com", + "local_part": "some_email" + }, + "reason": null + }`) + var ev EmailVerification + err := json.Unmarshal(payload, &ev) + ensure.Nil(t, err) + + ensure.True(t, ev.IsValid) + ensure.DeepEqual(t, ev.MailboxVerification, "unknown") + ensure.False(t, ev.IsDisposableAddress) + ensure.False(t, ev.IsRoleAddress) + ensure.True(t, ev.Parts.DisplayName == "") + ensure.DeepEqual(t, ev.Parts.LocalPart, "some_email") + ensure.DeepEqual(t, ev.Parts.Domain, "aol.com") + ensure.True(t, ev.Reason == "") +}