Esempio n. 1
0
class AsanaTests(create_oauth2_tests(
        registry.by_id(AsanaProvider.id))):

    def get_mocked_response(self):
        return MockedResponse(200, """
{"data": {"photo": null, "workspaces": [{"id": 31337, "name": "example.com"},
{"id": 3133777, "name": "Personal Projects"}], "email": "*****@*****.**",
"name": "Test Name", "id": 43748387}}""")
Esempio n. 2
0
class RobinhoodTests(create_oauth2_tests(registry.by_id(RobinhoodProvider.id))
                     ):
    def get_mocked_response(self):
        return MockedResponse(
            200, """
{
  "username": "******",
  "id": "1234-5678-910"
}
        """)
Esempio n. 3
0
class ShopifyTests(create_oauth2_tests(registry.by_id(ShopifyProvider.id))):
    def _complete_shopify_login(self, q, resp, resp_mock, with_refresh_token):
        complete_url = reverse(self.provider.id + '_callback')
        self.assertGreater(q['redirect_uri'][0].find(complete_url), 0)
        response_json = self \
            .get_login_response_json(with_refresh_token=with_refresh_token)
        with mocked_response(
                MockedResponse(200, response_json,
                               {'content-type': 'application/json'}),
                resp_mock):
            resp = self.client.get(complete_url, {
                'code': 'test',
                'state': q['state'][0],
                'shop': 'test',
            })
        return resp

    def login(self, resp_mock, process='login', with_refresh_token=True):
        resp = self.client.get(reverse(self.provider.id + '_login'), {
            'process': process,
            'shop': 'test'
        })
        self.assertEqual(resp.status_code, 302)
        p = urlparse(resp['location'])
        q = parse_qs(p.query)
        resp = self._complete_shopify_login(q, resp, resp_mock,
                                            with_refresh_token)
        return resp

    def get_mocked_response(self):
        return MockedResponse(
            200, """
        {
            "shop": {
                "id": "1234566",
                "name": "Test Shop",
                "email": "*****@*****.**"
            }
        }
        """)
Esempio n. 4
0
class SalesforceTests(create_oauth2_tests(registry.by_id(
        SalesforceProvider.id))):

    def get_mocked_response(self,
                            last_name='Penners',
                            first_name='Raymond',
                            name='Raymond Penners',
                            email='*****@*****.**',
                            verified_email=True):
        userinfo = USERINFO_RESPONSE.format(
            org_id="00Dxx00000000000A0",
            user_id="005xx000000aWwRQAU",
            vip="https://test.salesforce.com",
            nickname="test-ooi2xhmjteep",
            first_name=first_name,
            last_name=last_name,
            my_domain="https://fun.cs46.my.salesforce.com",
            content_domain="https://fun--c.cs46.content.force.com",
            verified_email=repr(verified_email).lower(),
            email=email,
            active="true",
            is_app_installed="true"
        )
        return MockedResponse(200, userinfo)
