Пример #1
0
    def _test_get_domain_connect_async_token_refresh(config):
        params = {"IP": "132.148.25.185"}

        dc = DomainConnect()
        context = dc.open_domain_connect_template_asynclink(
            'asyncpage.' + config['TEST_DOMAIN'],
            'domainconnect.org',
            'dynamicdns',
            params=params,
            redirect_uri='https://dynamicdns.domainconnect.org/ddnscode',
            service_id_in_path=config['ASYNC_SERVICE_IN_PATH'])

        code = input("Please enter code: ")
        context.code = code

        ctx = dc.get_async_token(context,
                                 test_credentials[context.config.providerName])
        initial_token = ctx.access_token
        assert (ctx.access_token_expires_in
                is not None), 'Access token expiration data missing'
        assert (ctx.iat is not None), 'Access token iat missing'
        assert (ctx.refresh_token is not None), 'Refresh token missing'
        ctx.access_token_expires_in = 1

        ctx = dc.get_async_token(ctx,
                                 test_credentials[context.config.providerName])
        assert (initial_token !=
                ctx.access_token), "Token not refreshed when expired"
Пример #2
0
    def _test_open_domain_connect_template_asynclink(config):
        params = {
            "IP": "132.148.25.185",
            "RANDOMTEXT": "shm:1531371203:Hejo async"
        }

        dc = DomainConnect()
        context = dc.open_domain_connect_template_asynclink(
            'asyncpage.' + config['TEST_DOMAIN'],
            'exampleservice.domainconnect.org',
            'template2',
            params=params,
            redirect_uri=
            'https://exampleservice.domainconnect.org/async_oauth_response',
            service_id_in_path=config['ASYNC_SERVICE_IN_PATH'])

        code = input("Please enter code: ")
        context.code = code

        ctx = dc.get_async_token(context,
                                 test_credentials[context.config.providerName])
        assert (ctx.access_token is not None), 'Access token missing'
        assert (ctx.access_token_expires_in
                is not None), 'Access token expiration data missing'
        assert (ctx.iat is not None), 'Access token iat missing'

        dc.apply_domain_connect_template_async(context, params=params)
Пример #3
0
    def _test_get_domain_connect_async_token_refresh(config):
        params = {"IP": "132.148.25.185"}

        dc = DomainConnect()
        # use of DynDNS to always have refresh_token onboarded
        context = dc.open_domain_connect_template_asynclink(
            'asyncpage.' + config['TEST_DOMAIN'],
            'domainconnect.org',
            'dynamicdns',
            params=params,
            redirect_uri='https://dynamicdns.domainconnect.org/ddnscode',
            service_id_in_path=config['ASYNC_SERVICE_IN_PATH'])

        code = input("Please enter code: ")
        context.code = code

        # for DYNDNS there are static credentials
        credentials = DomainConnectAsyncCredentials(
            client_id='domainconnect.org',
            client_secret='inconceivable',
            api_url=context.config.urlAPI)
        ctx = dc.get_async_token(context, credentials)
        initial_token = ctx.access_token
        assert (ctx.access_token_expires_in
                is not None), 'Access token expiration data missing'
        assert (ctx.iat is not None), 'Access token iat missing'
        assert (ctx.refresh_token is not None), 'Refresh token missing'
        ctx.access_token_expires_in = 1

        ctx = dc.get_async_token(ctx, credentials)
        assert (initial_token !=
                ctx.access_token), "Token not refreshed when expired"

        # test handling on invalid refresh token
        ctx.access_token_expires_in = 1
        ctx.refresh_token = 'invalid'
        try:
            ctx = dc.get_async_token(ctx, credentials)
            assert False, "Expected AsyncTokenException on invalid token refresh"
        except AsyncTokenException as e:
            # the second variant is for GoDaddy not compatible with OAuth specification
            assert e.message.startswith("Failed to get async token") \
                   or e.message.startswith(
                "Cannot get async token: Invalid JSON returned (400): Provided token doesn't match the registered one"), \
                "Unexpected error message on invalid refresh token: {}".format(e.message)
Пример #4
0
    def _test_get_domain_connect_async_conflict(config):
        if config["ASYNC_SERVICE_IN_PATH"]:
            print(
                "Skipping test as service in path does not support multiple templates in consent: {}"
                .format(config))
            return

        params = {
            "IP": "132.148.25.184",
            "RANDOMTEXT": "shm:1531371203:Hejo async"
        }
        params2 = {
            "IP": "132.148.25.185",
            "RANDOMTEXT": "shm:1531371203:Hejo async in conflict"
        }

        dc = DomainConnect()
        context = dc.open_domain_connect_template_asynclink(
            domain='asyncpage-conflict.' + config['TEST_DOMAIN'],
            provider_id='exampleservice.domainconnect.org',
            service_id=['template1', 'template2'],
            params=params,
            redirect_uri=
            'https://exampleservice.domainconnect.org/async_oauth_response',
            service_id_in_path=config['ASYNC_SERVICE_IN_PATH'])

        code = input("Please enter code: ")
        context.code = code

        ctx = dc.get_async_token(context,
                                 test_credentials[context.config.providerName])
        assert (ctx.access_token is not None), 'Access token missing'
        assert (ctx.access_token_expires_in
                is not None), 'Access token expiration data missing'

        dc.apply_domain_connect_template_async(context,
                                               service_id='template1',
                                               params=params,
                                               force=True)

        try:
            dc.apply_domain_connect_template_async(context,
                                                   service_id='template2',
                                                   params=params2)
            assert False, '2. No error on apply'
        except ConflictOnApplyException:
            pass

        dc.apply_domain_connect_template_async(context,
                                               service_id='template2',
                                               params=params2,
                                               force=True)