Esempio n. 1
0
    def test_compare_simple_urls(self):
        url = 'https://account.ridibooks.com/ridi/callback?a=123&b=2'
        different_order_param_url = 'https://account.ridibooks.com/ridi/callback?b=2&a=123'

        different_param_url = 'https://account.ridibooks.com/ridi/callback?a=321&b=2'
        different_path_url = 'https://account.ridibooks.com/ridi/complete?a=123&b=2'

        self.assertTrue(is_same_url(url, different_order_param_url))
        self.assertFalse(is_same_url(url, different_param_url))
        self.assertFalse(is_same_url(url, different_path_url))
Esempio n. 2
0
    def test_compare_complex_url(self):
        base_url_path = 'https://account.ridibooks.com/ridi/callback/'
        first_random_str = generate_random_str(30)
        second_random_str = generate_random_str(30)
        random_str = generate_random_str(30)

        query_url = generate_query_url(base_url_path, {'a': first_random_str, 'b': second_random_str})
        different_order_query_url = generate_query_url(base_url_path, {'b': second_random_str, 'a': first_random_str})

        url = generate_query_url(base_url_path, {'a': query_url, 'b': random_str})
        different_order_query_url = generate_query_url(base_url_path, {'a': different_order_query_url, 'b': random_str})

        different_param_url = generate_query_url(
            base_url_path, {'a': query_url, 'b': random_str, 'c': generate_random_str(30)}
        )
        self.assertTrue(is_same_url(url, different_order_query_url))
        self.assertFalse(is_same_url(url, different_param_url))
Esempio n. 3
0
    def test_compare_url(self):  # query 안에 url이 있고, 그 url 안에 query가 또 있는 경우.
        base_url_path = 'https://account.ridibooks.com/ridi/callback/'
        first_random_str = generate_random_str(30)
        second_random_str = generate_random_str(30)
        query_url = generate_query_url(base_url_path, {'a': first_random_str, 'b': second_random_str})
        different_order_query_url = generate_query_url(base_url_path, {'b': second_random_str, 'a': first_random_str})

        self.assertTrue(is_same_url(query_url, different_order_query_url))
Esempio n. 4
0
    def assert_client_redirect_uri(cls, client: Client, redirect_uri: str):
        if client.is_in_house:
            cls.assert_in_house_client_redirect_uri(client, redirect_uri)
            return

        for client_redirect_uri in client.redirect_uris.split():
            if is_same_url(redirect_uri, client_redirect_uri):
                return

        raise InvalidRedirectUri
Esempio n. 5
0
    def get_grant(client: Client, code: str, redirect_uri: str) -> Grant:
        try:
            grant = GrantRepository.get_grant_by_code(code)
        except ObjectDoesNotExist:
            raise InvalidCode

        if grant.application != client:
            raise InvalidClient

        if not is_same_url(grant.redirect_uri, redirect_uri):
            raise InvalidRedirectUri
        return grant
Esempio n. 6
0
 def redirect_uri_allowed(self, uri):
     return is_same_url(self.redirect_uri, uri)