示例#1
0
    def test_responses(self):
        # We're going to mock the Apple's response and put 21007 status
        with patch.object(requests, 'post') as mock_post:
            iap_status_21007 = self.iap_response.copy()
            iap_status_21007['status'] = 21007
            mock_post.return_value.content = json.dumps(
                iap_status_21007).encode('utf-8')
            mock_post.return_value.status_code = 200
            set_verification_mode('production')
            request = Request('DummyReceipt')
            try:
                request.verify()
            except exceptions.InvalidReceipt as e:
                assert e.status == 21007
                assert e.description == e._descriptions[21007]

        # We're going to return an invalid http status code
        with patch.object(requests, 'post') as mock_post:
            mock_post.return_value.content = 'Not avaliable'
            mock_post.return_value.status_code = 500
            set_verification_mode('production')
            request = Request('DummyReceipt')
            try:
                request.verify()
            except exceptions.ItunesServerNotAvailable as e:
                assert e.args[0] == 500
                assert e.args[1] == 'Not avaliable'
示例#2
0
    def test_request(self):
        sandbox_receipt = LEGACY_RAW_RECEIPT

        set_verification_mode('production')
        request = Request(sandbox_receipt)
        try:
            receipt = request.verify()
            assert False
        except exceptions.InvalidReceipt as e:
            assert e.status == 21007
            assert e.description == e._descriptions[21007]
        set_verification_mode('sandbox')
        request = Request(sandbox_receipt)
        receipt = request.verify()
        assert receipt
示例#3
0
 def test_context(self):
     sandbox_receipt = LEGACY_RAW_RECEIPT
     request = Request(sandbox_receipt, verify_ssl=True)
     configs = request.use_production, request.use_sandbox
     with request.verification_mode('production'):
         try:
             request.verify()
             assert False
         except exceptions.InvalidReceipt as e:
             assert e.status == 21007
         with request.verification_mode('review'):
             request.verify()
         try:
             request.verify()
             assert False
         except exceptions.InvalidReceipt as e:
             assert e.status == 21007
     assert configs == (request.use_production, request.use_sandbox)
示例#4
0
    def test_request(self):
        try:
            from testdata import sandbox_receipt
        except ImportError:
            print('No receipt data to test')
            return

        set_verification_mode('production')
        request = Request(sandbox_receipt)
        try:
            receipt = request.verify()
            assert False
        except exceptions.InvalidReceipt as e:
            assert e.status == 21007
            assert e.description == e._descriptions[21007]
        set_verification_mode('sandbox')
        request = Request(sandbox_receipt)
        receipt = request.verify()
        assert receipt
示例#5
0
 def test_global_mode(self):
     set_verification_mode('production')
     assert Request('').use_production is True
     assert Request('').use_sandbox is False
     set_verification_mode('sandbox')
     assert Request('').use_production is False
     assert Request('').use_sandbox is True
     set_verification_mode('reject')
     assert Request('').use_production is False
     assert Request('').use_sandbox is False
     set_verification_mode('review')
     assert Request('').use_production is True
     assert Request('').use_sandbox is True
示例#6
0
    def test_responses(self):
        # We're going to mock the Apple's response and put 21007 status
        with patch.object(requests, 'post') as mock_post:
            iap_status_21007 = self.iap_response.copy()
            iap_status_21007['status'] = 21007
            mock_post.return_value.content = json.dumps(iap_status_21007).encode('utf-8')
            mock_post.return_value.status_code = 200
            set_verification_mode('production')
            request = Request('DummyReceipt')
            try:
                request.verify()
            except exceptions.InvalidReceipt as e:
                assert e.status == 21007
                assert e.description == e._descriptions[21007]

        # We're going to return an invalid http status code
        with patch.object(requests, 'post') as mock_post:
            mock_post.return_value.content = 'Not avaliable'
            mock_post.return_value.status_code = 500
            set_verification_mode('production')
            request = Request('DummyReceipt')
            try:
                request.verify()
            except exceptions.ItunesServerNotAvailable as e:
                assert e.args[0] == 500
                assert e.args[1] == 'Not avaliable'
