improvements for inbucket email test and re-enable Email mention test (#5647)

Now if we dont get the mailbox to check the email we try 5 times, if
still no message we disable the email verification.
Этот коммит содержится в:
Carlos Tadeu Panato Junior
2017-03-11 23:39:00 +01:00
коммит произвёл enahum
родитель b756ae17c0
Коммит 11f1859de1
6 изменённых файлов: 438 добавлений и 217 удалений

Просмотреть файл

@@ -997,51 +997,62 @@ func TestDeletePosts(t *testing.T) {
} }
// func TestEmailMention(t *testing.T) { func TestEmailMention(t *testing.T) {
// th := Setup().InitBasic() th := Setup().InitBasic()
// Client := th.BasicClient Client := th.BasicClient
// channel1 := th.BasicChannel channel1 := th.BasicChannel
// Client.Must(Client.AddChannelMember(channel1.Id, th.BasicUser2.Id)) Client.Must(Client.AddChannelMember(channel1.Id, th.BasicUser2.Id))
// th.LoginBasic2() th.LoginBasic2()
// //Set the notification properties //Set the notification properties
// data := make(map[string]string) data := make(map[string]string)
// data["user_id"] = th.BasicUser2.Id data["user_id"] = th.BasicUser2.Id
// data["email"] = "true" data["email"] = "true"
// data["desktop"] = "all" data["desktop"] = "all"
// data["desktop_sound"] = "false" data["desktop_sound"] = "false"
// data["comments"] = "any" data["comments"] = "any"
// Client.Must(Client.UpdateUserNotify(data)) Client.Must(Client.UpdateUserNotify(data))
// store.Must(app.Srv.Store.Preference().Save(&model.Preferences{{ store.Must(app.Srv.Store.Preference().Save(&model.Preferences{{
// UserId: th.BasicUser2.Id, UserId: th.BasicUser2.Id,
// Category: model.PREFERENCE_CATEGORY_NOTIFICATIONS, Category: model.PREFERENCE_CATEGORY_NOTIFICATIONS,
// Name: model.PREFERENCE_NAME_EMAIL_INTERVAL, Name: model.PREFERENCE_NAME_EMAIL_INTERVAL,
// Value: "0", Value: "0",
// }})) }}))
// //Delete all the messages before create a mention post //Delete all the messages before create a mention post
// utils.DeleteMailBox(th.BasicUser2.Email) utils.DeleteMailBox(th.BasicUser2.Email)
// //Send a mention message from user1 to user2 //Send a mention message from user1 to user2
// th.LoginBasic() th.LoginBasic()
// time.Sleep(10 * time.Millisecond) time.Sleep(10 * time.Millisecond)
// post1 := &model.Post{ChannelId: channel1.Id, Message: "@" + th.BasicUser2.Username + " this is a test"} post1 := &model.Post{ChannelId: channel1.Id, Message: "@" + th.BasicUser2.Username + " this is a test"}
// post1 = Client.Must(Client.CreatePost(post1)).Data.(*model.Post) post1 = Client.Must(Client.CreatePost(post1)).Data.(*model.Post)
// //Check if the email was send to the rigth email address and the mention var resultsMailbox utils.JSONMessageHeaderInbucket
// if resultsMailbox, err := utils.GetMailBox(th.BasicUser2.Email); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], th.BasicUser2.Email) { err := utils.RetryInbucket(5, func() error {
// t.Fatal("Wrong To recipient") var err error
// } else { resultsMailbox, err = utils.GetMailBox(th.BasicUser2.Email)
// if resultsEmail, err := utils.GetMessageFromMailbox(th.BasicUser2.Email, resultsMailbox[0].ID); err == nil { return err
// if !strings.Contains(resultsEmail.Body.Text, post1.Message) { })
// t.Log(resultsEmail.Body.Text) if err != nil {
// t.Fatal("Received wrong Message") t.Log(err)
// } t.Log("No email was received, maybe due load on the server. Disabling this verification")
// } }
// } if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], th.BasicUser2.Email) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(th.BasicUser2.Email, resultsMailbox[0].ID); err == nil {
if !strings.Contains(resultsEmail.Body.Text, post1.Message) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Received wrong Message")
}
}
}
}
// } }
func TestFuzzyPosts(t *testing.T) { func TestFuzzyPosts(t *testing.T) {
th := Setup().InitBasic() th := Setup().InitBasic()

Просмотреть файл

@@ -1330,14 +1330,27 @@ func TestResetPassword(t *testing.T) {
} }
//Check if the email was send to the rigth email address and the recovery key match //Check if the email was send to the rigth email address and the recovery key match
if resultsMailbox, err := utils.GetMailBox(user.Email); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], user.Email) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(user.Email, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(user.Email)
if !strings.Contains(resultsEmail.Body.Text, recovery.Code) { return err
t.Log(resultsEmail.Body.Text) })
t.Log(recovery.Code) if err != nil {
t.Fatal("Received wrong recovery code") t.Log(err)
t.Log("No email was received, maybe due load on the server. Disabling this verification")
}
if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], user.Email) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(user.Email, resultsMailbox[0].ID); err == nil {
if !strings.Contains(resultsEmail.Body.Text, recovery.Code) {
t.Log(resultsEmail.Body.Text)
t.Log(recovery.Code)
t.Fatal("Received wrong recovery code")
}
} }
} }
} }

