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  }