summaryrefslogtreecommitdiffstats
path: root/utils/inbucket.go
diff options
context:
space:
mode:
authorCarlos Tadeu Panato Junior <ctadeu@gmail.com>2017-03-11 23:39:00 +0100
committerenahum <nahumhbl@gmail.com>2017-03-11 19:39:00 -0300
commit11f1859de12be22726a93bb0fd201f3d692022a0 (patch)
treeffec8cda431c9682dcad870868fe938861a2dc35 /utils/inbucket.go
parentb756ae17c08cebc4a6a0baefc2edf5c4f1cf42cb (diff)
downloadchat-11f1859de12be22726a93bb0fd201f3d692022a0.tar.gz
chat-11f1859de12be22726a93bb0fd201f3d692022a0.tar.bz2
chat-11f1859de12be22726a93bb0fd201f3d692022a0.zip
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.
Diffstat (limited to 'utils/inbucket.go')
-rw-r--r--utils/inbucket.go38
1 files changed, 34 insertions, 4 deletions
diff --git a/utils/inbucket.go b/utils/inbucket.go
index 1c747cee8..f80d16efd 100644
--- a/utils/inbucket.go
+++ b/utils/inbucket.go
@@ -3,8 +3,10 @@ package utils
import (
"encoding/json"
"fmt"
+ "io"
"net/http"
"strings"
+ "time"
)
const (
@@ -58,11 +60,22 @@ func GetMailBox(email string) (results JSONMessageHeaderInbucket, err error) {
}
defer resp.Body.Close()
+ if resp.Body == nil {
+ return nil, fmt.Errorf("No Mailbox")
+ }
+
var record JSONMessageHeaderInbucket
- if err := json.NewDecoder(resp.Body).Decode(&record); err != nil {
- fmt.Println(err)
- return nil, err
+ 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
}
@@ -87,7 +100,6 @@ func GetMessageFromMailbox(email, id string) (results JSONMessageInbucket, err e
defer resp.Body.Close()
if err := json.NewDecoder(resp.Body).Decode(&record); err != nil {
- fmt.Println(err)
return record, err
}
return record, nil
@@ -113,3 +125,21 @@ func DeleteMailBox(email string) (err error) {
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)
+}