github.com/mailgun/mailgun-go/v3@v3.6.4/email_validation_test.go (about) 1 package mailgun_test 2 3 import ( 4 "context" 5 "encoding/json" 6 "testing" 7 8 "github.com/facebookgo/ensure" 9 "github.com/mailgun/mailgun-go/v3" 10 ) 11 12 func TestEmailValidation(t *testing.T) { 13 v := mailgun.NewEmailValidator(testKey) 14 v.SetAPIBase(server.URL()) 15 ctx := context.Background() 16 17 ev, err := v.ValidateEmail(ctx, "foo@mailgun.com", false) 18 ensure.Nil(t, err) 19 20 ensure.True(t, ev.IsValid) 21 ensure.DeepEqual(t, ev.MailboxVerification, "") 22 ensure.False(t, ev.IsDisposableAddress) 23 ensure.False(t, ev.IsRoleAddress) 24 ensure.True(t, ev.Parts.DisplayName == "") 25 ensure.DeepEqual(t, ev.Parts.LocalPart, "foo") 26 ensure.DeepEqual(t, ev.Parts.Domain, "mailgun.com") 27 ensure.True(t, ev.Reason == "") 28 } 29 30 func TestParseAddresses(t *testing.T) { 31 v := mailgun.NewEmailValidator(testKey) 32 v.SetAPIBase(server.URL()) 33 ctx := context.Background() 34 35 addressesThatParsed, unparsableAddresses, err := v.ParseAddresses(ctx, 36 "Alice <alice@example.com>", 37 "bob@example.com", 38 "example.com") 39 ensure.Nil(t, err) 40 hittest := map[string]bool{ 41 "Alice <alice@example.com>": true, 42 "bob@example.com": true, 43 } 44 for _, a := range addressesThatParsed { 45 ensure.True(t, hittest[a]) 46 } 47 ensure.True(t, len(unparsableAddresses) == 1) 48 } 49 50 func TestUnmarshallResponse(t *testing.T) { 51 payload := []byte(`{ 52 "address": "some_email@aol.com", 53 "did_you_mean": null, 54 "is_disposable_address": false, 55 "is_role_address": false, 56 "is_valid": true, 57 "mailbox_verification": "unknown", 58 "parts": 59 { 60 "display_name": null, 61 "domain": "aol.com", 62 "local_part": "some_email" 63 }, 64 "reason": null 65 }`) 66 var ev mailgun.EmailVerification 67 err := json.Unmarshal(payload, &ev) 68 ensure.Nil(t, err) 69 70 ensure.True(t, ev.IsValid) 71 ensure.DeepEqual(t, ev.MailboxVerification, "unknown") 72 ensure.False(t, ev.IsDisposableAddress) 73 ensure.False(t, ev.IsRoleAddress) 74 ensure.True(t, ev.Parts.DisplayName == "") 75 ensure.DeepEqual(t, ev.Parts.LocalPart, "some_email") 76 ensure.DeepEqual(t, ev.Parts.Domain, "aol.com") 77 ensure.True(t, ev.Reason == "") 78 }