Skip to content

Commit 2375f77

Browse files
feat: add api key template api call for usage panel (#851)
* feat: add api key template api call for usage panel J:ORG-659 * chore: fix build * chore: fix build * chore: replace url by fetch by id * chore: fix test * chore: fix build * Update src/resources/ApiKeyTemplate/ApiKeyTemplateInterface.ts Co-authored-by: Gaël Dostie <[email protected]> * Update src/resources/ApiKeyTemplate/ApiKeyTemplate.ts Co-authored-by: Gaël Dostie <[email protected]> * Apply suggestions from code review Co-authored-by: Gaël Dostie <[email protected]> * chore: apply pr comments * chore: fix build * Update src/resources/ApiKeyTemplate/test/ApiKeyTemplate.spec.ts Co-authored-by: Gaël Dostie <[email protected]> --------- Co-authored-by: Gaël Dostie <[email protected]>
1 parent 2d6cbc4 commit 2375f77

File tree

6 files changed

+71
-0
lines changed

6 files changed

+71
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import Resource from "../Resource.js";
2+
import { ApiKeyTemplateModel } from "./ApiKeyTemplateInterface.js";
3+
4+
export default class ApiKeyTemplate extends Resource {
5+
static baseUrl = '/rest/templates/apikeys'
6+
7+
get(apiKeyTemplateId:string) {
8+
return this.api.get<ApiKeyTemplateModel[]>(`${ApiKeyTemplate.baseUrl}/${apiKeyTemplateId}`)
9+
}
10+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { PrivilegeModel } from "../BaseInterfaces.js";
2+
3+
export interface ApiKeyTemplateModel {
4+
/**
5+
* The unique identifier of the API key template.
6+
*/
7+
id?: string;
8+
/**
9+
* The displaye name of the Api key template.
10+
*/
11+
displayName?: string;
12+
/**
13+
* The descirption of the Api key template.
14+
*/
15+
description?: string;
16+
/**
17+
* A set of IP addresses allowed to use the Api key template.
18+
*/
19+
allowedIps?: string[];
20+
/**
21+
* A set of IP addresses that will be denied access when attempting to use the API key template.
22+
*/
23+
deniedIps?: string[];
24+
/**
25+
* A set of privileges binded to an api key template.
26+
*/
27+
privileges?: PrivilegeModel[];
28+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from './ApiKeyTemplate.js';
2+
export * from './ApiKeyTemplateInterface.js';
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import API from '../../../APICore.js';
2+
3+
import ApiKeyTemplate from '../ApiKeyTemplate.js';
4+
5+
jest.mock('../../../APICore.js');
6+
7+
const APIMock: jest.Mock<API> = API as any;
8+
9+
describe('ApiKeyTemplateModel', () => {
10+
let apiKeyTemplate: ApiKeyTemplate;
11+
const api = new APIMock() as jest.Mocked<API>;
12+
const serverlessApi = new APIMock() as jest.Mocked<API>;
13+
14+
beforeEach(() => {
15+
jest.clearAllMocks();
16+
apiKeyTemplate = new ApiKeyTemplate(api, serverlessApi);
17+
});
18+
19+
describe('get', () => {
20+
it('should make a GET call to the ApiKeys at the keyPurpose', async () => {
21+
const apiKeyTemplateToGetId = 'ApikeyTemplate-to-be-fetched';
22+
await apiKeyTemplate.get(apiKeyTemplateToGetId);
23+
expect(api.get).toHaveBeenCalledTimes(1);
24+
expect(api.get).toHaveBeenCalledWith(`${ApiKeyTemplate.baseUrl}/${apiKeyTemplateToGetId}`);
25+
});
26+
});
27+
});

src/resources/PlatformResources.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,12 @@ import Project from './Projects/Project.js';
5454
import Resources from './Resources/Resources.js';
5555
import CatalogContent from './Catalogs/CatalogContent.js';
5656
import Properties from './AnalyticsAdmin/Properties/Properties.js';
57+
import ApiKeyTemplate from './ApiKeyTemplate/ApiKeyTemplate.js';
5758

5859
const resourcesMap: Array<{key: string; resource: typeof Resource}> = [
5960
{key: 'activity', resource: Activity},
6061
{key: 'apiKey', resource: ApiKey},
62+
{key: 'apiKeyTemplate', resource: ApiKeyTemplate},
6163
{key: 'aws', resource: AWS},
6264
{key: 'caseAssistConfig', resource: CaseAssistConfig},
6365
{key: 'catalog', resource: Catalog},
@@ -120,6 +122,7 @@ class PlatformResources {
120122

121123
activity: Activity;
122124
apiKey: ApiKey;
125+
apiKeyTemplate: ApiKeyTemplate;
123126
aws: AWS;
124127
caseAssistConfig: CaseAssistConfig;
125128
catalog: Catalog;

src/resources/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export {default as Resource} from './Resource.js';
22

33
export * from './Activities/index.js';
44
export * from './ApiKeys/index.js';
5+
export * from './ApiKeyTemplate/index.js';
56
export * from './AWS/index.js';
67
export * from './BaseInterfaces.js';
78
export * from './CaseAssistConfigs/index.js';

0 commit comments

Comments
 (0)