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))
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))
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))
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
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
def redirect_uri_allowed(self, uri): return is_same_url(self.redirect_uri, uri)