Beispiel #1
0
def activate_user_account_desktop(activationkey, producttoken, stdout, stderr):
    """
    @param activationkey:
            The activationkey sent from the user's browser upon completion
            of the DevPay signup process.
    @param stdout, stderr:
            Standard output (for user feedback) and error (for debugging) streams.

    @return:
            A Deferred which fires with an ActivateDesktopProductResponse upon
            successful user initialization.
    """

    print >>stdout, "Activating license..."
    print >>stderr, 'activationkey = %r' % (activationkey,)

    d = LicenseServiceClient().activate_desktop_product(activationkey, producttoken)
    def activated(adpr):
        print >>stdout, 'License activated.'
        print >>stderr, ('access_key_id = %r\n'
                         'secret_key = %r\n'
                         'usertoken = %r'
                         % (adpr.access_key_id, adpr.secret_key, adpr.usertoken))
        return adpr
    d.addCallback(activated)
    return d
Beispiel #2
0
    def setUp(self):
        self._time_patcher = mock.patch('time.time')
        nowfunc = self._time_patcher.__enter__()
        nowfunc.return_value = self.SOME_TIME

        self._http_patcher = mock.patch(
            'lae_automation.aws.queryapi.make_http_request')
        self._make_http_request = self._http_patcher.__enter__()

        def fire_mocked_http_response(*a, **kw):
            d = Deferred()
            reactor.callLater(0, d.callback, SAMPLE_RESPONSE)
            return d

        self._make_http_request.side_effect = fire_mocked_http_response

        self._trimmed_fake_params = dict(FAKE_PARAMS)

        # Remove these params which are automatically added in _build_request_uri:
        del self._trimmed_fake_params['AWSAccessKeyId']
        del self._trimmed_fake_params['Expires']
        del self._trimmed_fake_params['SignatureVersion']
        del self._trimmed_fake_params['Version']

        self.lsc = LicenseServiceClient(creds=AWSCredentials(
            access_key=FAKE_AWS_ACCESS_KEY_ID, secret_key=FAKE_HMAC_KEY), )
def verify_user_account(useraccesskeyid, usersecretkey, usertoken, producttoken, stdout, stderr):
    print >>stdout, "Verifying subscription..."
    print >>stderr, 'usertoken = %r' % (usertoken,)

    usercreds = AWSCredentials(useraccesskeyid, usersecretkey)
    d = LicenseServiceClient(usercreds).verify_subscription_by_tokens(usertoken, producttoken)

    def verified(active):
        print >>stderr, 'DevPay License subscription active? %r' % (active,)
        return active
    d.addCallback(verified)
    return d
Beispiel #4
0
def verify_user_account(useraccesskeyid, usersecretkey, usertoken, producttoken, stdout, stderr):
    print >>stdout, "Verifying subscription..."
    print >>stderr, 'usertoken = %r' % (usertoken,)

    usercreds = AWSCredentials(useraccesskeyid, usersecretkey)
    d = LicenseServiceClient(usercreds).verify_subscription_by_tokens(usertoken, producttoken)

    def verified(active):
        print >>stderr, 'DevPay License subscription active? %r' % (active,)
        return active
    d.addCallback(verified)
    return d
    def setUp(self):
        self._time_patcher = mock.patch('time.time')
        nowfunc = self._time_patcher.__enter__()
        nowfunc.return_value = self.SOME_TIME

        self._http_patcher = mock.patch('lae_automation.aws.queryapi.make_http_request')
        self._make_http_request = self._http_patcher.__enter__()

        def fire_mocked_http_response(*a, **kw):
            d = Deferred()
            reactor.callLater(0, d.callback, SAMPLE_RESPONSE)
            return d

        self._make_http_request.side_effect = fire_mocked_http_response

        self._trimmed_fake_params = dict(FAKE_PARAMS)

        # Remove these params which are automatically added in _build_request_uri:
        del self._trimmed_fake_params['AWSAccessKeyId']
        del self._trimmed_fake_params['Expires']
        del self._trimmed_fake_params['SignatureVersion']
        del self._trimmed_fake_params['Version']

        self.lsc = LicenseServiceClient(
            creds=AWSCredentials(access_key=FAKE_AWS_ACCESS_KEY_ID, secret_key=FAKE_HMAC_KEY),
            )
Beispiel #6
0
    def test__collapse_params(self):
        """
        Test vectors cut'n'pasted from documented examples:

        Reference: http://docs.amazonwebservices.com/AmazonDevPay/latest/DevPayDeveloperGuide/index.html?LSAPI_Auth_REST.html
        """
        actual = LicenseServiceClient._collapse_params(FAKE_PARAMS.items())

        self.failUnlessEqual(EXPECTED_COLLAPSED_PARAMS, actual)
