github.com/mailgun/mailgun-go/v3@v3.6.4/domains_test.go (about) 1 package mailgun_test 2 3 import ( 4 "context" 5 "net/http" 6 "testing" 7 8 "github.com/facebookgo/ensure" 9 "github.com/mailgun/mailgun-go/v3" 10 ) 11 12 const ( 13 testDomain = "mailgun.test" 14 testKey = "api-fake-key" 15 ) 16 17 func TestListDomains(t *testing.T) { 18 mg := mailgun.NewMailgun(testDomain, testKey) 19 mg.SetAPIBase(server.URL()) 20 ctx := context.Background() 21 22 it := mg.ListDomains(nil) 23 var page []mailgun.Domain 24 for it.Next(ctx, &page) { 25 for _, d := range page { 26 t.Logf("TestListDomains: %#v\n", d) 27 } 28 } 29 t.Logf("TestListDomains: %d domains retrieved\n", it.TotalCount) 30 ensure.Nil(t, it.Err()) 31 ensure.True(t, it.TotalCount != 0) 32 } 33 34 func TestGetSingleDomain(t *testing.T) { 35 mg := mailgun.NewMailgun(testDomain, testKey) 36 mg.SetAPIBase(server.URL()) 37 ctx := context.Background() 38 39 it := mg.ListDomains(nil) 40 var page []mailgun.Domain 41 ensure.True(t, it.Next(ctx, &page)) 42 ensure.Nil(t, it.Err()) 43 44 dr, err := mg.GetDomain(ctx, page[0].Name) 45 ensure.Nil(t, err) 46 ensure.DeepEqual(t, len(dr.ReceivingDNSRecords) != 0, true) 47 ensure.DeepEqual(t, len(dr.SendingDNSRecords) != 0, true) 48 49 t.Logf("TestGetSingleDomain: %#v\n", dr) 50 for _, rxd := range dr.ReceivingDNSRecords { 51 t.Logf("TestGetSingleDomains: %#v\n", rxd) 52 } 53 for _, txd := range dr.SendingDNSRecords { 54 t.Logf("TestGetSingleDomains: %#v\n", txd) 55 } 56 } 57 58 func TestGetSingleDomainNotExist(t *testing.T) { 59 mg := mailgun.NewMailgun(testDomain, testKey) 60 mg.SetAPIBase(server.URL()) 61 62 ctx := context.Background() 63 _, err := mg.GetDomain(ctx, "unknown.domain") 64 if err == nil { 65 t.Fatal("Did not expect a domain to exist") 66 } 67 ure, ok := err.(*mailgun.UnexpectedResponseError) 68 ensure.True(t, ok) 69 ensure.DeepEqual(t, ure.Actual, http.StatusNotFound) 70 } 71 72 func TestAddDeleteDomain(t *testing.T) { 73 mg := mailgun.NewMailgun(testDomain, testKey) 74 mg.SetAPIBase(server.URL()) 75 ctx := context.Background() 76 77 // First, we need to add the domain. 78 _, err := mg.CreateDomain(ctx, "mx.mailgun.test", 79 &mailgun.CreateDomainOptions{SpamAction: mailgun.SpamActionTag, Password: "supersecret"}) 80 ensure.Nil(t, err) 81 82 // Next, we delete it. 83 ensure.Nil(t, mg.DeleteDomain(ctx, "mx.mailgun.test")) 84 } 85 86 func TestDomainConnection(t *testing.T) { 87 mg := mailgun.NewMailgun(testDomain, testKey) 88 mg.SetAPIBase(server.URL()) 89 ctx := context.Background() 90 91 info, err := mg.GetDomainConnection(ctx, testDomain) 92 ensure.Nil(t, err) 93 94 ensure.DeepEqual(t, info.RequireTLS, true) 95 ensure.DeepEqual(t, info.SkipVerification, true) 96 97 info.RequireTLS = false 98 err = mg.UpdateDomainConnection(ctx, testDomain, info) 99 ensure.Nil(t, err) 100 101 info, err = mg.GetDomainConnection(ctx, testDomain) 102 ensure.Nil(t, err) 103 ensure.DeepEqual(t, info.RequireTLS, false) 104 ensure.DeepEqual(t, info.SkipVerification, true) 105 } 106 107 func TestDomainTracking(t *testing.T) { 108 mg := mailgun.NewMailgun(testDomain, testKey) 109 mg.SetAPIBase(server.URL()) 110 ctx := context.Background() 111 112 info, err := mg.GetDomainTracking(ctx, testDomain) 113 ensure.Nil(t, err) 114 115 ensure.DeepEqual(t, info.Unsubscribe.Active, false) 116 ensure.DeepEqual(t, len(info.Unsubscribe.HTMLFooter) != 0, true) 117 ensure.DeepEqual(t, len(info.Unsubscribe.TextFooter) != 0, true) 118 ensure.DeepEqual(t, info.Click.Active, true) 119 ensure.DeepEqual(t, info.Open.Active, true) 120 121 // Click Tracking 122 err = mg.UpdateClickTracking(ctx, testDomain, "no") 123 ensure.Nil(t, err) 124 125 info, err = mg.GetDomainTracking(ctx, testDomain) 126 ensure.Nil(t, err) 127 ensure.DeepEqual(t, info.Click.Active, false) 128 129 // Open Tracking 130 err = mg.UpdateOpenTracking(ctx, testDomain, "no") 131 ensure.Nil(t, err) 132 133 info, err = mg.GetDomainTracking(ctx, testDomain) 134 ensure.Nil(t, err) 135 ensure.DeepEqual(t, info.Open.Active, false) 136 137 // Unsubscribe 138 err = mg.UpdateUnsubscribeTracking(ctx, testDomain, "yes", "<h2>Hi</h2>", "Hi") 139 ensure.Nil(t, err) 140 141 info, err = mg.GetDomainTracking(ctx, testDomain) 142 ensure.Nil(t, err) 143 ensure.DeepEqual(t, info.Unsubscribe.Active, true) 144 ensure.DeepEqual(t, info.Unsubscribe.HTMLFooter, "<h2>Hi</h2>") 145 ensure.DeepEqual(t, info.Unsubscribe.TextFooter, "Hi") 146 } 147 148 func TestDomainVerify(t *testing.T) { 149 mg := mailgun.NewMailgun(testDomain, testKey) 150 mg.SetAPIBase(server.URL()) 151 ctx := context.Background() 152 153 _, err := mg.VerifyDomain(ctx, testDomain) 154 ensure.Nil(t, err) 155 }