示例#7
0
    def test_extract_receipt(self):
        """
            Testing the extract receipt function.
            The function which helps to put the last 'in_app's fields' in the
            'receipt dictionary'
        """

        # Test IAP Response without in_app list
        request = Request('DummyReceipt', use_production=True)
        ext_receipt = request._extract_receipt(self.iap_response)

        assert ext_receipt['status'] == 0  # 0 is normal
        assert ext_receipt['receipt']['product_id'] == u'TestProduction1'
        assert ext_receipt['receipt'][
            'original_transaction_id'] == u'1000000012345678'  # original transaction id
        assert ext_receipt['receipt']['quantity'] == u'1'  # check quantity

        # Test IAP Response with in_app list
        request = Request('DummyReceipt', use_production=True)
        ext_receipt = request._extract_receipt(self.iap_response_in_app)

        assert ext_receipt['status'] == 0  # 0 is normal
        assert ext_receipt['receipt']['product_id'] == u'org.itunesiap'
        assert ext_receipt['receipt'][
            'original_transaction_id'] == u'1000000155718067'  # original transaction id
        assert ext_receipt['receipt']['quantity'] == u'1'  # check quantity
示例#8
0
 def test_context(self):
     sandbox_receipt = LEGACY_RAW_RECEIPT
     request = Request(sandbox_receipt, verify_ssl=True)
     configs = request.use_production, request.use_sandbox
     with request.verification_mode('production'):
         try:
             request.verify()
             assert False
         except exceptions.InvalidReceipt as e:
             assert e.status == 21007
         with request.verification_mode('review'):
             request.verify()
         try:
             request.verify()
             assert False
         except exceptions.InvalidReceipt as e:
             assert e.status == 21007
     assert configs == (request.use_production, request.use_sandbox)
示例#9
0
    def test_extract_receipt(self):
        """
            Testing the extract receipt function.
            The function which helps to put the last 'in_app's fields' in the
            'receipt dictionary'
        """

        # Test IAP Response without in_app list
        request = Request('DummyReceipt', use_production=True)
        ext_receipt = request._extract_receipt(self.iap_response)

        assert ext_receipt['status'] == 0  # 0 is normal
        assert ext_receipt['receipt']['product_id'] == u'TestProduction1'
        assert ext_receipt['receipt']['original_transaction_id'] == u'1000000012345678'  # original transaction id
        assert ext_receipt['receipt']['quantity'] == u'1'  # check quantity

        # Test IAP Response with in_app list
        request = Request('DummyReceipt', use_production=True)
        ext_receipt = request._extract_receipt(self.iap_response_in_app)

        assert ext_receipt['status'] == 0  # 0 is normal
        assert ext_receipt['receipt']['product_id'] == u'org.itunesiap'
        assert ext_receipt['receipt']['original_transaction_id'] == u'1000000155718067'  # original transaction id
        assert ext_receipt['receipt']['quantity'] == u'1'  # check quantity
示例#10
0
 def test_context(self):
     try:
         from testdata import sandbox_receipt
     except ImportError:
         print('No receipt data to test')
         return
     request = Request(sandbox_receipt)
     configs = request.use_production, request.use_sandbox
     with request.verification_mode('production'):
         try:
             request.verify()
             assert False
         except exceptions.InvalidReceipt as e:
             assert e.status == 21007
         with request.verification_mode('review'):
             request.verify()
         try:
             request.verify()
             assert False
         except exceptions.InvalidReceipt as e:
             assert e.status == 21007
     assert configs == (request.use_production, request.use_sandbox)
示例#11
0
    def test_request(self):
        sandbox_receipt = LEGACY_RAW_RECEIPT

        set_verification_mode('production')
        request = Request(sandbox_receipt)
        try:
            receipt = request.verify()
            assert False
        except exceptions.InvalidReceipt as e:
            assert e.status == 21007
            assert e.description == e._descriptions[21007]
        set_verification_mode('sandbox')
        request = Request(sandbox_receipt)
        receipt = request.verify()
        assert receipt