Ejemplo n.º 1
0
 def test_m2m_webhook_subscription_returns_resource_url(self):
     test_payload = {
         "access_token": WebhooksTestCase.ACCESS_TOKEN,
         "event_type": 'm2m_transaction_received',
         "webhook_endpoint":
         'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
         "scope": 'company'
     }
     response = webhooks.WebhookService(
         base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
     self.assertIsNone(WebhooksTestCase.validate(response))
Ejemplo n.º 2
0
 def test_create_settlement_transfer_webhook_succeeds(self):
     test_payload = {
         "access_token": WebhooksTestCase.ACCESS_TOKEN,
         "event_type": 'settlement_transfer_completed',
         "webhook_endpoint":
         'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
         "scope": 'company'
     }
     self.assertIsNotNone(
         webhooks.WebhookService(
             base_url=SAMPLE_BASE_URL).create_subscription(test_payload))
Ejemplo n.º 3
0
 def test_create_till_scope_webhook_with_no_scope_reference_fails(self):
     test_payload = {
         "access_token": WebhooksTestCase.ACCESS_TOKEN,
         "event_type": 'b2b_transaction_received',
         "webhook_endpoint":
         'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
         "scope": 'till'
     }
     with self.assertRaisesRegex(InvalidArgumentError,
                                 'Scope reference not given.'):
         webhooks.WebhookService(
             base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
Ejemplo n.º 4
0
 def test_create_buygoods_reversal_webhook_succeeds(self):
     test_payload = {
         "access_token": WebhooksTestCase.ACCESS_TOKEN,
         "event_type": 'buygoods_transaction_reversed',
         "webhook_endpoint":
         'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
         "scope": 'till',
         "scope_reference": '112233'
     }
     self.assertIsNotNone(
         webhooks.WebhookService(
             base_url=SAMPLE_BASE_URL).create_subscription(test_payload))
Ejemplo n.º 5
0
 def test_create_invalid_company_scope_webhook_fails(self):
     test_payload = {
         "access_token": WebhooksTestCase.ACCESS_TOKEN,
         "event_type": 'settlement_transfer_completed',
         "webhook_endpoint":
         'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
         "scope": 'till',
         "scope_reference": '112233'
     }
     with self.assertRaisesRegex(InvalidArgumentError,
                                 "Invalid scope for given event type."):
         webhooks.WebhookService(
             base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
Ejemplo n.º 6
0
 def test_create_invalid_webhook_fails(self):
     test_payload = {
         "access_token": WebhooksTestCase.ACCESS_TOKEN,
         "event_type": 'settlement',
         "webhook_endpoint":
         'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
         "webhook_secret": SAMPLE_WEBHOOK_SECRET,
         "scope": 'Till',
         "scope_reference": '112233'
     }
     with self.assertRaises(InvalidArgumentError):
         webhooks.WebhookService(
             base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
Ejemplo n.º 7
0
class WebhooksTestCase(unittest.TestCase):
    # Establish environment
    validate = URLValidator()

    token_service = authorization.TokenService(SAMPLE_BASE_URL,
                                               SAMPLE_CLIENT_ID,
                                               SAMPLE_CLIENT_SECRET)
    access_token_request = token_service.request_access_token()
    ACCESS_TOKEN = token_service.get_access_token(access_token_request)

    webhook_obj = webhooks.WebhookService(base_url=SAMPLE_BASE_URL)
    header = dict(webhook_obj._headers)
    header['Authorization'] = 'Bearer ' + ACCESS_TOKEN

    def test_init_method_with_base_url_argument_succeeds(self):
        webhook_service = webhooks.WebhookService(base_url=SAMPLE_BASE_URL)
        self.assertIsInstance(webhook_service, webhooks.WebhookService)

    # Test Request Status
    def test_create_buygoods_webhook_subscription_request_succeeds(self):
        response = requests.post(
            headers=WebhooksTestCase.header,
            json=json_builder.webhook_subscription(
                "buygoods_transaction_received",
                "https://webhook.site/dcbdce14-dd4f-4493-be2c-ad3526354fa8",
                'till', '112233'),
            data=None,
            url=WebhooksTestCase.webhook_obj._build_url(
                webhooks.WEBHOOK_SUBSCRIPTION_PATH),
        )
        self.assertEqual(response.status_code, 201)

    def test_create_b2b_webhook_subscription_request_succeeds(self):
        response = requests.post(
            headers=WebhooksTestCase.header,
            json=json_builder.webhook_subscription(
                "b2b_transaction_received",
                "https://webhook.site/dcbdce14-dd4f-4493-be2c-ad3526354fa8",
                'till', '112233'),
            data=None,
            url=WebhooksTestCase.webhook_obj._build_url(
                webhooks.WEBHOOK_SUBSCRIPTION_PATH),
        )
        self.assertEqual(response.status_code, 201)

    def test_create_buygoods_reversal_webhook_subscription_request_succeeds(
            self):
        response = requests.post(
            headers=WebhooksTestCase.header,
            json=json_builder.webhook_subscription(
                "buygoods_transaction_reversed",
                "https://webhook.site/dcbdce14-dd4f-4493-be2c-ad3526354fa8",
                'till', '112233'),
            data=None,
            url=WebhooksTestCase.webhook_obj._build_url(
                webhooks.WEBHOOK_SUBSCRIPTION_PATH),
        )
        self.assertEqual(response.status_code, 201)

    def test_create_customer_created_webhook_subscription_request_succeeds(
            self):
        response = requests.post(
            headers=WebhooksTestCase.header,
            json=json_builder.webhook_subscription(
                "customer_created",
                "https://webhook.site/dcbdce14-dd4f-4493-be2c-ad3526354fa8",
                'company'),
            data=None,
            url=WebhooksTestCase.webhook_obj._build_url(
                webhooks.WEBHOOK_SUBSCRIPTION_PATH),
        )
        self.assertEqual(response.status_code, 201)

    def test_create_settlement_transfer_webhook_subscription_request_succeeds(
            self):
        response = requests.post(
            headers=WebhooksTestCase.header,
            json=json_builder.webhook_subscription(
                "settlement_transfer_completed",
                "https://webhook.site/dcbdce14-dd4f-4493-be2c-ad3526354fa8",
                'company'),
            data=None,
            url=WebhooksTestCase.webhook_obj._build_url(
                webhooks.WEBHOOK_SUBSCRIPTION_PATH),
        )
        self.assertEqual(response.status_code, 201)

    def test_create_m2m_transaction_received_webhook_subscription_request_succeeds(
            self):
        response = requests.post(
            headers=WebhooksTestCase.header,
            json=json_builder.webhook_subscription(
                "m2m_transaction_received",
                "https://webhook.site/dcbdce14-dd4f-4493-be2c-ad3526354fa8",
                'company'),
            data=None,
            url=WebhooksTestCase.webhook_obj._build_url(
                webhooks.WEBHOOK_SUBSCRIPTION_PATH),
        )
        self.assertEqual(response.status_code, 201)

    # Test that module successfully creates and sends the request
    def test_create_buygoods_webhook_succeeds(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'buygoods_transaction_received',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'till',
            "scope_reference": '112233'
        }
        self.assertIsNotNone(
            webhooks.WebhookService(
                base_url=SAMPLE_BASE_URL).create_subscription(test_payload))

    def test_create_b2b_webhook_succeeds(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'b2b_transaction_received',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'till',
            "scope_reference": '112233'
        }
        self.assertIsNotNone(
            webhooks.WebhookService(
                base_url=SAMPLE_BASE_URL).create_subscription(test_payload))

    def test_create_buygoods_reversal_webhook_succeeds(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'buygoods_transaction_reversed',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'till',
            "scope_reference": '112233'
        }
        self.assertIsNotNone(
            webhooks.WebhookService(
                base_url=SAMPLE_BASE_URL).create_subscription(test_payload))

    def test_create_customer_created_succeeds(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'customer_created',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'company'
        }
        self.assertIsNotNone(
            webhooks.WebhookService(
                base_url=SAMPLE_BASE_URL).create_subscription(test_payload))

    def test_create_settlement_transfer_webhook_succeeds(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'settlement_transfer_completed',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'company'
        }
        self.assertIsNotNone(
            webhooks.WebhookService(
                base_url=SAMPLE_BASE_URL).create_subscription(test_payload))

    def test_create_m2m_transaction_received_webhook_succeeds(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'm2m_transaction_received',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'company'
        }
        self.assertIsNotNone(
            webhooks.WebhookService(
                base_url=SAMPLE_BASE_URL).create_subscription(test_payload))

    # Test it returns the resource_url
    def test_buygoods_webhook_subscription_returns_resource_url(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'buygoods_transaction_received',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'till',
            "scope_reference": '112233'
        }
        response = webhooks.WebhookService(
            base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
        self.assertIsNone(WebhooksTestCase.validate(response))

    def test_b2b_webhook_subscription_returns_resource_url(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'b2b_transaction_received',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'till',
            "scope_reference": '112233'
        }
        response = webhooks.WebhookService(
            base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
        self.assertIsNone(WebhooksTestCase.validate(response))

    def test_buygoods_reversal_webhook_subscription_returns_resource_url(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'buygoods_transaction_reversed',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'till',
            "scope_reference": '112233'
        }
        response = webhooks.WebhookService(
            base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
        self.assertIsNone(WebhooksTestCase.validate(response))

    def test_customer_created_webhook_subscription_returns_resource_url(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'customer_created',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'company'
        }
        response = webhooks.WebhookService(
            base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
        self.assertIsNone(WebhooksTestCase.validate(response))

    def test_settlement_transfer_webhook_subscription_returns_resource_url(
            self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'settlement_transfer_completed',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'company'
        }
        response = webhooks.WebhookService(
            base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
        self.assertIsNone(WebhooksTestCase.validate(response))

    def test_m2m_webhook_subscription_returns_resource_url(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'm2m_transaction_received',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'company'
        }
        response = webhooks.WebhookService(
            base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
        self.assertIsNone(WebhooksTestCase.validate(response))

    # Test Failure scenarios
    def test_create_invalid_webhook_fails(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'settlement',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "webhook_secret": SAMPLE_WEBHOOK_SECRET,
            "scope": 'Till',
            "scope_reference": '112233'
        }
        with self.assertRaises(InvalidArgumentError):
            webhooks.WebhookService(
                base_url=SAMPLE_BASE_URL).create_subscription(test_payload)

    def test_create_invalid_till_scope_webhook_fails(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'b2b_transaction_received',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'company'
        }
        with self.assertRaisesRegex(InvalidArgumentError,
                                    "Invalid scope for given event type."):
            webhooks.WebhookService(
                base_url=SAMPLE_BASE_URL).create_subscription(test_payload)

    def test_create_till_scope_webhook_with_no_scope_reference_fails(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'b2b_transaction_received',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'till'
        }
        with self.assertRaisesRegex(InvalidArgumentError,
                                    'Scope reference not given.'):
            webhooks.WebhookService(
                base_url=SAMPLE_BASE_URL).create_subscription(test_payload)

    def test_create_invalid_company_scope_webhook_fails(self):
        test_payload = {
            "access_token": WebhooksTestCase.ACCESS_TOKEN,
            "event_type": 'settlement_transfer_completed',
            "webhook_endpoint":
            'https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d',
            "scope": 'till',
            "scope_reference": '112233'
        }
        with self.assertRaisesRegex(InvalidArgumentError,
                                    "Invalid scope for given event type."):
            webhooks.WebhookService(
                base_url=SAMPLE_BASE_URL).create_subscription(test_payload)
Ejemplo n.º 8
0
 def test_init_method_with_base_url_argument_succeeds(self):
     webhook_service = webhooks.WebhookService(base_url=SAMPLE_BASE_URL)
     self.assertIsInstance(webhook_service, webhooks.WebhookService)