Skip to content

Commit

Permalink
Fix partners url replacement issue (#357)
Browse files Browse the repository at this point in the history
* Fix partners url

* set version to 6.0.0

* ID: FPCO-41454; Add test cases

* ID: FPCO-41454; Add mock for new test cases

* 6.1.1

* ID: FPCO-41454; Update package-lock

* ID: FPCO-41454; Remove package-lock
  • Loading branch information
manishprajapati52 authored Sep 3, 2024
1 parent d81cd24 commit 14da80d
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 8 deletions.
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,9 @@ This command allows user to login via partner panel.
fdk login [options]
```
#### **Command Options**
| Option | Description |
| ------------- |-------------|
| --host | API host |
| Option | Description |
| ------------- |-------------|
| --host | URL of the partners panel host or API host |
| --help | Show help |
| --verbose, -v | enable debug mode |

Expand All @@ -147,6 +147,9 @@ fdk login [options]
fdk login
```
```sh
fdk login --host partners.fynd.com
```
```sh
fdk login --host api.fynd.com
```

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gofynd/fdk-cli",
"version": "6.1.0",
"version": "6.1.1",
"main": "index.js",
"license": "MIT",
"bin": {
Expand Down
25 changes: 25 additions & 0 deletions src/__tests__/auth.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,20 @@ describe('Auth Commands', () => {
configStore.set(CONFIG_KEYS.ORGANIZATION, organizationData._id);
mock.onGet('https://api.fyndx1.de/service/application/content/_healthz').reply(200);
mock.onGet('https://api.fynd.com/service/application/content/_healthz').reply(200);
mock.onGet('https://api.jiomartpartners.com/service/application/content/_healthz').reply(200);
mock.onGet('https://api-invoice.sandbox3.fynd.engineering/service/application/content/_healthz').reply(200);
mock.onGet(`${URLS.GET_ORGANIZATION_DETAILS()}`).reply(
200,
organizationData,
);
mock.onGet('https://api.jiomartpartners.com/service/partner/partners/v1.0/organization/60afe92972b7a964de57a1d4').reply(
200,
organizationData,
);
mock.onGet('https://api-invoice.sandbox3.fynd.engineering/service/partner/partners/v1.0/organization/60afe92972b7a964de57a1d4').reply(
200,
organizationData,
);
setEnv('api.fynd.com');
configStore.set(CONFIG_KEYS.ORGANIZATION, organizationData._id);
mock.onGet(`${URLS.GET_ORGANIZATION_DETAILS()}`).reply(
Expand Down Expand Up @@ -93,6 +103,21 @@ describe('Auth Commands', () => {
'pr-4fb094006ed3a6d749b69875be0418b83238d078',
);
});
it('Passing partners URL should set api host in env', async () => {
configStore.delete(CONFIG_KEYS.AUTH_TOKEN);
await login('partners.fynd.com');
expect(configStore.get(CONFIG_KEYS.CURRENT_ENV_VALUE)).toBe('api.fynd.com');
});
it('Passing partners URL with partners in domain should set proper api host in env', async () => {
configStore.delete(CONFIG_KEYS.AUTH_TOKEN);
await login('partners.jiomartpartners.com');
expect(configStore.get(CONFIG_KEYS.CURRENT_ENV_VALUE)).toBe('api.jiomartpartners.com');
});
it('Passing partners sandbox URL should set partners api host in env', async () => {
configStore.delete(CONFIG_KEYS.AUTH_TOKEN);
await login('partners-invoice.sandbox3.fynd.engineering');
expect(configStore.get(CONFIG_KEYS.CURRENT_ENV_VALUE)).toBe('api-invoice.sandbox3.fynd.engineering');
});
it('Should exit when user selects no for organization change', async () => {
const inquirerMock = mockFunction(inquirer.prompt);
inquirerMock.mockResolvedValue({ confirmChangeOrg: 'No' });
Expand Down
18 changes: 14 additions & 4 deletions src/lib/Env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,23 @@ export default class Env {
);
}

// replace parnters to api
if (finalDomain.includes('partners')) {
finalDomain = finalDomain.replace('partners', 'api');

function replaceSubdomain(url: string) {
let finalUrl = url;
if(url.startsWith("partners.")){
finalUrl = "api." + url.split(".").slice(1).join(".");
} else
if(url.startsWith("partners-")){
finalUrl = "api-" + url.split("-").slice(1).join("-");
}
return finalUrl;
}

// replace parnters to api
finalDomain = replaceSubdomain(finalDomain);

// validate domain if it is api domain or not
if(!(finalDomain.includes('api.') || finalDomain.includes('api-'))){
if(!(finalDomain.startsWith('api.') || finalDomain.startsWith('api-'))){
throw new CommandError(
`Invalid host: Please provide a valid Fynd Platform API domain. For example: 'api.fynd.com'.`,
ErrorCodes.INVALID_INPUT.code
Expand Down

0 comments on commit 14da80d

Please sign in to comment.