-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathmain_test.go
122 lines (103 loc) · 3.47 KB
/
main_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package main
import (
"context"
"fmt"
"github.com/antihax/optional"
mailslurp "github.com/mailslurp/mailslurp-client-go"
"github.com/stretchr/testify/assert"
"os"
"regexp"
"testing"
)
var apiKey = os.Getenv("API_KEY")
func getMailSlurpClient(t *testing.T) (*mailslurp.APIClient, context.Context) {
assert.NotNil(t, apiKey)
//<gen>golang_init_client
// go get github.com/mailslurp/mailslurp-client-go
// create a context with your api key
ctx := context.WithValue(context.Background(), mailslurp.ContextAPIKey, mailslurp.APIKey{Key: apiKey})
// create mailslurp client
config := mailslurp.NewConfiguration()
client := mailslurp.NewAPIClient(config)
//</gen>
return client, ctx
}
func Test_CanCreateInbox(t *testing.T) {
// create a context with your api key
client, ctx := getMailSlurpClient(t)
//<gen>golang_create_inbox
// create an inbox using the inbox controller
opts := &mailslurp.CreateInboxOpts{}
inbox, response, err := client.InboxControllerApi.CreateInbox(ctx, opts)
assert.NoError(t, err)
assert.Equal(t, response.StatusCode, 201)
assert.Contains(t, inbox.EmailAddress, "@mailslurp.net")
//</gen>
}
func Test_CanSendEmail(t *testing.T) {
// create a context with your api key
client, ctx := getMailSlurpClient(t)
// create an inbox we can send email from
inbox, _, _ := client.InboxControllerApi.CreateInbox(ctx, nil)
//<gen>golang_send_email
// send email from inbox
sendEmailOptions := mailslurp.SendEmailOptions{
To: []string{inbox.EmailAddress},
Subject: "Test email",
Body: "<h1>MailSlurp supports HTML</h1>",
IsHTML: true,
}
opts := &mailslurp.SendEmailOpts{
SendEmailOptions: optional.NewInterface(sendEmailOptions),
}
res, err := client.InboxControllerApi.SendEmail(ctx, inbox.Id, opts)
assert.NoError(t, err)
assert.Equal(t, res.StatusCode, 201)
//</gen>
}
func Test_CanReceiveEmail(t *testing.T) {
// create a context with your api key
client, ctx := getMailSlurpClient(t)
// create two inboxes for testing
inbox1, _, _ := client.InboxControllerApi.CreateInbox(ctx, nil)
inbox2, _, _ := client.InboxControllerApi.CreateInbox(ctx, nil)
// send email from inbox1 to inbox2
sendEmailOptions := mailslurp.SendEmailOptions{
To: []string{inbox2.EmailAddress},
Subject: "Hello inbox2",
Body: "Your code is: 123",
}
sendOpts := &mailslurp.SendEmailOpts{
SendEmailOptions: optional.NewInterface(sendEmailOptions),
}
res, err := client.InboxControllerApi.SendEmail(ctx, inbox1.Id, sendOpts)
assert.NoError(t, err)
assert.Equal(t, res.StatusCode, 201)
// fetch the email for inbox2
//<gen>golang_wait_for_email
waitOpts := &mailslurp.WaitForLatestEmailOpts{
InboxId: optional.NewInterface(inbox2.Id),
Timeout: optional.NewInt64(30000),
UnreadOnly: optional.NewBool(true),
}
email, _, err := client.WaitForControllerApi.WaitForLatestEmail(ctx, waitOpts)
assert.NoError(t, err)
assert.Contains(t, email.Subject, "Hello inbox2")
assert.Contains(t, email.Body, "Your code is")
// can extract the contents
r := regexp.MustCompile(`Your code is: ([0-9]{3})`)
code := r.FindStringSubmatch(email.Body)[1]
assert.Equal(t, code, "123")
//</gen>
//<gen>golang_list_and_delete
// can list emails
listOpts := &mailslurp.GetInboxEmailsPaginatedOpts{
Page: optional.NewInt32(0),
Size: optional.NewInt32(10),
Sort: optional.NewString("DESC"),
}
emails, _, err := client.InboxControllerApi.GetInboxEmailsPaginated(ctx, inbox2.Id, listOpts)
assert.NoError(t, err)
fmt.Println(emails.Content[0].Subject)
//</gen>
}