From a35e37a069701d32010b66b6c1a902f72a721318 Mon Sep 17 00:00:00 2001 From: ankitdas13 Date: Wed, 22 Feb 2023 19:30:25 +0530 Subject: [PATCH 1/5] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ad7d6625..216e9ae9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "razorpay", - "version": "2.8.5", + "version": "2.8.6", "description": "Official Node SDK for Razorpay API", "main": "dist/razorpay", "typings": "dist/razorpay", From 306a1d3a2f93c1221758f473bd116563672959ca Mon Sep 17 00:00:00 2001 From: ankitdas13 Date: Wed, 12 Jul 2023 13:26:48 +0530 Subject: [PATCH 2/5] e2e test settlement & subscription --- .github/workflows/prod_ci.yml | 32 ++++++ package.json | 3 +- test_prod/razorpay.js | 8 ++ test_prod/resources/settlements.spec.js | 35 +++++++ test_prod/resources/subscriptions.spec.js | 122 ++++++++++++++++++++++ 5 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/prod_ci.yml create mode 100644 test_prod/razorpay.js create mode 100644 test_prod/resources/settlements.spec.js create mode 100644 test_prod/resources/subscriptions.spec.js diff --git a/.github/workflows/prod_ci.yml b/.github/workflows/prod_ci.yml new file mode 100644 index 00000000..02101784 --- /dev/null +++ b/.github/workflows/prod_ci.yml @@ -0,0 +1,32 @@ +name: e2e prod test +on: + push: + branches: + - master + tags: + - v[0-9]+.[0-9]+.[0-9]+* + pull_request: + branches: + - master +jobs: + test: + name: Run tests and publish test coverage + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: Install dependencies + run: npm install + - name: Run tests + run: npm run test_prod + env: + API_KEY: ${{ secrets.API_KEY }} + API_SECRET: ${{ secrets.API_SECRET }} \ No newline at end of file diff --git a/package.json b/package.json index 03390d0a..642f7f1e 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "build": "npm run clean && npm run build:commonjs && npm run cp-ts", "debug": "npm run build && node-debug examples/index.js", "test": "npm run build && mocha --recursive --require babel-register test/ && nyc --reporter=text mocha", - "coverage": "nyc report --reporter=text-lcov > coverage.lcov" + "coverage": "nyc report --reporter=text-lcov > coverage.lcov", + "test_prod": "npm run build && mocha --timeout 10000 --recursive --require babel-register test_prod/" }, "repository": { "type": "git", diff --git a/test_prod/razorpay.js b/test_prod/razorpay.js new file mode 100644 index 00000000..52739e22 --- /dev/null +++ b/test_prod/razorpay.js @@ -0,0 +1,8 @@ +'use strict'; + +const Razorpay = require("../dist/razorpay"); + +module.exports = new Razorpay({ + key_id: process.env.API_KEY || "", + key_secret: process.env.API_SECRET || "" +}); diff --git a/test_prod/resources/settlements.spec.js b/test_prod/resources/settlements.spec.js new file mode 100644 index 00000000..91e61d58 --- /dev/null +++ b/test_prod/resources/settlements.spec.js @@ -0,0 +1,35 @@ +'use strict' + +var assert = require('assert'); +const rzpInstance = require('../razorpay') +const equal = require('deep-equal') + + +let settlementId = null; + +describe('ORDERS', () => { + + it('fetch all settlements', (done) => { + rzpInstance.settlements.all({ + count: 1 + }).then((response) => { + if (response.items.length > 0) { + settlementId = response.items[0].id + } + assert.ok(response.hasOwnProperty('entity')) + assert.ok(response.hasOwnProperty('items')) + done() + }).catch(err => console.log(err)) + }) + + it('fetch settlement', (done) => { + + rzpInstance.settlements.fetch(settlementId) + .then(response => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok((response.id == settlementId)) + done() + }).catch(err => console.log(err)) + }) + +}) diff --git a/test_prod/resources/subscriptions.spec.js b/test_prod/resources/subscriptions.spec.js new file mode 100644 index 00000000..63dfde6e --- /dev/null +++ b/test_prod/resources/subscriptions.spec.js @@ -0,0 +1,122 @@ +'use strict' + +var assert = require('assert'); +const rzpInstance = require('../razorpay') + +let subscriptionId = null; + +let setSubscriptionParam = (id) => { + return { + "plan_id": id, + "total_count": 6, + "quantity": 1, + "customer_notify": 1, + + "addons": [ + { + "item": { + "name": "Delivery charges", + "amount": 30000, + "currency": "INR" + } + } + ], + "notes": { + "notes_key_1": "Tea, Earl Grey, Hot", + "notes_key_2": "Tea, Earl Grey… decaf." + } + } +} + + +describe('Subscription', () => { + + it('create subscription', (done) => { + + rzpInstance.plans.create({ + "period": "weekly", + "interval": 1, + "item": { + "name": "Test plan - Weekly", + "amount": 69900, + "currency": "INR", + "description": "Description for the test plan" + }, + "notes": { + "notes_key_1": "Tea, Earl Grey, Hot", + "notes_key_2": "Tea, Earl Grey… decaf." + } + }).then((response) => { + return response.id + }).then((id) => { + rzpInstance.subscriptions.create(setSubscriptionParam(id)) + .then(response => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok(response.hasOwnProperty('id')) + done() + }).catch(err => console.log(err)) + }).catch(err => console.log(err)) + }) + + it('fetch all subscriptions', (done) => { + rzpInstance.subscriptions.all({"status": "active"}).then((response) => { + response.items.find(item => { + if (item.status == 'active' && item.payment_method == "card") { + console.log(item) + subscriptionId = item.id + return true + } + }) + assert.ok(response.hasOwnProperty('count')) + assert.ok(response.hasOwnProperty('items')) + done() + }).catch(err => console.log(err)) + }) + + it('fetch subscription', (done) => { + + rzpInstance.subscriptions.fetch(subscriptionId) + .then(response => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok((response.id == subscriptionId)) + done() + }).catch(err => console.log(err)) + }) + + it('edit subscription', (done) => { + + rzpInstance.subscriptions.update(subscriptionId, { + "customer_notify": 1 + }) + .then(response => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok((response.id == subscriptionId)) + done() + }).catch(err => console.log(err)) + }) + + it('pause subscription', (done) => { + + rzpInstance.subscriptions.pause(subscriptionId, { + "pause_at": "now" + }) + .then(response => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok((response.id == subscriptionId)) + done() + }).catch(err => console.log(err)) + }) + + it('resume subscription', (done) => { + + rzpInstance.subscriptions.resume(subscriptionId, { + "resume_at": "now" + }) + .then(response => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok((response.id == subscriptionId)) + done() + }).catch(err => console.log(err)) + }) + +}) From 236c1fd821cdc9a8997ee9206b89cefff2e2beb0 Mon Sep 17 00:00:00 2001 From: Ankit Das <89454448+ankitdas13@users.noreply.github.com> Date: Tue, 1 Aug 2023 16:39:48 +0530 Subject: [PATCH 3/5] Update prod_ci.yml --- .github/workflows/prod_ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prod_ci.yml b/.github/workflows/prod_ci.yml index 02101784..ec3f8e92 100644 --- a/.github/workflows/prod_ci.yml +++ b/.github/workflows/prod_ci.yml @@ -26,7 +26,7 @@ jobs: - name: Install dependencies run: npm install - name: Run tests - run: npm run test_prod + run: npm run env -- mocha --timeout 10000 --recursive --require babel-register test_prod/ env: API_KEY: ${{ secrets.API_KEY }} - API_SECRET: ${{ secrets.API_SECRET }} \ No newline at end of file + API_SECRET: ${{ secrets.API_SECRET }} From 394487a67612d1c0aec9427bae646ea3346e00dd Mon Sep 17 00:00:00 2001 From: Ankit Das <89454448+ankitdas13@users.noreply.github.com> Date: Tue, 1 Aug 2023 16:40:17 +0530 Subject: [PATCH 4/5] revert changes --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 642f7f1e..03390d0a 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,7 @@ "build": "npm run clean && npm run build:commonjs && npm run cp-ts", "debug": "npm run build && node-debug examples/index.js", "test": "npm run build && mocha --recursive --require babel-register test/ && nyc --reporter=text mocha", - "coverage": "nyc report --reporter=text-lcov > coverage.lcov", - "test_prod": "npm run build && mocha --timeout 10000 --recursive --require babel-register test_prod/" + "coverage": "nyc report --reporter=text-lcov > coverage.lcov" }, "repository": { "type": "git", From a2f71844eb949cc254007bb61b3560a081b1ddec Mon Sep 17 00:00:00 2001 From: Ankit Das <89454448+ankitdas13@users.noreply.github.com> Date: Tue, 1 Aug 2023 16:40:48 +0530 Subject: [PATCH 5/5] Update razorpay.js --- test_prod/razorpay.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/test_prod/razorpay.js b/test_prod/razorpay.js index 52739e22..5c2c49c4 100644 --- a/test_prod/razorpay.js +++ b/test_prod/razorpay.js @@ -1,8 +1,25 @@ 'use strict'; const Razorpay = require("../dist/razorpay"); +let request = require('request-promise'); -module.exports = new Razorpay({ +class RazorpayBeta extends Razorpay { + constructor(options) { + super(options) + this.api.rq = request.defaults({ + baseUrl: options.hostUrl, + json: true, + auth: { + user: options.key_id, + pass: options.key_secret + } + }) + } +} + + +module.exports = new RazorpayBeta({ key_id: process.env.API_KEY || "", - key_secret: process.env.API_SECRET || "" + key_secret: process.env.API_SECRET || "", + hostUrl : "https://api-web.dev.razorpay.in" });