Beispiel #7
0
    def test_nondefault_endpoint(self):
        lsc = LicenseServiceClient(
            creds=AWSCredentials(access_key=FAKE_AWS_ACCESS_KEY_ID,
                                 secret_key=FAKE_HMAC_KEY),
            endpoint=AWSServiceEndpoint(
                uri=PRODUCTION_LICENSE_SERVICE_ENDPOINT),
        )

        self.failUnlessEqual(vars(lsc._endpoint), vars(self.lsc._endpoint))
    def test__collapse_params(self):
        """
        Test vectors cut'n'pasted from documented examples:

        Reference: http://docs.amazonwebservices.com/AmazonDevPay/latest/DevPayDeveloperGuide/index.html?LSAPI_Auth_REST.html
        """
        actual = LicenseServiceClient._collapse_params(FAKE_PARAMS.items())

        self.failUnlessEqual(EXPECTED_COLLAPSED_PARAMS, actual)
Beispiel #9
0
    def test__collapse_params_does_not_url_encode(self):
        """
        From the reference: "Do not URL encode the parameter values."
        """
        name = 'foo'
        value = 'I have characters urlencoding escaped characters: +*&?\n\0'
        input = [(name, value)]
        expected = name + value
        actual = LicenseServiceClient._collapse_params(input)

        self.failUnlessEqual(expected, actual)
    def test__collapse_params_does_not_url_encode(self):
        """
        From the reference: "Do not URL encode the parameter values."
        """
        name = 'foo'
        value = 'I have characters urlencoding escaped characters: +*&?\n\0'
        input = [ (name, value) ]
        expected = name + value
        actual = LicenseServiceClient._collapse_params(input)

        self.failUnlessEqual(expected, actual)
Beispiel #11
0
class LicenseServiceClientTests(TestCase):
    SOME_TIME = 1168602300
    EXPIRES = "2007-01-12T12:00:00Z"  # 15 minutes later

    def setUp(self):
        self._time_patcher = mock.patch('time.time')
        nowfunc = self._time_patcher.__enter__()
        nowfunc.return_value = self.SOME_TIME

        self._http_patcher = mock.patch(
            'lae_automation.aws.queryapi.make_http_request')
        self._make_http_request = self._http_patcher.__enter__()

        def fire_mocked_http_response(*a, **kw):
            d = Deferred()
            reactor.callLater(0, d.callback, SAMPLE_RESPONSE)
            return d

        self._make_http_request.side_effect = fire_mocked_http_response

        self._trimmed_fake_params = dict(FAKE_PARAMS)

        # Remove these params which are automatically added in _build_request_uri:
        del self._trimmed_fake_params['AWSAccessKeyId']
        del self._trimmed_fake_params['Expires']
        del self._trimmed_fake_params['SignatureVersion']
        del self._trimmed_fake_params['Version']

        self.lsc = LicenseServiceClient(creds=AWSCredentials(
            access_key=FAKE_AWS_ACCESS_KEY_ID, secret_key=FAKE_HMAC_KEY), )

    def tearDown(self):
        self._http_patcher.__exit__()
        self._time_patcher.__exit__()

    def test_activate_desktop_product(self):
        d = self.lsc.activate_desktop_product(FAKE_ACTIVATION_KEY,
                                              FAKE_PRODUCT_TOKEN)

        self._make_http_request.assert_called_with(
            EXPECTED_ACTIVATE_DESKTOP_PRODUCT_URL)

        def check_response(r):
            self.failUnless(isinstance(r, ActivateDesktopProductResponse))
            self.failUnlessEqual(
                (FAKE_ACCESS_KEY_ID, FAKE_SECRET_KEY, FAKE_USERTOKEN), r)

        d.addCallback(check_response)
        return d

    def test__send_request(self):
        d = self.lsc._send_request(**self._trimmed_fake_params)

        self._make_http_request.assert_called_with(EXPECTED_BUILT_URL)

        def check_response(actual):
            self.failUnlessEqual(SAMPLE_RESPONSE, actual)

        d.addCallback(check_response)
        return d

    def test__build_request_url(self):
        actual = self.lsc._build_request_url(self._trimmed_fake_params)

        self.failUnlessEqual(EXPECTED_BUILT_URL, actual)

    def test__calc_signature(self):
        actual = self.lsc._calc_signature(FAKE_PARAMS.items())

        self.failUnlessEqual(EXPECTED_BASE64_SIGNATURE, actual)

    def test__collapse_params(self):
        """
        Test vectors cut'n'pasted from documented examples:

        Reference: http://docs.amazonwebservices.com/AmazonDevPay/latest/DevPayDeveloperGuide/index.html?LSAPI_Auth_REST.html
        """
        actual = LicenseServiceClient._collapse_params(FAKE_PARAMS.items())

        self.failUnlessEqual(EXPECTED_COLLAPSED_PARAMS, actual)

    def test__collapse_params_does_not_url_encode(self):
        """
        From the reference: "Do not URL encode the parameter values."
        """
        name = 'foo'
        value = 'I have characters urlencoding escaped characters: +*&?\n\0'
        input = [(name, value)]
        expected = name + value
        actual = LicenseServiceClient._collapse_params(input)

        self.failUnlessEqual(expected, actual)

    def test_nondefault_endpoint(self):
        lsc = LicenseServiceClient(
            creds=AWSCredentials(access_key=FAKE_AWS_ACCESS_KEY_ID,
                                 secret_key=FAKE_HMAC_KEY),
            endpoint=AWSServiceEndpoint(
                uri=PRODUCTION_LICENSE_SERVICE_ENDPOINT),
        )

        self.failUnlessEqual(vars(lsc._endpoint), vars(self.lsc._endpoint))
