@@ -2,7 +2,7 @@ package providers
4 "encoding/base64"
4 "encoding/base64"
5− "github.com/bitly/go-simplejson"
5+ "encoding/json"
6 "github.com/bmizerany/assert"
6 "github.com/bmizerany/assert"
@@ -68,39 +68,61 @@ func TestGoogleProviderOverrides(t *testing.T) {
69func TestGoogleProviderGetEmailAddress(t *testing.T) {
69func TestGoogleProviderGetEmailAddress(t *testing.T) {
70 p := newGoogleProvider()
70 p := newGoogleProvider()
71− j := simplejson.New()
71+ body, err := json.Marshal(
73+ IdToken string `json:"id_token"`
72− j.Set("id_token", "ignored prefix."+base64.URLEncoding.EncodeToString(
75+ IdToken: "ignored prefix." + base64.URLEncoding.EncodeToString([]byte(`{"email": "michael.bland@gsa.gov"}`)),
73− []byte("{\"email\": \"michael.bland@gsa.gov\"}")))
76+ },
78+ assert.Equal(t, nil, err)
74− email, err := p.GetEmailAddress(j, "ignored access_token")
79+ email, err := p.GetEmailAddress(body, "ignored access_token")
75 assert.Equal(t, "michael.bland@gsa.gov", email)
80 assert.Equal(t, "michael.bland@gsa.gov", email)
76 assert.Equal(t, nil, err)
81 assert.Equal(t, nil, err)
79func TestGoogleProviderGetEmailAddressInvalidEncoding(t *testing.T) {
84func TestGoogleProviderGetEmailAddressInvalidEncoding(t *testing.T) {
80 p := newGoogleProvider()
85 p := newGoogleProvider()
81− j := simplejson.New()
86+ body, err := json.Marshal(
88+ IdToken string `json:"id_token"`
82− j.Set("id_token", "ignored prefix.{\"email\": \"michael.bland@gsa.gov\"}")
90+ IdToken: "ignored prefix." + `{"email": "michael.bland@gsa.gov"}`,
93+ assert.Equal(t, nil, err)
83− email, err := p.GetEmailAddress(j, "ignored access_token")
94+ email, err := p.GetEmailAddress(body, "ignored access_token")
84 assert.Equal(t, "", email)
95 assert.Equal(t, "", email)
85 assert.NotEqual(t, nil, err)
96 assert.NotEqual(t, nil, err)
88func TestGoogleProviderGetEmailAddressInvalidJson(t *testing.T) {
99func TestGoogleProviderGetEmailAddressInvalidJson(t *testing.T) {
89 p := newGoogleProvider()
100 p := newGoogleProvider()
90− j := simplejson.New()
101+
102+ body, err := json.Marshal(
104+ IdToken string `json:"id_token"`
91− j.Set("id_token", "ignored prefix."+base64.URLEncoding.EncodeToString(
106+ IdToken: "ignored prefix." + base64.URLEncoding.EncodeToString([]byte(`{"email": michael.bland@gsa.gov}`)),
92− []byte("{email: michael.bland@gsa.gov}")))
107+ },
109+ assert.Equal(t, nil, err)
93− email, err := p.GetEmailAddress(j, "ignored access_token")
110+ email, err := p.GetEmailAddress(body, "ignored access_token")
94 assert.Equal(t, "", email)
111 assert.Equal(t, "", email)
95 assert.NotEqual(t, nil, err)
112 assert.NotEqual(t, nil, err)
98func TestGoogleProviderGetEmailAddressEmailMissing(t *testing.T) {
115func TestGoogleProviderGetEmailAddressEmailMissing(t *testing.T) {
99 p := newGoogleProvider()
116 p := newGoogleProvider()
100− j := simplejson.New()
117+ body, err := json.Marshal(
119+ IdToken string `json:"id_token"`
101− j.Set("id_token", "ignored prefix."+base64.URLEncoding.EncodeToString(
121+ IdToken: "ignored prefix." + base64.URLEncoding.EncodeToString([]byte(`{"not_email": "missing"}`)),
102− []byte("{\"not_email\": \"missing!\"}")))
122+ },
124+ assert.Equal(t, nil, err)
103− email, err := p.GetEmailAddress(j, "ignored access_token")
125+ email, err := p.GetEmailAddress(body, "ignored access_token")
104 assert.Equal(t, "", email)
126 assert.Equal(t, "", email)
105 assert.NotEqual(t, nil, err)
127 assert.NotEqual(t, nil, err)