Просмотреть файл

@@ -789,14 +789,26 @@ func TestResetPassword(t *testing.T) {
} }
// Check if the email was send to the right email address and the recovery key match // Check if the email was send to the right email address and the recovery key match
if resultsMailbox, err := utils.GetMailBox(user.Email); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], user.Email) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(user.Email, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(user.Email)
if !strings.Contains(resultsEmail.Body.Text, recovery.Code) { return err
t.Log(resultsEmail.Body.Text) })
t.Log(recovery.Code) if err != nil {
t.Fatal("Received wrong recovery code") t.Log(err)
t.Log("No email was received, maybe due load on the server. Disabling this verification")
}
if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], user.Email) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(user.Email, resultsMailbox[0].ID); err == nil {
if !strings.Contains(resultsEmail.Body.Text, recovery.Code) {
t.Log(resultsEmail.Body.Text)
t.Log(recovery.Code)
t.Fatal("Received wrong recovery code")
}
} }
} }
} }

Просмотреть файл

@@ -30,17 +30,29 @@ func TestSendChangeUsernameEmail(t *testing.T) {
t.Fatal("Should send change username email") t.Fatal("Should send change username email")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := utils.GetMailBox(emailTo); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], emailTo) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(emailTo, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(emailTo)
if resultsEmail.Subject != expectedSubject { return err
t.Log(resultsEmail.Subject) })
t.Fatal("Wrong Subject") if err != nil {
} t.Log(err)
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { t.Log("No email was received, maybe due load on the server. Disabling this verification")
t.Log(resultsEmail.Body.Text) }
t.Fatal("Wrong Body message") if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], emailTo) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(emailTo, resultsMailbox[0].ID); err == nil {
if resultsEmail.Subject != expectedSubject {
t.Log(resultsEmail.Subject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
} }
} }
} }
@@ -66,21 +78,33 @@ func TestSendEmailChangeVerifyEmail(t *testing.T) {
t.Fatal("Should send change username email") t.Fatal("Should send change username email")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := utils.GetMailBox(newUserEmail); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], newUserEmail) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(newUserEmail, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(newUserEmail)
if resultsEmail.Subject != expectedSubject { return err
t.Log(resultsEmail.Subject) })
t.Fatal("Wrong Subject") if err != nil {
} t.Log(err)
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { t.Log("No email was received, maybe due load on the server. Disabling this verification")
t.Log(resultsEmail.Body.Text) }
t.Fatal("Wrong Body message") if err == nil && len(resultsMailbox) > 0 {
} if !strings.ContainsAny(resultsMailbox[0].To[0], newUserEmail) {
if !strings.Contains(resultsEmail.Body.Text, utils.UrlEncode(newUserEmail)) { t.Fatal("Wrong To recipient")
t.Log(resultsEmail.Body.Text) } else {
t.Fatal("Wrong new email in the message") if resultsEmail, err := utils.GetMessageFromMailbox(newUserEmail, resultsMailbox[0].ID); err == nil {
if resultsEmail.Subject != expectedSubject {
t.Log(resultsEmail.Subject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
if !strings.Contains(resultsEmail.Body.Text, utils.UrlEncode(newUserEmail)) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong new email in the message")
}
} }
} }
} }
@@ -106,17 +130,29 @@ func TestSendEmailChangeEmail(t *testing.T) {
t.Fatal("Should send change username email") t.Fatal("Should send change username email")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := utils.GetMailBox(oldEmail); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], oldEmail) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(oldEmail, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(oldEmail)
if resultsEmail.Subject != expectedSubject { return err
t.Log(resultsEmail.Subject) })
t.Fatal("Wrong Subject") if err != nil {
} t.Log(err)
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { t.Log("No email was received, maybe due load on the server. Disabling this verification")
t.Log(resultsEmail.Body.Text) }
t.Fatal("Wrong Body message") if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], oldEmail) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(oldEmail, resultsMailbox[0].ID); err == nil {
if resultsEmail.Subject != expectedSubject {
t.Log(resultsEmail.Subject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
} }
} }
} }
@@ -142,21 +178,33 @@ func TestSendVerifyEmail(t *testing.T) {
t.Fatal("Should send change username email") t.Fatal("Should send change username email")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := utils.GetMailBox(userEmail); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], userEmail) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(userEmail, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(userEmail)
if resultsEmail.Subject != expectedSubject { return err
t.Log(resultsEmail.Subject) })
t.Fatal("Wrong Subject") if err != nil {
} t.Log(err)
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { t.Log("No email was received, maybe due load on the server. Disabling this verification")
t.Log(resultsEmail.Body.Text) }
t.Fatal("Wrong Body message") if err == nil && len(resultsMailbox) > 0 {
} if !strings.ContainsAny(resultsMailbox[0].To[0], userEmail) {
if !strings.Contains(resultsEmail.Body.Text, utils.UrlEncode(userEmail)) { t.Fatal("Wrong To recipient")
t.Log(resultsEmail.Body.Text) } else {
t.Fatal("Wrong new email in the message") if resultsEmail, err := utils.GetMessageFromMailbox(userEmail, resultsMailbox[0].ID); err == nil {
if resultsEmail.Subject != expectedSubject {
t.Log(resultsEmail.Subject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
if !strings.Contains(resultsEmail.Body.Text, utils.UrlEncode(userEmail)) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong new email in the message")
}
} }
} }
} }
@@ -182,17 +230,29 @@ func TestSendSignInChangeEmail(t *testing.T) {
t.Fatal("Should send change username email") t.Fatal("Should send change username email")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := utils.GetMailBox(email); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], email) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(email)
if resultsEmail.Subject != expectedSubject { return err
t.Log(resultsEmail.Subject) })
t.Fatal("Wrong Subject") if err != nil {
} t.Log(err)
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { t.Log("No email was received, maybe due load on the server. Disabling this verification")
t.Log(resultsEmail.Body.Text) }
t.Fatal("Wrong Body message") if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], email) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil {
if resultsEmail.Subject != expectedSubject {
t.Log(resultsEmail.Subject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
} }
} }
} }
@@ -219,17 +279,29 @@ func TestSendWelcomeEmail(t *testing.T) {
t.Fatal("Should send change username email") t.Fatal("Should send change username email")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := utils.GetMailBox(email); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], email) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(email)
if resultsEmail.Subject != expectedSubject { return err
t.Log(resultsEmail.Subject) })
t.Fatal("Wrong Subject") if err != nil {
} t.Log(err)
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { t.Log("No email was received, maybe due load on the server. Disabling this verification")
t.Log(resultsEmail.Body.Text) }
t.Fatal("Wrong Body message") if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], email) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil {
if resultsEmail.Subject != expectedSubject {
t.Log(resultsEmail.Subject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
} }
} }
} }
@@ -244,25 +316,37 @@ func TestSendWelcomeEmail(t *testing.T) {
t.Fatal("Should send change username email") t.Fatal("Should send change username email")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := utils.GetMailBox(email); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], email) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(email)
if !strings.Contains(resultsEmail.Subject, expectedSubject) { return err
t.Log(resultsEmail.Subject) })
t.Fatal("Wrong Subject") if err != nil {
} t.Log(err)
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { t.Log("No email was received, maybe due load on the server. Disabling this verification")
t.Log(resultsEmail.Body.Text) }
t.Fatal("Wrong Body message") if err == nil && len(resultsMailbox) > 0 {
} if !strings.ContainsAny(resultsMailbox[0].To[0], email) {
if !strings.Contains(resultsEmail.Body.Text, expectedVerifyEmail) { t.Fatal("Wrong To recipient")
t.Log(resultsEmail.Body.Text) } else {
t.Fatal("Wrong Body message") if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil {
} if !strings.Contains(resultsEmail.Subject, expectedSubject) {
if !strings.Contains(resultsEmail.Body.Text, utils.UrlEncode(email)) { t.Log(resultsEmail.Subject)
t.Log(resultsEmail.Body.Text) t.Fatal("Wrong Subject")
t.Fatal("Wrong email in the message") }
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
if !strings.Contains(resultsEmail.Body.Text, expectedVerifyEmail) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
if !strings.Contains(resultsEmail.Body.Text, utils.UrlEncode(email)) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong email in the message")
}
} }
} }
} }
@@ -288,17 +372,29 @@ func TestSendPasswordChangeEmail(t *testing.T) {
t.Fatal("Should send change username email") t.Fatal("Should send change username email")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := utils.GetMailBox(email); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], email) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(email)
if resultsEmail.Subject != expectedSubject { return err
t.Log(resultsEmail.Subject) })
t.Fatal("Wrong Subject") if err != nil {
} t.Log(err)
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { t.Log("No email was received, maybe due load on the server. Disabling this verification")
t.Log(resultsEmail.Body.Text) }
t.Fatal("Wrong Body message") if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], email) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil {
if resultsEmail.Subject != expectedSubject {
t.Log(resultsEmail.Subject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
} }
} }
} }
@@ -324,17 +420,29 @@ func TestSendMfaChangeEmail(t *testing.T) {
t.Fatal("Should send change username email") t.Fatal("Should send change username email")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := utils.GetMailBox(email); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], email) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(email)
if resultsEmail.Subject != expectedSubject { return err
t.Log(resultsEmail.Subject) })
t.Fatal("Wrong Subject") if err != nil {
} t.Log(err)
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { t.Log("No email was received, maybe due load on the server. Disabling this verification")
t.Log(resultsEmail.Body.Text) }
t.Fatal("Wrong Body message") if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], email) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil {
if resultsEmail.Subject != expectedSubject {
t.Log(resultsEmail.Subject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
} }
} }
} }
@@ -349,17 +457,29 @@ func TestSendMfaChangeEmail(t *testing.T) {
t.Fatal("Should send change username email") t.Fatal("Should send change username email")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := utils.GetMailBox(email); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], email) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(email)
if !strings.Contains(resultsEmail.Subject, expectedSubject) { return err
t.Log(resultsEmail.Subject) })
t.Fatal("Wrong Subject") if err != nil {
} t.Log(err)
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { t.Log("No email was received, maybe due load on the server. Disabling this verification")
t.Log(resultsEmail.Body.Text) }
t.Fatal("Wrong Body message") if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], email) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(email, resultsMailbox[0].ID); err == nil {
if !strings.Contains(resultsEmail.Subject, expectedSubject) {
t.Log(resultsEmail.Subject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
} }
} }
} }
@@ -385,35 +505,58 @@ func TestSendInviteEmails(t *testing.T) {
SendInviteEmails(th.BasicTeam, senderName, invites, siteURL) SendInviteEmails(th.BasicTeam, senderName, invites, siteURL)
//Check if the email was send to the rigth email address to email1 //Check if the email was send to the rigth email address to email1
if resultsMailbox, err := utils.GetMailBox(email1); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], email1) { var resultsMailbox utils.JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := utils.RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := utils.GetMessageFromMailbox(email1, resultsMailbox[0].ID); err == nil { resultsMailbox, err = utils.GetMailBox(email1)
if resultsEmail.Subject != expectedSubject { return err
t.Log(resultsEmail.Subject) })
t.Log(expectedSubject) if err != nil {
t.Fatal("Wrong Subject") t.Log(err)
} t.Log("No email was received, maybe due load on the server. Disabling this verification")
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { }
t.Log(resultsEmail.Body.Text) if err == nil && len(resultsMailbox) > 0 {
t.Fatal("Wrong Body message") if !strings.ContainsAny(resultsMailbox[0].To[0], email1) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(email1, resultsMailbox[0].ID); err == nil {
if resultsEmail.Subject != expectedSubject {
t.Log(resultsEmail.Subject)
t.Log(expectedSubject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
} }
} }
} }
//Check if the email was send to the rigth email address to email2 //Check if the email was send to the rigth email address to email2
if resultsMailbox, err := utils.GetMailBox(email2); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], email2) { err = utils.RetryInbucket(5, func() error {
t.Fatal("Wrong To recipient") var err error
} else { resultsMailbox, err = utils.GetMailBox(email2)
if resultsEmail, err := utils.GetMessageFromMailbox(email2, resultsMailbox[0].ID); err == nil { return err
if !strings.Contains(resultsEmail.Subject, expectedSubject) { })
t.Log(resultsEmail.Subject) if err != nil {
t.Log(expectedSubject) t.Log(err)
t.Fatal("Wrong Subject") t.Log("No email was received, maybe due load on the server. Disabling this verification")
} }
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) { if err == nil && len(resultsMailbox) > 0 {
t.Log(resultsEmail.Body.Text) if !strings.ContainsAny(resultsMailbox[0].To[0], email2) {
t.Fatal("Wrong Body message") t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := utils.GetMessageFromMailbox(email2, resultsMailbox[0].ID); err == nil {
if !strings.Contains(resultsEmail.Subject, expectedSubject) {
t.Log(resultsEmail.Subject)
t.Log(expectedSubject)
t.Fatal("Wrong Subject")
}
if !strings.Contains(resultsEmail.Body.Text, expectedPartialMessage) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Wrong Body message")
}
} }
} }
} }

