UNPKG

in-app-purchase-multiple-iec

Version:

In-App-Purchase validation and subscription management for iOS, Android, Amazon, and Windows

294 lines (240 loc) 10.7 kB
var assert = require('assert'); var fs = require('fs'); var fixedPath = process.cwd() + '/test/receipts/windows'; describe('#### Windows ####', function () { it('Can validate windows in-app-purchase w/o waiting for .setup()', function (done) { var path = process.argv[process.argv.length - 1].replace('--path=', ''); if (path === 'false') { path = fixedPath; } var iap = require('../'); iap.config({ verbose: true }); iap.setup(); fs.readFile(path, function (error, data) { assert.equal(error, undefined); var receipt = data.toString(); iap.validate(iap.WINDOWS, receipt, function (error, response) { assert.equal(error, undefined); assert.equal(iap.isValidated(response), true); var data = iap.getPurchaseData(response); for (var i = 0, len = data.length; i < len; i++) { assert(data[i].productId); assert(data[i].purchaseDate); assert(data[i].expirationDate); assert(data[i].quantity); } done(); }); }); }); it('Can validate windows in-app-purchase w/ Promise & auto-service detection', function (done) { if (!Promise) { return done(); } var path = process.argv[process.argv.length - 1].replace('--path=', ''); if (path === 'false') { path = fixedPath; } var iap = require('../'); var receipt = fs.readFileSync(path, 'utf8'); var promise = iap.setup(); promise.then(function () { var val = iap.validate(receipt); val.then(function (response) { assert.equal(iap.isValidated(response), true); var data = iap.getPurchaseData(response); for (var i = 0, len = data.length; i < len; i++) { assert(data[i].productId); assert(data[i].purchaseDate); assert(data[i].expirationDate); assert(data[i].quantity); } done(); }).catch(function (error) { throw error; }); }).catch(function (error) { throw error; }); }); it('Can validate windows in-app-purchase w/ auto-service detection', function (done) { var path = process.argv[process.argv.length - 1].replace('--path=', ''); if (path === 'false') { path = fixedPath; } var iap = require('../'); iap.config({ verbose: true }); iap.setup(function (error) { assert.equal(error, undefined); fs.readFile(path, function (error, data) { assert.equal(error, undefined); var receipt = data.toString(); iap.validate(receipt, function (error, response) { assert.equal(error, undefined); assert.equal(iap.isValidated(response), true); var data = iap.getPurchaseData(response); for (var i = 0, len = data.length; i < len; i++) { assert(data[i].productId); assert(data[i].purchaseDate); assert(data[i].expirationDate); assert(data[i].quantity); } done(); }); }); }); }); it('Can validate windows in-app-purchase', function (done) { var path = process.argv[process.argv.length - 1].replace('--path=', ''); if (path === 'false') { path = fixedPath; } var iap = require('../'); iap.config({ verbose: true }); iap.setup(function (error) { assert.equal(error, undefined); fs.readFile(path, function (error, data) { assert.equal(error, undefined); var receipt = data.toString(); iap.validate(iap.WINDOWS, receipt, function (error, response) { assert.equal(error, undefined); assert.equal(iap.isValidated(response), true); var data = iap.getPurchaseData(response); for (var i = 0, len = data.length; i < len; i++) { assert(data[i].productId); assert(data[i].purchaseDate); assert(data[i].expirationDate); assert(data[i].quantity); } done(); }); }); }); }); it('Can validate windows in-app-purchase using .validateOnce() w/ auto-service detection', function (done) { var path = process.argv[process.argv.length - 1].replace('--path=', ''); if (path === 'false') { path = fixedPath; } var iap = require('../'); iap.config({ verbose: true }); iap.setup(function (error) { assert.equal(error, undefined); fs.readFile(path, function (error, data) { assert.equal(error, undefined); var receipt = data.toString(); iap.validateOnce(receipt, null, function (error, response) { assert.equal(error, undefined); assert.equal(iap.isValidated(response), true); var data = iap.getPurchaseData(response); for (var i = 0, len = data.length; i < len; i++) { assert(data[i].productId); assert(data[i].purchaseDate); assert(data[i].expirationDate); assert(data[i].quantity); } done(); }); }); }); }); it('Can validate windows in-app-purchase using .validateOnce()', function (done) { var path = process.argv[process.argv.length - 1].replace('--path=', ''); if (path === 'false') { path = fixedPath; } var iap = require('../'); iap.config({ verbose: true }); iap.setup(function (error) { assert.equal(error, undefined); fs.readFile(path, function (error, data) { assert.equal(error, undefined); var receipt = data.toString(); iap.validateOnce(iap.WINDOWS, null, receipt, function (error, response) { assert.equal(error, undefined); assert.equal(iap.isValidated(response), true); var data = iap.getPurchaseData(response); for (var i = 0, len = data.length; i < len; i++) { assert(data[i].productId); assert(data[i].purchaseDate); assert(data[i].expirationDate); assert(data[i].quantity); } done(); }); }); }); }); it('Can validate windows in-app-purchase and ignores expired item', function (done) { var path = process.argv[process.argv.length - 1].replace('--path=', ''); if (path === 'false') { path = fixedPath; } var iap = require('../'); iap.config({ verbose: true }); iap.setup(function (error) { assert.equal(error, undefined); fs.readFile(path, function (error, data) { assert.equal(error, undefined); var receipt = data.toString(); iap.validate(iap.WINDOWS, receipt, function (error, response) { assert.equal(error, undefined); assert.equal(iap.isValidated(response), true); var data = iap.getPurchaseData(response, { ignoreExpired: true }); assert.equal(data.length, 0); done(); }); }); }); }); it('Can NOT validate windows in-app-purchase with incorrect receipt w/ auto-service detection', function (done) { var path = process.argv[process.argv.length - 1].replace('--path=', ''); if (path === 'false') { path = fixedPath; } var iap = require('../'); iap.config({ verbose: true }); iap.setup(function (error) { assert.equal(error, undefined); iap.validate(iap.WINDOWS, 'fake-receipt', function (error, response) { assert(error); assert.equal(iap.isValidated(response), false); done(); }); }); }); it('Can NOT validate windows in-app-purchase with incorrect receipt', function (done) { var path = process.argv[process.argv.length - 1].replace('--path=', ''); if (path === 'false') { path = fixedPath; } var iap = require('../'); iap.config({ verbose: true }); iap.setup(function (error) { assert.equal(error, undefined); iap.validate(iap.WINDOWS, 'fake-receipt', function (error, response) { assert(error); assert.equal(iap.isValidated(response), false); done(); }); }); }); it('Can get an error response', function (done) { var path = process.argv[process.argv.length - 1].replace('--path=', ''); if (path === 'false') { path = fixedPath; } var iap = require('../'); iap.config({ verbose: true }); iap.setup(function (error) { assert.equal(error, undefined); iap.validate(iap.WINDOWS, 'fake-receipt', function (error, response) { assert(error); assert(response.status); assert(response.message); assert.equal(iap.isValidated(response), false); done(); }); }); }); });