class LicenseServiceClientTests (TestCase):
    SOME_TIME = 1168602300
    EXPIRES = "2007-01-12T12:00:00Z"  # 15 minutes later

    def setUp(self):
        self._time_patcher = mock.patch('time.time')
        nowfunc = self._time_patcher.__enter__()
        nowfunc.return_value = self.SOME_TIME

        self._http_patcher = mock.patch('lae_automation.aws.queryapi.make_http_request')
        self._make_http_request = self._http_patcher.__enter__()

        def fire_mocked_http_response(*a, **kw):
            d = Deferred()
            reactor.callLater(0, d.callback, SAMPLE_RESPONSE)
            return d

        self._make_http_request.side_effect = fire_mocked_http_response

        self._trimmed_fake_params = dict(FAKE_PARAMS)

        # Remove these params which are automatically added in _build_request_uri:
        del self._trimmed_fake_params['AWSAccessKeyId']
        del self._trimmed_fake_params['Expires']
        del self._trimmed_fake_params['SignatureVersion']
        del self._trimmed_fake_params['Version']

        self.lsc = LicenseServiceClient(
            creds=AWSCredentials(access_key=FAKE_AWS_ACCESS_KEY_ID, secret_key=FAKE_HMAC_KEY),
            )

    def tearDown(self):
        self._http_patcher.__exit__()
        self._time_patcher.__exit__()

    def test_activate_desktop_product(self):
        d = self.lsc.activate_desktop_product(FAKE_ACTIVATION_KEY, FAKE_PRODUCT_TOKEN)

        self._make_http_request.assert_called_with(EXPECTED_ACTIVATE_DESKTOP_PRODUCT_URL)

        def check_response(r):
            self.failUnless(isinstance(r, ActivateDesktopProductResponse))
            self.failUnlessEqual( (FAKE_ACCESS_KEY_ID, FAKE_SECRET_KEY, FAKE_USERTOKEN), r )

        d.addCallback(check_response)
        return d

    def test__send_request(self):
        d = self.lsc._send_request(**self._trimmed_fake_params)

        self._make_http_request.assert_called_with(EXPECTED_BUILT_URL)

        def check_response(actual):
            self.failUnlessEqual(SAMPLE_RESPONSE, actual)

        d.addCallback(check_response)
        return d

    def test__build_request_url(self):
        actual = self.lsc._build_request_url(self._trimmed_fake_params)

        self.failUnlessEqual(EXPECTED_BUILT_URL, actual)

    def test__calc_signature(self):
        actual = self.lsc._calc_signature(FAKE_PARAMS.items())

        self.failUnlessEqual(EXPECTED_BASE64_SIGNATURE, actual)

    def test__collapse_params(self):
        """
        Test vectors cut'n'pasted from documented examples:

        Reference: http://docs.amazonwebservices.com/AmazonDevPay/latest/DevPayDeveloperGuide/index.html?LSAPI_Auth_REST.html
        """
        actual = LicenseServiceClient._collapse_params(FAKE_PARAMS.items())

        self.failUnlessEqual(EXPECTED_COLLAPSED_PARAMS, actual)

    def test__collapse_params_does_not_url_encode(self):
        """
        From the reference: "Do not URL encode the parameter values."
        """
        name = 'foo'
        value = 'I have characters urlencoding escaped characters: +*&?\n\0'
        input = [ (name, value) ]
        expected = name + value
        actual = LicenseServiceClient._collapse_params(input)

        self.failUnlessEqual(expected, actual)

    def test_nondefault_endpoint(self):
        lsc = LicenseServiceClient(
            creds=AWSCredentials(access_key=FAKE_AWS_ACCESS_KEY_ID, secret_key=FAKE_HMAC_KEY),
            endpoint=AWSServiceEndpoint(uri=PRODUCTION_LICENSE_SERVICE_ENDPOINT),
            )

        self.failUnlessEqual(vars(lsc._endpoint), vars(self.lsc._endpoint))