mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.0 KiB
77 lines
2.0 KiB
package email |
|
|
|
import ( |
|
"strings" |
|
"testing" |
|
|
|
"github.com/kylelemons/godebug/pretty" |
|
) |
|
|
|
func TestNewEmailConfigFromReader(t *testing.T) { |
|
tests := []struct { |
|
json string |
|
want MailgunEmailerConfig |
|
wantErr bool |
|
wantInitErr bool // want error when calling Emailer() with no fromAddr |
|
}{ |
|
{ |
|
json: `{"type":"mailgun","id":"mg","privateAPIKey":"private","publicAPIKey":"public","domain":"example.com","from":"admin@example.com"}`, |
|
want: MailgunEmailerConfig{ |
|
PrivateAPIKey: "private", |
|
PublicAPIKey: "public", |
|
Domain: "example.com", |
|
FromAddr: "admin@example.com", |
|
}, |
|
}, |
|
{ |
|
json: `{"type":"mailgun","id":"mg","publicAPIKey":"public","domain":"example.com",""}`, |
|
wantErr: true, |
|
}, |
|
{ |
|
json: `{"type":"mailgun","id":"mg","privateAPIKey":"private","publicAPIKey":"public"}`, |
|
wantErr: true, |
|
}, |
|
{ |
|
json: `{"type":"mailgun","id":"mg","privateAPIKey":"private","domain":"example.com"}`, |
|
wantErr: true, |
|
}, |
|
{ |
|
json: `{"type":"mailgun","id":"mg","privateAPIKey":"private","publicAPIKey":"public","domain":"example.com"}`, |
|
want: MailgunEmailerConfig{ |
|
PrivateAPIKey: "private", |
|
PublicAPIKey: "public", |
|
Domain: "example.com", |
|
}, |
|
|
|
// No fromAddr email provided. Calling Emailer("") should error since fromAddr needs to be provided |
|
// in the config or as a command line argument. |
|
wantInitErr: true, |
|
}, |
|
} |
|
|
|
for i, tt := range tests { |
|
r := strings.NewReader(tt.json) |
|
ec, err := newEmailerConfigFromReader(r) |
|
if tt.wantErr { |
|
if err == nil { |
|
t.Errorf("case %d: want non-nil err.", i) |
|
} |
|
continue |
|
} |
|
if err != nil { |
|
t.Errorf("case %d: want nil err: %v", i, err) |
|
continue |
|
} |
|
if diff := pretty.Compare(tt.want, ec); diff != "" { |
|
t.Errorf("case %d: Compare(want, got): %v", i, diff) |
|
} |
|
|
|
_, err = ec.Emailer("") |
|
if err != nil && !tt.wantInitErr { |
|
t.Errorf("case %d: failed to initialize emailer: %v", i, err) |
|
} |
|
if err == nil && tt.wantInitErr { |
|
t.Errorf("case %d: expected error initializing emailer", i) |
|
} |
|
} |
|
}
|
|
|