Skip to content

Commit

Permalink
mailing list tests now use the mock server
Browse files Browse the repository at this point in the history
  • Loading branch information
thrawn01 committed Jan 7, 2019
1 parent 87828f3 commit d0afd01
Show file tree
Hide file tree
Showing 11 changed files with 468 additions and 163 deletions.
25 changes: 25 additions & 0 deletions common_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package mailgun_test

import (
"crypto/rand"
"fmt"
"strings"
)

// randomString generates a string of given length, but random content.
// All content will be within the ASCII graphic character set.
// (Implementation from Even Shaw's contribution on
// http://stackoverflow.com/questions/12771930/what-is-the-fastest-way-to-generate-a-long-random-string-in-go).
func randomString(n int, prefix string) string {
const alphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
var bytes = make([]byte, n)
rand.Read(bytes)
for i, b := range bytes {
bytes[i] = alphanum[b%byte(len(alphanum))]
}
return prefix + string(bytes)
}

func randomEmail(prefix, domain string) string {
return strings.ToLower(fmt.Sprintf("%s@%s", randomString(20, prefix), domain))
}
6 changes: 3 additions & 3 deletions domains.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,9 @@ func (mg *MailgunImpl) GetDomain(domain string) (Domain, []DNSRecord, []DNSRecor
r := newHTTPRequest(generatePublicApiUrl(mg, domainsEndpoint) + "/" + domain)
r.setClient(mg.Client())
r.setBasicAuth(basicAuthUser, mg.APIKey())
var envelope domainResponse
err := getResponseFromJSON(r, &envelope)
return envelope.Domain, envelope.ReceivingDNSRecords, envelope.SendingDNSRecords, err
var resp domainResponse
err := getResponseFromJSON(r, &resp)
return resp.Domain, resp.ReceivingDNSRecords, resp.SendingDNSRecords, err
}

// CreateDomain instructs Mailgun to create a new domain for your account.
Expand Down
16 changes: 8 additions & 8 deletions domains_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
)

const (
sampleDomain = "samples.mailgun.org"
testDomain = "mailgun.test"
)

func TestGetDomains(t *testing.T) {
Expand Down Expand Up @@ -53,7 +53,7 @@ func TestGetSingleDomainNotExist(t *testing.T) {
mg, err := mailgun.NewMailgunFromEnv()
mg.SetAPIBase(server.URL())
ensure.Nil(t, err)
_, _, _, err = mg.GetDomain("mailgun.test")
_, _, _, err = mg.GetDomain("unknown.domain")
if err == nil {
t.Fatal("Did not expect a domain to exist")
}
Expand All @@ -68,27 +68,27 @@ func TestAddDeleteDomain(t *testing.T) {
ensure.Nil(t, err)

// First, we need to add the domain.
ensure.Nil(t, mg.CreateDomain("mailgun.test", "supersecret", mailgun.Tag, false))
ensure.Nil(t, mg.CreateDomain("mx.mailgun.test", "supersecret", mailgun.Tag, false))
// Next, we delete it.
ensure.Nil(t, mg.DeleteDomain("mailgun.test"))
ensure.Nil(t, mg.DeleteDomain("mx.mailgun.test"))
}

func TestDomainConnection(t *testing.T) {
mg, err := mailgun.NewMailgunFromEnv()
mg.SetAPIBase(server.URL())
ensure.Nil(t, err)

info, err := mg.GetDomainConnection(sampleDomain)
info, err := mg.GetDomainConnection(testDomain)
ensure.Nil(t, err)

ensure.DeepEqual(t, info.RequireTLS, true)
ensure.DeepEqual(t, info.SkipVerification, true)

info.RequireTLS = false
err = mg.UpdateDomainConnection(sampleDomain, info)
err = mg.UpdateDomainConnection(testDomain, info)
ensure.Nil(t, err)

info, err = mg.GetDomainConnection(sampleDomain)
info, err = mg.GetDomainConnection(testDomain)
ensure.Nil(t, err)
ensure.DeepEqual(t, info.RequireTLS, false)
ensure.DeepEqual(t, info.SkipVerification, true)
Expand All @@ -99,7 +99,7 @@ func TestDomainTracking(t *testing.T) {
mg.SetAPIBase(server.URL())
ensure.Nil(t, err)

info, err := mg.GetDomainTracking(sampleDomain)
info, err := mg.GetDomainTracking(testDomain)
ensure.Nil(t, err)

ensure.DeepEqual(t, info.Unsubscribe.Active, false)
Expand Down
2 changes: 1 addition & 1 deletion limits_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ func TestLimits(t *testing.T) {
mg.SetAPIBase(server.URL())
ensure.Nil(t, err)

limits, err := mg.GetTagLimits(sampleDomain)
limits, err := mg.GetTagLimits(testDomain)
ensure.Nil(t, err)

ensure.DeepEqual(t, limits.Limit, 50000)
Expand Down
2 changes: 1 addition & 1 deletion mailgun.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ type Mailgun interface {
UpdateMailingList(string, MailingList) (MailingList, error)

ListMembers(address string, opts *ListOptions) *MemberListIterator
GetMemberByAddress(MemberAddr, listAddr string) (Member, error)
GetMember(MemberAddr, listAddr string) (Member, error)
CreateMember(merge bool, addr string, prototype Member) error
CreateMemberList(subscribed *bool, addr string, newMembers []interface{}) error
UpdateMember(Member, list string, prototype Member) (Member, error)
Expand Down
26 changes: 14 additions & 12 deletions mailing_lists.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,14 @@ type MailingList struct {
}

type listsResponse struct {
Lists []MailingList `json:"items"`
Items []MailingList `json:"items"`
Paging Paging `json:"paging"`
}

type mailingListResponse struct {
MailingList MailingList `json:"member"`
}

type ListsIterator struct {
listsResponse
mg Mailgun
Expand Down Expand Up @@ -86,8 +90,8 @@ func (li *ListsIterator) Next(items *[]MailingList) bool {
if li.err != nil {
return false
}
*items = li.Lists
if len(li.Lists) == 0 {
*items = li.Items
if len(li.Items) == 0 {
return false
}
return true
Expand All @@ -104,7 +108,7 @@ func (li *ListsIterator) First(items *[]MailingList) bool {
if li.err != nil {
return false
}
*items = li.Lists
*items = li.Items
return true
}

Expand All @@ -120,7 +124,7 @@ func (li *ListsIterator) Last(items *[]MailingList) bool {
if li.err != nil {
return false
}
*items = li.Lists
*items = li.Items
return true
}

Expand All @@ -138,8 +142,8 @@ func (li *ListsIterator) Previous(items *[]MailingList) bool {
if li.err != nil {
return false
}
*items = li.Lists
if len(li.Lists) == 0 {
*items = li.Items
if len(li.Items) == 0 {
return false
}
return true
Expand Down Expand Up @@ -207,11 +211,9 @@ func (mg *MailgunImpl) GetMailingList(addr string) (MailingList, error) {
return MailingList{}, err
}

var envelope struct {
MailingList `json:"list"`
}
err = response.parseFromJSON(&envelope)
return envelope.MailingList, err
var resp mailingListResponse
err = response.parseFromJSON(&resp)
return resp.MailingList, err
}

// UpdateList allows you to change various attributes of a list.
Expand Down
Loading

0 comments on commit d0afd01

Please sign in to comment.