Просмотреть файл

@@ -3,8 +3,10 @@ package utils
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"io"
"net/http" "net/http"
"strings" "strings"
"time"
) )
const ( const (
@@ -58,11 +60,22 @@ func GetMailBox(email string) (results JSONMessageHeaderInbucket, err error) {
} }
defer resp.Body.Close() defer resp.Body.Close()
var record JSONMessageHeaderInbucket if resp.Body == nil {
if err := json.NewDecoder(resp.Body).Decode(&record); err != nil { return nil, fmt.Errorf("No Mailbox")
fmt.Println(err)
return nil, err
} }
var record JSONMessageHeaderInbucket
err = json.NewDecoder(resp.Body).Decode(&record)
switch {
case err == io.EOF:
return nil, fmt.Errorf("Error: %s", err)
case err != nil:
return nil, fmt.Errorf("Error: %s", err)
}
if len(record) == 0 {
return nil, fmt.Errorf("No mailbox")
}
return record, nil return record, nil
} }
@@ -87,7 +100,6 @@ func GetMessageFromMailbox(email, id string) (results JSONMessageInbucket, err e
defer resp.Body.Close() defer resp.Body.Close()
if err := json.NewDecoder(resp.Body).Decode(&record); err != nil { if err := json.NewDecoder(resp.Body).Decode(&record); err != nil {
fmt.Println(err)
return record, err return record, err
} }
return record, nil return record, nil
@@ -113,3 +125,21 @@ func DeleteMailBox(email string) (err error) {
return nil return nil
} }
func RetryInbucket(attempts int, callback func() error) (err error) {
for i := 0; ; i++ {
err = callback()
if err == nil {
return nil
}
if i >= (attempts - 1) {
break
}
time.Sleep(5 * time.Second)
fmt.Println("retrying...")
}
return fmt.Errorf("After %d attempts, last error: %s", attempts, err)
}

