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 2d8a7426240c0be5ea4aa7b0602c8a961e37e74a Mon Sep 17 00:00:00 2001 From: ankitdas13 Date: Thu, 13 Jul 2023 12:59:07 +0530 Subject: [PATCH 2/5] e2e test webhook --- .github/workflows/prod_ci.yml | 34 +++++++ package.json | 3 +- test_prod/product.js | 8 ++ test_prod/resources/webhook.spec.js | 146 ++++++++++++++++++++++++++++ 4 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/prod_ci.yml create mode 100644 test_prod/product.js create mode 100644 test_prod/resources/webhook.spec.js diff --git a/.github/workflows/prod_ci.yml b/.github/workflows/prod_ci.yml new file mode 100644 index 00000000..ff39ef6a --- /dev/null +++ b/.github/workflows/prod_ci.yml @@ -0,0 +1,34 @@ +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 }} + PRODUCT_API_KEY: ${{ secrets.PRODUCT_API_KEY }} + PRODUCT_API_SECRET: ${{ secrets.PRODUCT_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/product.js b/test_prod/product.js new file mode 100644 index 00000000..13b80cf4 --- /dev/null +++ b/test_prod/product.js @@ -0,0 +1,8 @@ +'use strict'; + +const Razorpay = require("../dist/razorpay"); + +module.exports = new Razorpay({ + key_id: process.env.PRODUCT_API_KEY || "", + key_secret: process.env.PRODUCT_API_SECRET || "" +}); diff --git a/test_prod/resources/webhook.spec.js b/test_prod/resources/webhook.spec.js new file mode 100644 index 00000000..19d9c7fd --- /dev/null +++ b/test_prod/resources/webhook.spec.js @@ -0,0 +1,146 @@ +'use strict' + +var assert = require('assert'); +const rzpInstance = require('../product') +const path = require('path') +const fs = require('fs'); +const crpyto = require('crypto') +let skipDoc = true; + +let accountId = null; +let webhookId = null; + +let setAccount = { + "email": `gauriagain.${crpyto.randomBytes(4).toString('hex')}@example.org`, + "phone": "9000090000", + "legal_business_name": "Acme Corp", + "business_type": "partnership", + "customer_facing_business_name": "Example", + "profile": { + "category": "healthcare", + "subcategory": "clinic", + "description": "Healthcare E-commerce platform", + "addresses": { + "operation": { + "street1": "507, Koramangala 6th block", + "street2": "Kormanagala", + "city": "Bengaluru", + "state": "Karnataka", + "postal_code": 560047, + "country": "IN" + }, + "registered": { + "street1": "507, Koramangala 1st block", + "street2": "MG Road", + "city": "Bengaluru", + "state": "Karnataka", + "postal_code": 560034, + "country": "IN" + } + }, + "business_model": "Online Clothing ( men, women, ethnic, modern ) fashion and lifestyle, accessories, t-shirt, shirt, track pant, shoes." + }, + "legal_info": { + "pan": "AAACL1234C", + "gst": "18AABCU9603R1ZM" + }, + "brand": { + "color": "FFFFFF" + }, + "notes": { + "internal_ref_id": "123123" + }, + "contact_name": "Gaurav Kumar", + "contact_info": { + "chargeback": { + "email": "cb@example.org" + }, + "refund": { + "email": "cb@example.org" + }, + "support": { + "email": "support@example.org", + "phone": "9999999998", + "policy_url": "https://www.google.com" + } + }, + "apps": { + "websites": [ + "https://www.example.org" + ], + "android": [ + { + "url": "playstore.example.org", + "name": "Example" + } + ], + "ios": [ + { + "url": "appstore.example.org", + "name": "Example" + } + ] + } +} + + +describe('WEBHOOK', () => { + + it('create webhook account', (done) => { + + rzpInstance.accounts.create(setAccount) + .then((response) => { + accountId = response.id + console.log(`created account id: ${accountId}`) + return accountId + }) + .then((id) => { + console.log('created id',accountId) + rzpInstance.webhooks.create({ + "url": "https://google.com", + "alert_email": "gaurav.kumar@example.com", + "secret": "12345", + "events": [ + "payment.authorized", + "payment.failed", + "payment.captured", + "payment.dispute.created", + "refund.failed", + "refund.created" + ] + },id) + .then((response)=>{ + webhookId = response.id + assert.ok(response.hasOwnProperty('id')) + assert.ok(response.hasOwnProperty('owner_type')) + done() + }).catch(err => console.log(err)) + }).catch(err => console.log(err)) + + }) + + it('fetch webhook by id', (done) => { + rzpInstance.webhooks.fetch(webhookId, accountId).then((response) => { + assert.ok(response.hasOwnProperty('id')) + assert.ok((response.id === webhookId)) + done() + }).catch(err => console.log(err)) + }) + + it('fetch all webhooks', (done) => { + rzpInstance.webhooks.all(accountId).then((response) => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok(response.hasOwnProperty('items')) + done() + }).catch(err => console.log(err)) + }) + + it('delete account', (done) => { + rzpInstance.accounts.delete(accountId).then((response) => { + console.log(`deleted account id: ${accountId}`) + assert.ok((response.id === accountId)) + assert.ok(response.hasOwnProperty('id')) + done() + }).catch(err => console.log(err)) + }) +}) \ No newline at end of file From 1c3f0c9816faa078c06aa9fe89b6372ff2073abc Mon Sep 17 00:00:00 2001 From: Ankit Das <89454448+ankitdas13@users.noreply.github.com> Date: Tue, 1 Aug 2023 16:59:55 +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 ff39ef6a..da10e07a 100644 --- a/.github/workflows/prod_ci.yml +++ b/.github/workflows/prod_ci.yml @@ -26,9 +26,9 @@ 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 }} PRODUCT_API_KEY: ${{ secrets.PRODUCT_API_KEY }} - PRODUCT_API_SECRET: ${{ secrets.PRODUCT_API_SECRET }} \ No newline at end of file + PRODUCT_API_SECRET: ${{ secrets.PRODUCT_API_SECRET }} From 24388fc1aa2b751e9a4877f537382a74b88f3546 Mon Sep 17 00:00:00 2001 From: Ankit Das <89454448+ankitdas13@users.noreply.github.com> Date: Tue, 1 Aug 2023 17:00:13 +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 532a5e8eda635b122af9c1c1ea0ef9cc646f9bb0 Mon Sep 17 00:00:00 2001 From: Ankit Das <89454448+ankitdas13@users.noreply.github.com> Date: Tue, 1 Aug 2023 17:00:55 +0530 Subject: [PATCH 5/5] Update product.js --- test_prod/product.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/test_prod/product.js b/test_prod/product.js index 13b80cf4..957e7aab 100644 --- a/test_prod/product.js +++ b/test_prod/product.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.PRODUCT_API_KEY || "", - key_secret: process.env.PRODUCT_API_SECRET || "" + key_secret: process.env.PRODUCT_API_SECRET || "", + hostUrl : "https://api-web.dev.razorpay.in" });