facebook_test.go (2019B)
1 package oauth2 2 3 import ( 4 . "github.com/stretchr/testify/assert" 5 "net/http" 6 "net/http/httptest" 7 "testing" 8 ) 9 10 var facebookTestUserResponse = `{ 11 "id": "23456789012345678", 12 "name": "Facebook User", 13 "picture": { 14 "data": { 15 "height": 100, 16 "is_silhouette": false, 17 "url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p100x100/example_facebook_image.jpg", 18 "width": 100 19 } 20 }, 21 "email": "facebookuser@facebook.com" 22 }` 23 24 func Test_Facebook_getUserInfo(t *testing.T) { 25 server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 26 Equal(t, "secret", r.FormValue("access_token")) 27 w.Header().Set("Content-Type", "application/json; charset=utf-8") 28 w.Write([]byte(facebookTestUserResponse)) 29 })) 30 defer server.Close() 31 32 facebookAPI = server.URL 33 34 u, rawJSON, err := providerfacebook.GetUserInfo(TokenInfo{AccessToken: "secret"}) 35 NoError(t, err) 36 Equal(t, "23456789012345678", u.Sub) 37 Equal(t, "facebookuser@facebook.com", u.Email) 38 Equal(t, "Facebook User", u.Name) 39 Equal(t, facebookTestUserResponse, rawJSON) 40 } 41 42 func Test_Facebook_getUserInfo_WrongContentType(t *testing.T) { 43 server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 44 Equal(t, "secret", r.FormValue("access_token")) 45 w.Header().Set("Content-Type", "text/javascript; charset=utf-8") 46 w.Write([]byte(facebookTestUserResponse)) 47 })) 48 defer server.Close() 49 50 facebookAPI = server.URL 51 52 _, _, err := providerfacebook.GetUserInfo(TokenInfo{AccessToken: "secret"}) 53 Error(t, err) 54 } 55 56 func Test_Facebook_getUserInfo_WrongStatus(t *testing.T) { 57 server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 58 Equal(t, "secret", r.FormValue("access_token")) 59 w.WriteHeader(http.StatusBadRequest) 60 w.Write([]byte(facebookTestUserResponse)) 61 })) 62 defer server.Close() 63 64 facebookAPI = server.URL 65 66 _, _, err := providerfacebook.GetUserInfo(TokenInfo{AccessToken: "secret"}) 67 Error(t, err) 68 }