diff --git a/.github/workflows/prod_ci.yml b/.github/workflows/prod_ci.yml new file mode 100644 index 0000000..ec3f8e9 --- /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 env -- mocha --timeout 10000 --recursive --require babel-register test_prod/ + env: + API_KEY: ${{ secrets.API_KEY }} + API_SECRET: ${{ secrets.API_SECRET }} diff --git a/test_prod/razorpay.js b/test_prod/razorpay.js new file mode 100644 index 0000000..5c2c49c --- /dev/null +++ b/test_prod/razorpay.js @@ -0,0 +1,25 @@ +'use strict'; + +const Razorpay = require("../dist/razorpay"); +let request = require('request-promise'); + +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 || "", + hostUrl : "https://api-web.dev.razorpay.in" +}); diff --git a/test_prod/resources/qrCode.spec.js b/test_prod/resources/qrCode.spec.js new file mode 100644 index 0000000..ec01f24 --- /dev/null +++ b/test_prod/resources/qrCode.spec.js @@ -0,0 +1,70 @@ +'use strict' + +var assert = require('assert'); +const rzpInstance = require('../razorpay') +const equal = require('deep-equal') + +let qrcodeId = null; +let customerId = null; + +describe('QRCODE', () => { + + it('qrcode create request', (done) => { + + rzpInstance.customers.create({ + "name": "Gaurav Kumar", + "contact": 9123456780, + "email": "gaurav.kumar@example.com", + "fail_existing": 0, + "notes": { + "notes_key_1": "Tea, Earl Grey, Hot", + "notes_key_2": "Tea, Earl Grey… decaf." + } + }).then((response)=>{ + customerId = response.id + return customerId + }).then((id)=>{ + rzpInstance.qrCode.create({ + "type": "upi_qr", + "name": "Store_1", + "usage": "single_use", + "fixed_amount": true, + "payment_amount": 300, + "description": "For Store 1", + "customer_id": id, + "notes": { + "purpose": "Test UPI QR code notes" + } + }).then((response) => { + qrcodeId = response.id + assert.ok(response.hasOwnProperty('id')) + assert.ok(response.hasOwnProperty('entity')) + done() + }).catch(err => console.log(err)) + }).catch(err => console.log(err)) + }) + + it('fetch qrcode', (done) => { + rzpInstance.qrCode.fetch(qrcodeId).then((response) => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok((response.id === qrcodeId)) + done() + }) + }) + + it('fetch all qrcode', (done) => { + rzpInstance.qrCode.all({ count : 1 }).then((response) => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok(response.hasOwnProperty(('items'))) + done() + }) + }) + + it('close qrcode', (done) => { + rzpInstance.qrCode.close(qrcodeId).then((response) => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok((response.id === qrcodeId)) + done() + }) + }) +}) diff --git a/test_prod/resources/refund.spec.js b/test_prod/resources/refund.spec.js new file mode 100644 index 0000000..4b0ed17 --- /dev/null +++ b/test_prod/resources/refund.spec.js @@ -0,0 +1,48 @@ +'use strict' + +var assert = require('assert'); +const rzpInstance = require('../razorpay') +const equal = require('deep-equal') + +let qrcodeId = null; +let paymentData = null; + +describe('REFUND', () => { + + it('fetch all refunds', (done) => { + + rzpInstance.refunds.all({ count: 5 }) + .then((response) => { + response.items.find(item => { + if (item.payment_id) { + paymentData = item + return true + } + }) + assert.ok(response.hasOwnProperty('count')) + assert.ok(response.hasOwnProperty('items')) + done() + }).catch(err => console.log(err)) + }) + + it('fetch refund', (done) => { + rzpInstance.refunds.fetch(paymentData.id).then((response) => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok((response.id === paymentData.id)) + done() + }).catch(err => console.log(err)) + }) + + it('edit refund', (done) => { + rzpInstance.refunds.edit(paymentData.id, { + "notes": { + "notes_key_1": "Beam me up Scotty.", + "notes_key_2": "Engage" + } + }).then((response) => { + assert.ok(response.hasOwnProperty('entity')) + assert.ok((response.id === paymentData.id)) + done() + }).catch(err => console.log(err)) + }) +})