Esempio n. 1
0
    def test_expired(self):
        old = Receipt(sample).receipt_decoded()
        new = Receipt(reissue_receipt(sample)).receipt_decoded()
        for greater in ['exp', 'iat', 'nbf']:
            assert new[greater] > old[greater], (
                '{0} for new: {1} should be greater than old: {2}'.format(
                    greater, new[greater], old[greater]))

        for same in [
                'product', 'detail', 'iss', 'reissue', 'typ', 'user', 'verify'
        ]:
            eq_(new[same], old[same],
                ('{0} for new: {1} should be the same as old: {2}'.format(
                    greater, new[same], old[same])))
Esempio n. 2
0
    def test_expired(self):
        receipt_data = self.sample_app_receipt()
        curr_time = calendar.timegm(time.gmtime())
        receipt_data['iat'] = curr_time - 1000
        receipt_data['nbf'] = curr_time - 1000
        receipt_data['exp'] = curr_time
        receipt = sign(receipt_data)
        old = Receipt(receipt).receipt_decoded()
        new = Receipt(reissue_receipt(receipt)).receipt_decoded()
        for greater in ['exp', 'iat', 'nbf']:
            assert new[greater] > old[greater], (
                '{0} for new: {1} should be greater than old: {2}'.format(
                    greater, new[greater], old[greater]))

        for same in [
                'product', 'detail', 'iss', 'reissue', 'typ', 'user', 'verify'
        ]:
            eq_(new[same], old[same],
                ('{0} for new: {1} should be the same as old: {2}'.format(
                    greater, new[same], old[same])))
Esempio n. 3
0
def reissue_receipt(receipt):
    """
    Reissues and existing receipt by updating the timestamps and resigning
    the receipt. This requires a well formatted receipt, but does not verify
    the receipt contents.

    :params receipt: an existing receipt
    """
    time_ = calendar.timegm(time.gmtime())
    receipt_obj = Receipt(receipt)
    data = receipt_obj.receipt_decoded()
    data.update({
        'exp': time_ + settings.WEBAPPS_RECEIPT_EXPIRY_SECONDS,
        'iat': time_,
        'nbf': time_,
    })
    return sign(data)
Esempio n. 4
0
 def test_record_receipt(self, cef):
     r = self.post()
     ok_(Receipt(r.data['receipt']).receipt_decoded())
Esempio n. 5
0
 def test_decode(self):
     res = self.anon.post(self.url, data=self.data)
     eq_(res.status_code, 201)
     data = json.loads(res.content)
     receipt = Receipt(data['receipt'].encode('ascii')).receipt_decoded()
     eq_(receipt['typ'], u'test-receipt')
Esempio n. 6
0
 def test_record_receipt(self, cef):
     res = self.handle(self.profile)
     ok_(Receipt(res).receipt_decoded())
Esempio n. 7
0
 def test_crypto_fails(self):
     r = Receipt('{0}~{1}'.format(self.cert, self.receipt))
     self.failUnlessRaises(VerificationError, r.verify_crypto)
Esempio n. 8
0
 def test_crypto(self, rv):
     r = Receipt('{0}~{1}'.format(self.cert, self.receipt))
     ok_(r.verify_crypto())
Esempio n. 9
0
 def test_verify_fails(self, post):
     post.side_effect = VerificationError
     r = Receipt(self.receipt)
     self.failUnlessRaises(VerificationError, r.verify_server)
Esempio n. 10
0
 def test_verify(self, post):
     post.return_value = FakeResponse(json.dumps({'status': 'ok'}))
     r = Receipt(self.receipt)
     eq_(r.verify_server()['status'], 'ok')
Esempio n. 11
0
 def test_cert(self):
     r = Receipt('{0}~{1}'.format(self.cert, self.receipt))
     eq_(r.cert_decoded()['cert'], 'key')
Esempio n. 12
0
 def test_receipt(self):
     r = Receipt(self.receipt)
     eq_(r.verifier, 'y')
     eq_(r.issue, 1)
     eq_(r.expiry, 2)