Exemple #1
0
    def setUp(self) -> None:
        super(SubscriptionIntegrationTest, self).setUp()
        self.client = getnet.Client(
            os.environ.get("GETNET_SELLER_ID"),
            os.environ.get("GETNET_CLIENT_ID"),
            os.environ.get("GETNET_CLIENT_SECRET"),
            getnet.api.HOMOLOG,
        )
        self.service = Service(self.client)

        customer_service = customers.Service(self.client)
        customer = Customer(**customer_sample.copy())
        customer.customer_id = str(uuid.uuid4())
        customer.document_number = str(random())[2:13]
        self.customer = customer_service.create(customer)

        plan_service = plans.Service(self.client)
        self.plan = plan_service.create(
            plans.Plan(
                seller_id=self.client.seller_id,
                name="Plan Demo",
                description="Plan Demo",
                amount=1990,
                currency="BRL",
                product_type="service",
                period={
                    "type": "monthly",
                    "billing_cycle": 12,
                },
            ))

        self.card = Card(**card_sample.copy())
Exemple #2
0
    def testCreate(self, client_mock):
        client_mock.post.return_value = response_sample

        service = Service(client_mock)
        response = service.create(Subscription(**sample))

        self.assertIsInstance(response, SubscriptionResponse)
        self.assertIsNotNone(response_sample.get("create_date"))
Exemple #3
0
    def testGet(self, client_mock):
        client_mock.get.return_value = response_sample

        service = Service(client_mock)
        response = service.get(
            response_sample.get("subscription").get("subscription_id"))

        self.assertIsInstance(response, SubscriptionResponse)
        self.assertEqual(sample.get("order_id"), str(response.order_id))
        client_mock.get.assert_called_once_with("/v1/subscriptions/{}".format(
            response_sample.get("subscription").get("subscription_id")))
Exemple #4
0
    def testCancel(self, client_mock):
        client_mock.post.return_value = response_sample

        service = Service(client_mock)
        response = service.cancel(
            response_sample.get("subscription").get("subscription_id"),
            "Cancel Message")

        self.assertIsInstance(response, SubscriptionResponse)
        self.assertEqual(sample.get("order_id"), str(response.order_id))
        client_mock.post.assert_called_once_with(
            "/v1/subscriptions/{}/cancel".format(
                response_sample.get("subscription").get("subscription_id")),
            json=unittest.mock.ANY,
        )
Exemple #5
0
    def testAll(self, client_mock):
        client_mock.get.return_value = {
            "subscriptions": [response_sample, response_sample, response_sample],
            "page": 1,
            "limit": 100,
            "total": 3,
        }

        service = Service(client_mock)
        responses = service.all()

        self.assertIsInstance(responses, ResponseList)
        self.assertEqual(1, responses.page)
        self.assertEqual(3, responses.total)
        self.assertEqual(sample.get("order_id"), str(responses[0].order_id))
Exemple #6
0
class SubscriptionIntegrationTest(VCRTestCase):
    def setUp(self) -> None:
        super(SubscriptionIntegrationTest, self).setUp()
        self.client = getnet.Client(
            os.environ.get("GETNET_SELLER_ID"),
            os.environ.get("GETNET_CLIENT_ID"),
            os.environ.get("GETNET_CLIENT_SECRET"),
            getnet.api.HOMOLOG,
        )
        self.service = Service(self.client)

        customer_service = customers.Service(self.client)
        customer = Customer(**customer_sample.copy())
        customer.customer_id = str(uuid.uuid4())
        customer.document_number = str(random())[2:13]
        self.customer = customer_service.create(customer)

        plan_service = plans.Service(self.client)
        self.plan = plan_service.create(
            plans.Plan(
                seller_id=self.client.seller_id,
                name="Plan Demo",
                description="Plan Demo",
                amount=1990,
                currency="BRL",
                product_type="service",
                period={
                    "type": "monthly",
                    "billing_cycle": 12,
                },
            ))

        self.card = Card(**card_sample.copy())

    def testCreateInvalid(self):
        card_token = self.client.generate_token_card("5155901222270002",
                                                     "customer_21081826")
        self.card.number_token = card_token

        subscription = Subscription(
            order_id="test-{}".format(str(random())[2:10]),
            customer_id=self.customer.customer_id,
            plan_id=self.plan.plan_id,
            credit=Credit(card=self.card),
        )

        response = self.service.create(subscription)

        self.assertIsInstance(response, SubscriptionResponse)
        self.assertIsNotNone(response.subscription_id)
        self.assertEqual(response.status, "failed")
        self.assertIsInstance(response.payment, PaymentErrorResponse)

    def testCreate(self):
        card_token = self.client.generate_token_card("5155901222280001",
                                                     "customer_21081826")
        self.card.number_token = card_token

        subscription = Subscription(
            order_id="test-{}".format(str(random())[2:10]),
            customer_id=self.customer.customer_id,
            plan_id=self.plan.plan_id,
            credit=Credit(card=self.card),
        )

        response = self.service.create(subscription)

        self.assertIsInstance(response, SubscriptionResponse)
        self.assertIsNotNone(response.subscription_id)
        self.assertEqual(response.status, "success")
        self.assertIsInstance(response.payment, PaymentResponse)

    def testCancel(self):
        card_token = self.client.generate_token_card("5155901222280001",
                                                     "customer_21081826")
        self.card.number_token = card_token

        response = self.service.create(
            Subscription(
                order_id="test-{}".format(str(random())[2:10]),
                customer_id=self.customer.customer_id,
                plan_id=self.plan.plan_id,
                credit=Credit(card=self.card),
            ))

        self.assertIsInstance(response, SubscriptionResponse)
        self.assertIsNotNone(response.subscription_id)
        self.assertEqual(response.status, "success")

        cancel_response = self.service.cancel(response.subscription_id,
                                              "Test Cancel")
        self.assertEqual(cancel_response.status, "canceled")