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  }