From 8b8a8adf04971f851594f1f89fe0a61e89e064c2 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 14 May 2025 11:47:51 +0530 Subject: [PATCH 1/9] Update base URL path logic in contentstackClient to handle when region and host not provided --- lib/contentstackClient.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/contentstackClient.js b/lib/contentstackClient.js index 356e725..7b99522 100644 --- a/lib/contentstackClient.js +++ b/lib/contentstackClient.js @@ -31,6 +31,10 @@ export default function contentstackClient ({ http }) { if (region && region !== Region.NA) { baseUrlPath = `https://${region}-api.contentstack.com:443/v3/user-session` + } else if (!region && http.defaults.host) { + baseUrlPath = `https://${http.defaults.host}:443/v3/user-session` + } else { + baseUrlPath = `https://api.contentstack.io:443/v3/user-session` } function login (requestBody, params = {}) { From 93376baa0ae3f61a0d365cd9c9b807ff583649e1 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 14 May 2025 12:04:08 +0530 Subject: [PATCH 2/9] Bump version to 1.3.0 and update axios dependency to 1.8.3; fix encoding in sanity report file read --- package-lock.json | 12 ++++++------ package.json | 4 ++-- sanity-report-dev11.js | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index b7caa3e..40cf9b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "@contentstack/marketplace-sdk", - "version": "1.2.6", + "version": "1.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@contentstack/marketplace-sdk", - "version": "1.2.6", + "version": "1.3.0", "license": "MIT", "dependencies": { - "axios": "^1.8.2" + "axios": "^1.8.3" }, "devDependencies": { "@babel/cli": "^7.26.4", @@ -4180,9 +4180,9 @@ } }, "node_modules/axios": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.2.tgz", - "integrity": "sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", diff --git a/package.json b/package.json index cedd39c..0c4cec3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/marketplace-sdk", - "version": "1.2.6", + "version": "1.3.0", "description": "The Contentstack Marketplace SDK is used to manage the content of your Contentstack marketplace apps", "main": "./dist/node/contentstack-marketplace.js", "browser": "./dist/web/contentstack-marketplace.js", @@ -92,6 +92,6 @@ "webpack-merge": "4.2.2" }, "dependencies": { - "axios": "^1.8.2" + "axios": "^1.8.3" } } diff --git a/sanity-report-dev11.js b/sanity-report-dev11.js index a726572..0c1ec34 100644 --- a/sanity-report-dev11.js +++ b/sanity-report-dev11.js @@ -10,7 +10,7 @@ const user4 = process.env.USER4; const mochawesomeJsonOutput = fs.readFileSync( "./mochawesome-report/mochawesome.json", - "utf-8" + "utf8" ); const mochawesomeReport = JSON.parse(mochawesomeJsonOutput); From c53a93ebce1812113dab3bc9b78dfc1e68e4feed Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 14 May 2025 12:04:21 +0530 Subject: [PATCH 3/9] Fix encoding in mochawesome report file read and include region in Slack message header --- sanity-report.mjs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sanity-report.mjs b/sanity-report.mjs index 9e73180..2b775e5 100644 --- a/sanity-report.mjs +++ b/sanity-report.mjs @@ -5,7 +5,7 @@ import fs from 'fs' dotenv.config() -const mochawesomeJsonOutput = fs.readFileSync('./mochawesome-report/mochawesome.json', 'utf-8') +const mochawesomeJsonOutput = fs.readFileSync('./mochawesome-report/mochawesome.json', 'utf8') const mochawesomeReport = JSON.parse(mochawesomeJsonOutput) const report = `./mochawesome-report/sanity-report.html` @@ -25,8 +25,16 @@ console.log(`Failed Tests: ${failedTests}`) console.log(`Pending Tests: ${pendingTests}`) console.log(`Total Duration: ${durationInMinutes}m ${durationInSeconds.toFixed(2)}s`) +const host = process.env.DEFAULTHOST || '' +let region = 'AWS-NA' + +const match = host.match(/^([^-]+(?:-[^-]+)*)-api/) +if (match && match[1]) { + region = match[1].toUpperCase() +} + const slackMessage = ` -*JavaScript Marketplace SDK Report* +*JavaScript Marketplace SDK Report - ${region}* • Total Suites: *${totalSuites}* • Total Tests: *${totalTests}* • Passed Tests: *${passedTests}* From 90774fef56c0704edb5e4584d4d899e69181800a Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 14 May 2025 12:06:47 +0530 Subject: [PATCH 4/9] Update CHANGELOG for v1.3.0 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d6d5f7..d883792 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ # Changelog + +## [v1.3.0](https://github.com/contentstack/contentstack-marketplace-sdk/tree/v1.2.6) (2024-05-14) + - Fixed base URL path logic in contentstackClient to handle when region and host not provided + ## [v1.2.6](https://github.com/contentstack/contentstack-marketplace-sdk/tree/v1.2.6) (2024-03-03) - Update sanity tests From a9178cdc8441c97c06368681a95f2b0bc2046534 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 14 May 2025 13:21:26 +0530 Subject: [PATCH 5/9] update unit test cases --- test/unit/ContentstackClient-test.js | 8 ++++---- test/unit/concurrency-Queue-test.js | 19 ++++++------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/test/unit/ContentstackClient-test.js b/test/unit/ContentstackClient-test.js index 7bd42a1..7608cff 100644 --- a/test/unit/ContentstackClient-test.js +++ b/test/unit/ContentstackClient-test.js @@ -8,7 +8,7 @@ var host = 'http://localhost/' describe('Contentstack Client', () => { beforeEach(function () { - host = 'http://localhost/' + host = 'localhost' axios.defaults.host = host axios.defaults.adapter = 'http' }) @@ -21,7 +21,7 @@ describe('Contentstack Client', () => { it('Contentstack Client login success', done => { var mock = new MockAdapter(axios) - mock.onPost('/user-session').reply(200, { + mock.onPost('https://localhost:443/v3/user-session').reply(200, { user: { authtoken: 'Test Auth' } @@ -37,7 +37,7 @@ describe('Contentstack Client', () => { it('Contentstack Client Logout with Authtoken', done => { var mock = new MockAdapter(axios) - mock.onDelete('/user-session').reply(200, { + mock.onDelete('https://localhost:443/v3/user-session').reply(200, { notice: 'You\'ve logged out successfully' }) ContentstackClient({ http: axios }) @@ -51,7 +51,7 @@ describe('Contentstack Client', () => { it('Contentstack Client Logout', done => { var mock = new MockAdapter(axios) - mock.onDelete('/user-session').reply(200, { + mock.onDelete('https://localhost:443/v3/user-session').reply(200, { notice: 'You\'ve logged out successfully' }) axios.defaults.headers = { diff --git a/test/unit/concurrency-Queue-test.js b/test/unit/concurrency-Queue-test.js index 36550d1..e866e1b 100644 --- a/test/unit/concurrency-Queue-test.js +++ b/test/unit/concurrency-Queue-test.js @@ -130,22 +130,15 @@ describe('Concurrency queue test', () => { }) it('Refresh Token on 401 with 1000 concurrent request', done => { - var mock = new MockAdapter(axios) - mock.onPost('/user-session').reply(200, { - token - }) - const axiosClient = client({ - baseURL: `${host}:${port}`, - authorization: 'Bearer ', + const axiosClient = client({ + baseURL: `${host}:${port}`, + authorization: 'Bearer ', logHandler: logHandlerStub, refreshToken: () => { - return new Promise((resolve, reject) => { - return contentstackClient({ http: axios }).login().then((res) => { - resolve({ authorization: res.token }) - }).catch((error) => { - reject(error) + return Axios.post(`${host}:${port}/user-session`) + .then((res) => { + return { authorization: res.data.token } }) - }) } }) Promise.all(sequence(1003).map(() => axiosClient.axiosInstance.get('/unauthorized'))) From 13ddc62b322b55ca9e95ebd25dec09272ab57284 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 14 May 2025 16:59:01 +0530 Subject: [PATCH 6/9] Add region-specific login tests for Contentstack Client --- test/unit/ContentstackClient-test.js | 87 +++++++++++++++++++++++----- 1 file changed, 72 insertions(+), 15 deletions(-) diff --git a/test/unit/ContentstackClient-test.js b/test/unit/ContentstackClient-test.js index 7608cff..6212e6b 100644 --- a/test/unit/ContentstackClient-test.js +++ b/test/unit/ContentstackClient-test.js @@ -4,7 +4,27 @@ import { expect } from 'chai' import { describe, it, beforeEach } from 'mocha' import MockAdapter from 'axios-mock-adapter' import Region from '../../lib/core/region' -var host = 'http://localhost/' +var host = 'localhost' + +describe('Region Test ', () => { + it('Contentstack Client login success with region NA', done => { + var mock = new MockAdapter(axios) + axios.defaults.region = Region.NA + mock.onPost('https://api.contentstack.io:443/v3/user-session').reply(200, { + user: { + authtoken: 'Test Auth' + } + }) + + ContentstackClient({ http: axios }) + .login() + .then((response) => { + expect(response.user.authtoken).to.be.equal('Test Auth') + done() + }) + .catch(done) + }) +}) describe('Contentstack Client', () => { beforeEach(function () { @@ -101,20 +121,57 @@ describe('Contentstack Client', () => { done() }) - it('Contentstack Client login success with region', done => { - var mock = new MockAdapter(axios) - axios.defaults.region = Region.AZURE_NA - mock.onPost('https://azure-na-api.contentstack.com:443/v3/user-session').reply(200, { - user: { - authtoken: 'Test Auth' - } + it('Contentstack Client login success with region AZURE-NA', done => { + var mock = new MockAdapter(axios) + axios.defaults.region = Region.AZURE_NA + mock.onPost('https://azure-na-api.contentstack.com:443/v3/user-session').reply(200, { + user: { + authtoken: 'Test Auth' + } + }) + + ContentstackClient({ http: axios }) + .login() + .then((response) => { + expect(response.user.authtoken).to.be.equal('Test Auth') + done() }) - ContentstackClient({ http: axios }) - .login() - .then((response) => { - expect(response.user.authtoken).to.be.equal('Test Auth') - done() - }) - .catch(done) + .catch(done) + }) + + it('Contentstack Client login success with region AZURE-EU', done => { + var mock = new MockAdapter(axios) + axios.defaults.region = Region.AZURE_EU + mock.onPost('https://azure-eu-api.contentstack.com:443/v3/user-session').reply(200, { + user: { + authtoken: 'Test Auth' + } + }) + + ContentstackClient({ http: axios }) + .login() + .then((response) => { + expect(response.user.authtoken).to.be.equal('Test Auth') + done() + }) + .catch(done) + }) + + it('Contentstack Client login success with region GCP-NA', done => { + var mock = new MockAdapter(axios) + axios.defaults.region = Region.GCP_NA + mock.onPost('https://gcp-na-api.contentstack.com:443/v3/user-session').reply(200, { + user: { + authtoken: 'Test Auth' + } + }) + + ContentstackClient({ http: axios }) + .login() + .then((response) => { + expect(response.user.authtoken).to.be.equal('Test Auth') + done() + }) + .catch(done) }) }) From 6e36896bafce6e7451d2793c1321664923d81808 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 14 May 2025 18:15:14 +0530 Subject: [PATCH 7/9] Update version to 1.2.7 in package.json, package-lock.json, and CHANGELOG; modify region variable in sanity-report.mjs --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- sanity-report.mjs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d883792..6ab4efd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [v1.3.0](https://github.com/contentstack/contentstack-marketplace-sdk/tree/v1.2.6) (2024-05-14) +## [v1.2.7](https://github.com/contentstack/contentstack-marketplace-sdk/tree/v1.2.6) (2024-05-15) - Fixed base URL path logic in contentstackClient to handle when region and host not provided ## [v1.2.6](https://github.com/contentstack/contentstack-marketplace-sdk/tree/v1.2.6) (2024-03-03) diff --git a/package-lock.json b/package-lock.json index 40cf9b3..f077d0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@contentstack/marketplace-sdk", - "version": "1.3.0", + "version": "1.2.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@contentstack/marketplace-sdk", - "version": "1.3.0", + "version": "1.2.7", "license": "MIT", "dependencies": { "axios": "^1.8.3" diff --git a/package.json b/package.json index 0c4cec3..ae09f59 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/marketplace-sdk", - "version": "1.3.0", + "version": "1.2.7", "description": "The Contentstack Marketplace SDK is used to manage the content of your Contentstack marketplace apps", "main": "./dist/node/contentstack-marketplace.js", "browser": "./dist/web/contentstack-marketplace.js", diff --git a/sanity-report.mjs b/sanity-report.mjs index 2b775e5..9fcd909 100644 --- a/sanity-report.mjs +++ b/sanity-report.mjs @@ -26,7 +26,7 @@ console.log(`Pending Tests: ${pendingTests}`) console.log(`Total Duration: ${durationInMinutes}m ${durationInSeconds.toFixed(2)}s`) const host = process.env.DEFAULTHOST || '' -let region = 'AWS-NA' +let region = 'NA' const match = host.match(/^([^-]+(?:-[^-]+)*)-api/) if (match && match[1]) { From fe4e66825ee5260b617a14e5385e6a6fa4abfe95 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Wed, 14 May 2025 18:34:55 +0530 Subject: [PATCH 8/9] add optional chaining for http.defaults.host in contentstackClient --- lib/contentstackClient.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/contentstackClient.js b/lib/contentstackClient.js index 7b99522..7947011 100644 --- a/lib/contentstackClient.js +++ b/lib/contentstackClient.js @@ -31,7 +31,7 @@ export default function contentstackClient ({ http }) { if (region && region !== Region.NA) { baseUrlPath = `https://${region}-api.contentstack.com:443/v3/user-session` - } else if (!region && http.defaults.host) { + } else if (!region && http?.defaults?.host) { baseUrlPath = `https://${http.defaults.host}:443/v3/user-session` } else { baseUrlPath = `https://api.contentstack.io:443/v3/user-session` From 459767440f4d0cd3b4389b7681e8341970c49f56 Mon Sep 17 00:00:00 2001 From: "harshitha.d" Date: Thu, 15 May 2025 11:24:15 +0530 Subject: [PATCH 9/9] fix: update checksum for package-lock.json in .talismanrc --- .talismanrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.talismanrc b/.talismanrc index afb99a8..3fca841 100644 --- a/.talismanrc +++ b/.talismanrc @@ -6,7 +6,7 @@ fileignoreconfig: - filename: test/unit/mock/execution-mock.js checksum: 89d239d37c9d8d0cdb6ac61553a7d2e2d9115a10207f7c0b387c3565c9cb6564 - filename: package-lock.json - checksum: 0f9b6180aa8b66fdd055ef99f74f269febb07e90bbd64badf1039a4d375850b6 + checksum: bc3cbd474a69321d97be9557ef74a056b7fab4111869d496b0d0403c1c84b971 - filename: docdash-template/fixtures/documents/probe.js checksum: e841ecf889d0e82367c53c48ee0b3be8bd68d7babf4777a87ced769f29686ac4 - filename: docdash-template/.travis.yml