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
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
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), )
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_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)
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)
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))