@@ -125,11 +125,76 @@ func TestAzureProviderGetEmailAddress(t *testing.T) {
125 b := testAzureBackend(`{ "mail": "user@windows.net" }`)
125 b := testAzureBackend(`{ "mail": "user@windows.net" }`)
126 defer b.Close()
126 defer b.Close()
128− b_url, _ := url.Parse(b.URL)
128+ bURL, _ := url.Parse(b.URL)
129− p := testAzureProvider(b_url.Host)
129+ p := testAzureProvider(bURL.Host)
131 session := &SessionState{AccessToken: "imaginary_access_token"}
131 session := &SessionState{AccessToken: "imaginary_access_token"}
132 email, err := p.GetEmailAddress(session)
132 email, err := p.GetEmailAddress(session)
133 assert.Equal(t, nil, err)
133 assert.Equal(t, nil, err)
134 assert.Equal(t, "user@windows.net", email)
134 assert.Equal(t, "user@windows.net", email)
137+func TestAzureProviderGetEmailAddressMailNull(t *testing.T) {
138+ b := testAzureBackend(`{ "mail": null, "otherMails": ["user@windows.net", "altuser@windows.net"] }`)
141+ bURL, _ := url.Parse(b.URL)
142+ p := testAzureProvider(bURL.Host)
144+ session := &SessionState{AccessToken: "imaginary_access_token"}
145+ email, err := p.GetEmailAddress(session)
146+ assert.Equal(t, nil, err)
147+ assert.Equal(t, "user@windows.net", email)
150+func TestAzureProviderGetEmailAddressGetUserPrincipalName(t *testing.T) {
151+ b := testAzureBackend(`{ "mail": null, "otherMails": [], "userPrincipalName": "user@windows.net" }`)
154+ bURL, _ := url.Parse(b.URL)
155+ p := testAzureProvider(bURL.Host)
157+ session := &SessionState{AccessToken: "imaginary_access_token"}
158+ email, err := p.GetEmailAddress(session)
159+ assert.Equal(t, nil, err)
160+ assert.Equal(t, "user@windows.net", email)
163+func TestAzureProviderGetEmailAddressFailToGetEmailAddress(t *testing.T) {
164+ b := testAzureBackend(`{ "mail": null, "otherMails": [], "userPrincipalName": null }`)
167+ bURL, _ := url.Parse(b.URL)
168+ p := testAzureProvider(bURL.Host)
170+ session := &SessionState{AccessToken: "imaginary_access_token"}
171+ email, err := p.GetEmailAddress(session)
172+ assert.Equal(t, "type assertion to string failed", err.Error())
173+ assert.Equal(t, "", email)
176+func TestAzureProviderGetEmailAddressEmptyUserPrincipalName(t *testing.T) {
177+ b := testAzureBackend(`{ "mail": null, "otherMails": [], "userPrincipalName": "" }`)
180+ bURL, _ := url.Parse(b.URL)
181+ p := testAzureProvider(bURL.Host)
183+ session := &SessionState{AccessToken: "imaginary_access_token"}
184+ email, err := p.GetEmailAddress(session)
185+ assert.Equal(t, nil, err)
186+ assert.Equal(t, "", email)
189+func TestAzureProviderGetEmailAddressIncorrectOtherMails(t *testing.T) {
190+ b := testAzureBackend(`{ "mail": null, "otherMails": "", "userPrincipalName": null }`)
193+ bURL, _ := url.Parse(b.URL)
194+ p := testAzureProvider(bURL.Host)
196+ session := &SessionState{AccessToken: "imaginary_access_token"}
197+ email, err := p.GetEmailAddress(session)
198+ assert.Equal(t, "type assertion to string failed", err.Error())
199+ assert.Equal(t, "", email)