fix: check if it is both primary and verified

This commit is contained in:
Carlos Alexandro Becker 2019-03-20 13:52:30 -03:00
parent 95ee4358b2
commit 24f36f27a7
No known key found for this signature in database
GPG Key ID: E61E2F7DC14AB940
2 changed files with 18 additions and 4 deletions

View File

@ -203,6 +203,7 @@ func (p *GitHubProvider) GetEmailAddress(s *SessionState) (string, error) {
var emails []struct { var emails []struct {
Email string `json:"email"` Email string `json:"email"`
Primary bool `json:"primary"`
Verified bool `json:"verified"` Verified bool `json:"verified"`
} }
@ -248,7 +249,7 @@ func (p *GitHubProvider) GetEmailAddress(s *SessionState) (string, error) {
} }
for _, email := range emails { for _, email := range emails {
if email.Verified { if email.Primary && email.Verified {
return email.Email, nil return email.Email, nil
} }
} }

View File

@ -97,7 +97,7 @@ func TestGitHubProviderOverrides(t *testing.T) {
} }
func TestGitHubProviderGetEmailAddress(t *testing.T) { func TestGitHubProviderGetEmailAddress(t *testing.T) {
b := testGitHubBackend([]string{`[ {"email": "michael.bland@gsa.gov", "verified": true} ]`}) b := testGitHubBackend([]string{`[ {"email": "michael.bland@gsa.gov", "verified": true, "primary": true} ]`})
defer b.Close() defer b.Close()
bURL, _ := url.Parse(b.URL) bURL, _ := url.Parse(b.URL)
@ -109,10 +109,23 @@ func TestGitHubProviderGetEmailAddress(t *testing.T) {
assert.Equal(t, "michael.bland@gsa.gov", email) assert.Equal(t, "michael.bland@gsa.gov", email)
} }
func TestGitHubProviderGetEmailAddressNotVerified(t *testing.T) {
b := testGitHubBackend([]string{`[ {"email": "michael.bland@gsa.gov", "verified": false, "primary": true} ]`})
defer b.Close()
bURL, _ := url.Parse(b.URL)
p := testGitHubProvider(bURL.Host)
session := &SessionState{AccessToken: "imaginary_access_token"}
email, err := p.GetEmailAddress(session)
assert.Equal(t, nil, err)
assert.Empty(t, "", email)
}
func TestGitHubProviderGetEmailAddressWithOrg(t *testing.T) { func TestGitHubProviderGetEmailAddressWithOrg(t *testing.T) {
b := testGitHubBackend([]string{ b := testGitHubBackend([]string{
`[ {"email": "michael.bland@gsa.gov", "verified": true, "login":"testorg"} ]`, `[ {"email": "michael.bland@gsa.gov", "primary": true, "verified": true, "login":"testorg"} ]`,
`[ {"email": "michael.bland1@gsa.gov", "verified": true, "login":"testorg1"} ]`, `[ {"email": "michael.bland1@gsa.gov", "primary": true, "verified": true, "login":"testorg1"} ]`,
`[ ]`, `[ ]`,
}) })
defer b.Close() defer b.Close()