Exemple #1
0
def test_sandbox_request(raw_receipt):
    """Test sandbox receipt"""
    request = itunesiap.Request(raw_receipt)
    try:
        response = request.verify()
        assert False
    except itunesiap.exc.InvalidReceipt as e:
        assert e.status == 21007
        assert e.description == e._descriptions[21007]

    request = itunesiap.Request(raw_receipt)
    with itunesiap.env.sandbox:
        response = request.verify()
    assert response.status == 0
Exemple #2
0
def test_context(raw_receipt_legacy):
    """Test sandbox receipts with real itunes server."""
    sandbox_receipt = raw_receipt_legacy
    request = itunesiap.Request(sandbox_receipt)

    prev_env = itunesiap.env.current()
    assert prev_env != itunesiap.env.production
    with itunesiap.env.production:
        try:
            request.verify()
            assert False
        except itunesiap.exc.InvalidReceipt as e:
            assert e.status == 21007
        with itunesiap.env.review:
            request.verify()
        try:
            request.verify()
            assert False
        except itunesiap.exc.InvalidReceipt as e:
            assert e.status == 21007

    assert prev_env == itunesiap.env.current()

    with itunesiap.env.review.clone(use_sandbox=False) as env:
        assert itunesiap.env.current() == env
        assert env.use_production is True
        assert env.use_sandbox is False

    assert prev_env == itunesiap.env.current()
Exemple #3
0
def test_old_transaction_exclusion(raw_receipt_legacy):
    """Test optional old transaction exclusion parameter"""
    raw_receipt = raw_receipt_legacy
    request = itunesiap.Request(raw_receipt)
    response = request.verify(exclude_old_transactions=True,
                              env=itunesiap.env.sandbox)
    assert response.status == 0
async def test_invalid_receipt():
    request = itunesiap.Request('wrong receipt')

    with pytest.raises(itunesiap.exc.InvalidReceipt):
        await request.aioverify(env=itunesiap.env.production)

    with pytest.raises(itunesiap.exc.InvalidReceipt):
        await request.aioverify(env=itunesiap.env.sandbox)
def test_invalid_receipt():
    request = itunesiap.Request('wrong receipt')

    with itunesiap.env.production:
        with pytest.raises(itunesiap.exc.InvalidReceipt):
            request.verify()

    with itunesiap.env.sandbox:
        with pytest.raises(itunesiap.exc.InvalidReceipt):
            request.verify()
Exemple #6
0
def test_ssl_request_fail():
    """Test failure making request to itunes server """
    # We're going to return an invalid http status code
    with patch.object(requests, 'post') as mock_post:
        mock_post.side_effect = requests.exceptions.SSLError('Bad ssl')
        request = itunesiap.Request('DummyReceipt')
        try:
            request.verify(verify_request=True)
            assert False
        except itunesiap.exc.RequestError as e:
            assert type(e['exc']) == requests.exceptions.SSLError
def test_sandbox_request(raw_receipt):
    """Test sandbox receipt"""
    request = itunesiap.Request(raw_receipt)
    try:
        response = request.verify()
        assert False
    except itunesiap.exc.InvalidReceipt as e:
        assert e.status == 21007
        assert e.description == e._descriptions[21007]

    request = itunesiap.Request(raw_receipt)
    with itunesiap.env.sandbox:
        response = request.verify()
    assert response.status == 0

    """Test optional old transaction exclusion parameter"""
    request = itunesiap.Request(raw_receipt)
    with itunesiap.env.sandbox:
        response = request.verify(exclude_old_transactions=True)
    assert response.status == 0
Exemple #8
0
def test_itunes_not_available():
    """Test itunes server errors"""
    # 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
        request = itunesiap.Request('DummyReceipt')
        try:
            request.verify()
        except itunesiap.exc.ItunesServerNotAvailable as e:
            assert e[0] == 500
            assert e[1] == 'Not avaliable'
async def test_sandbox_aiorequest(raw_receipt_legacy):
    """Test sandbox receipt"""
    raw_receipt = raw_receipt_legacy
    request = itunesiap.Request(raw_receipt)
    try:
        response = await request.aioverify()
    except itunesiap.exc.InvalidReceipt as e:
        assert e.status == 21007
        assert e.description == e._descriptions[21007]
    else:
        assert False, response
    response = await request.aioverify(env=itunesiap.env.sandbox)
    assert response.status == 0
Exemple #10
0
def test_invalid_receipt():
    request = itunesiap.Request('wrong receipt')

    with pytest.raises(itunesiap.exc.InvalidReceipt):
        request.verify(env=itunesiap.env.production)

    with pytest.raises(itunesiap.exc.InvalidReceipt):
        request.verify(env=itunesiap.env.sandbox)

    try:
        itunesiap.verify('bad data')
    except itunesiap.exc.InvalidReceipt as e:
        print(e)  # __str__ test
        print(repr(e))  # __repr__ test
Exemple #11
0
def test_invalid_responses():
    """Test invalid responses error statuses"""
    # We're going to mock the Apple's response and put 21007 status
    with patch.object(requests, 'post') as mock_post:
        iap_status_21007 = 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

        request = itunesiap.Request('DummyReceipt')
        try:
            request.verify()
        except itunesiap.exc.InvalidReceipt as e:
            assert e.status == 21007
            assert e.description == e._descriptions[21007]
    import datetime

    d = itunesiap.receipt._to_datetime(u'2013-01-01T00:00:00+09:00')
    assert (d.year, d.month, d.day) == (2013, 1, 1)
    assert d.tzinfo._offset == datetime.timedelta(0, 9 * 3600)

    d = itunesiap.receipt._to_datetime(u'2013-01-01 00:00:00 Etc/GMT')
    assert (d.year, d.month, d.day) == (2013, 1, 1)
    assert d.tzinfo._utcoffset == datetime.timedelta(0)

    d = itunesiap.receipt._to_datetime(
        u'2013-01-01 00:00:00 America/Los_Angeles')
    assert (d.year, d.month, d.day) == (2013, 1, 1)
    assert d.tzinfo == pytz.timezone('America/Los_Angeles')

    with pytest.raises(ValueError):
        itunesiap.receipt._to_datetime(u'wrong date')


@pytest.mark.parametrize("object", [
    itunesiap.Request('DummyReceipt'),
    itunesiap.Response('{}'),
])
def test_repr(object):
    """Test __repr__"""
    '{0!r}'.format(object)


if __name__ == '__main__':
    pytest.main()