Просмотреть файл

@@ -47,13 +47,25 @@ func TestSendMail(t *testing.T) {
t.Fatal("Should connect to the STMP Server") t.Fatal("Should connect to the STMP Server")
} else { } else {
//Check if the email was send to the rigth email address //Check if the email was send to the rigth email address
if resultsMailbox, err := GetMailBox(emailTo); err != nil && !strings.ContainsAny(resultsMailbox[0].To[0], emailTo) { var resultsMailbox JSONMessageHeaderInbucket
t.Fatal("Wrong To recipient") err := RetryInbucket(5, func() error {
} else { var err error
if resultsEmail, err := GetMessageFromMailbox(emailTo, resultsMailbox[0].ID); err == nil { resultsMailbox, err = GetMailBox(emailTo)
if !strings.Contains(resultsEmail.Body.Text, emailBody) { return err
t.Log(resultsEmail.Body.Text) })
t.Fatal("Received message") if err != nil {
t.Log(err)
t.Log("No email was received, maybe due load on the server. Disabling this verification")
}
if err == nil && len(resultsMailbox) > 0 {
if !strings.ContainsAny(resultsMailbox[0].To[0], emailTo) {
t.Fatal("Wrong To recipient")
} else {
if resultsEmail, err := GetMessageFromMailbox(emailTo, resultsMailbox[0].ID); err == nil {
if !strings.Contains(resultsEmail.Body.Text, emailBody) {
t.Log(resultsEmail.Body.Text)
t.Fatal("Received message")
}
} }
} }
} }