Esempio n. 5
0
class BitbucketOAuth2Tests(
        create_oauth2_tests(registry.by_id(BitbucketOAuth2Provider.id))):

    response_data = """
        {
            "created_on": "2011-12-20T16:34:07.132459+00:00",
            "display_name": "tutorials account",
            "links": {
                "avatar": {
                    "href":
                    "https://bitbucket-assetroot.s3.amazonaws.com/c/photos/2013/Nov/25/tutorials-avatar-1563784409-6_avatar.png"
                },
                "followers": {
                    "href":
                    "https://api.bitbucket.org/2.0/users/tutorials/followers"
                },
                "following": {
                    "href":
                    "https://api.bitbucket.org/2.0/users/tutorials/following"
                },
                "html": {
                    "href": "https://bitbucket.org/tutorials"
                },
                "repositories": {
                    "href":
                    "https://api.bitbucket.org/2.0/repositories/tutorials"
                },
                "self": {
                    "href": "https://api.bitbucket.org/2.0/users/tutorials"
                }
            },
            "location": "Santa Monica, CA",
            "type": "user",
            "username": "******",
            "uuid": "{c788b2da-b7a2-404c-9e26-d3f077557007}",
            "website": "https://tutorials.bitbucket.org/"
        }
    """  # noqa

    email_response_data = """
        {
            "page": 1,
            "pagelen": 10,
            "size": 1,
            "values": [
                {
                    "email": "*****@*****.**",
                    "is_confirmed": true,
                    "is_primary": true,
                    "links": {
                        "self": {
                            "href":
                            "https://api.bitbucket.org/2.0/user/emails/[email protected]"
                        }
                    },
                    "type": "email"
                },
                {
                    "email": "*****@*****.**",
                    "is_confirmed": true,
                    "is_primary": true,
                    "links": {
                        "self": {
                            "href":
                            "https://api.bitbucket.org/2.0/user/emails/[email protected]"
                        }
                    },
                    "type": "email"
                }
            ]
        }
    """  # noqa

    def setUp(self):
        super(BitbucketOAuth2Tests, self).setUp()
        self.mocks = {
            'requests':
            patch('authentication.socialaccount.providers'
                  '.bitbucket_oauth2.views.requests')
        }
        self.patches = dict(
            (name, mocked.start()) for (name, mocked) in self.mocks.items())
        self.patches['requests'].get.side_effect = [
            MockedResponse(200, self.response_data),
            MockedResponse(200, self.email_response_data),
        ]

    def tearDown(self):
        for (_, mocked) in self.mocks.items():
            mocked.stop()

    def get_mocked_response(self):
        return [MockedResponse(200, self.response_data)]

    def test_account_tokens(self, multiple_login=False):
        if multiple_login:
            self.patches['requests'].get.side_effect = [
                MockedResponse(200, self.response_data),
                MockedResponse(200, self.email_response_data),
                MockedResponse(200, self.response_data),
                MockedResponse(200, self.email_response_data),
            ]
        super(BitbucketOAuth2Tests, self).test_account_tokens(multiple_login)
        calls = [
            mock.call('https://api.bitbucket.org/2.0/user', params=mock.ANY),
            mock.call('https://api.bitbucket.org/2.0/user/emails',
                      params=mock.ANY),
        ]
        if multiple_login:
            calls.extend([
                mock.call('https://api.bitbucket.org/2.0/user',
                          params=mock.ANY),
                mock.call('https://api.bitbucket.org/2.0/user/emails',
                          params=mock.ANY),
            ])
        self.patches['requests'].get.assert_has_calls(calls)

    def test_provider_account(self):
        self.login(self.get_mocked_response())
        socialaccount = SocialAccount.objects.get(uid='tutorials')
        self.assertEqual(socialaccount.user.username, 'tutorials')
        self.assertEqual(socialaccount.user.email, '*****@*****.**')
        account = socialaccount.get_provider_account()
        self.assertEqual(account.to_str(), 'tutorials account')
        self.assertEqual(account.get_profile_url(),
                         'https://bitbucket.org/tutorials')
        self.assertEqual(
            account.get_avatar_url(),
            'https://bitbucket-assetroot.s3.amazonaws.com/c/photos/2013/Nov/25/tutorials-avatar-1563784409-6_avatar.png'  # noqa
        )
        self.patches['requests'].get.assert_has_calls([
            mock.call('https://api.bitbucket.org/2.0/user', params=mock.ANY),
            mock.call('https://api.bitbucket.org/2.0/user/emails',
                      params=mock.ANY),
        ])
Esempio n. 6
0
class UntappdTests(create_oauth2_tests(registry.by_id(UntappdProvider.id))):
    def get_login_response_json(self, with_refresh_token=True):
        return """
            {
                "meta": {
                    "http_code": 200
                },
                "response": {
                    "access_token": "testac"
                }
            }"""

    def get_mocked_response(self):
        return MockedResponse(200, """
{
   "meta":{
      "code":200,
      "response_time":{
         "time":0.29,
         "measure":"seconds"
      },
      "init_time":{
         "time":0.011,
         "measure":"seconds"
      }
   },
   "notifications":{
      "type":"notifications",
      "unread_count":{
         "comments":0,
         "toasts":0,
         "friends":0,
         "messages":0,
         "news":0
      }
   },
   "response":{
      "user":{
         "uid":123456,
         "id":123456,
         "user_name":"groovecoder",
         "first_name":"",
         "last_name":"",
         "user_avatar":"https:\\/\\/gravatar.com\\/avatar\\/ec25d046746de3be33779256f6957d8f?size=100&d=https%3A%2F%2Funtappd.akamaized.net%2Fsite%2Fassets%2Fimages%2Fdefault_avatar_v2.jpg%3Fv%3D1",
         "user_avatar_hd":"https:\\/\\/gravatar.com\\/avatar\\/ec25d046746de3be33779256f6957d8f?size=125&d=https%3A%2F%2Funtappd.akamaized.net%2Fsite%2Fassets%2Fimages%2Fdefault_avatar_v2.jpg%3Fv%3D1",
         "user_cover_photo":"https:\\/\\/untappd.akamaized.net\\/site\\/assets\\/v3\\/images\\/cover_default.jpg",
         "user_cover_photo_offset":0,
         "is_private":0,
         "location":"Testville",
         "url":"",
         "bio":"",
         "is_supporter":0,
         "relationship":"self",
         "untappd_url":"http:\\/\\/untappd.com\\/user\\/testuser",
         "account_type":"user",
         "stats":{
            "total_badges":43,
            "total_friends":43,
            "total_checkins":73,
            "total_beers":61,
            "total_created_beers":1,
            "total_followings":9,
            "total_photos":31
         },
         "recent_brews":{},
         "checkins":{},
         "media":{},
         "contact":{},
         "date_joined":"Tue, 11 Dec 2012 14:27:53 +0000",
         "settings":{
            "badge":{
               "badges_to_facebook":1,
               "badges_to_twitter":1
            },
            "checkin":{
               "checkin_to_facebook":0,
               "checkin_to_twitter":0,
               "checkin_to_foursquare":0
            },
            "navigation":{
               "default_to_checkin":0
            },
            "email_address":"*****@*****.**"
         }
      }
   }
}
        """)