Skip to content

Commit bf1bba0

Browse files
feat(api): Updated node-sdk to adopt Code Engine API specification changes
1 parent df8d35f commit bf1bba0

File tree

3 files changed

+158
-24
lines changed

3 files changed

+158
-24
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: Unit and Integration Tests
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
8+
# Allows you to run this workflow manually from the Actions tab
9+
workflow_dispatch:
10+
11+
jobs:
12+
unit-and-integration-tests:
13+
runs-on: ibm-x86-64-medium
14+
steps:
15+
- uses: actions/checkout@v4
16+
- uses: actions/setup-node@v4
17+
with:
18+
node-version: '22'
19+
registry-url: 'https://na.artifactory.swg-devops.com/artifactory/api/npm/wcp-tmp-ace-fr-team-npm-virtual/'
20+
cache: 'npm'
21+
- name: Run Unit Tests
22+
env:
23+
NODE_AUTH_TOKEN: ${{ secrets.ARTIFACTORY_ACCESSTOKEN }}
24+
run: |
25+
npm run clean
26+
npm install
27+
npm run build
28+
npm run test-unit
29+
npm run lint
30+
- name: Get latest domain mapping certs from api
31+
uses: actions/checkout@v4
32+
with:
33+
repository: 'coligo/api'
34+
ref: 'main'
35+
path: 'api'
36+
token: ${{ secrets.DEVOPS_GITHUB_TOKEN }}
37+
- name: Run Integration Tests
38+
env:
39+
CE_API_HOST: ${{ vars.CE_API_HOST }}
40+
CE_API_KEY: ${{ secrets.CE_TEST_API_KEY }}
41+
COS_ACCESS_KEY_ID: ${{ secrets.COS_ACCESS_KEY_ID }}
42+
COS_SECRET_ACCESS_KEY: ${{ secrets.COS_SECRET_ACCESS_KEY }}
43+
IAM_ENDPOINT: ${{ vars.IAM_ENDPOINT }}
44+
run: |
45+
echo "CODE_ENGINE_URL=https://$CE_API_HOST/v2" > code_engine_v2.env
46+
echo "CODE_ENGINE_AUTH_TYPE=iam" >> code_engine_v2.env
47+
echo "CODE_ENGINE_APIKEY=$CE_API_KEY" >> code_engine_v2.env
48+
echo "CODE_ENGINE_AUTH_URL=$IAM_ENDPOINT" >> code_engine_v2.env
49+
echo "COS_ACCESS_KEY_ID=$COS_ACCESS_KEY_ID" >> code_engine_v2.env
50+
echo "COS_SECRET_ACCESS_KEY=$COS_SECRET_ACCESS_KEY" >> code_engine_v2.env
51+
echo "CODE_ENGINE_DOMAIN_MAPPING_NAME=api-unit-test-tls.e2e-board.info" >> code_engine_v2.env
52+
echo "CODE_ENGINE_TLS_KEY_FILE_PATH=./api/test/integration/tls-files/demohero.key" >> code_engine_v2.env
53+
echo "CODE_ENGINE_TLS_CERT_FILE_PATH=./api/test/integration/tls-files/demohero.crt" >> code_engine_v2.env
54+
./scripts/get-dependencies.sh # get api repo for access to latest domain mapping cert
55+
npm run test-integration
56+

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ibm-cloud/ibm-code-engine-sdk",
3-
"version": "4.33.0",
3+
"version": "4.33.1",
44
"description": "IBM Cloud Code Engine NodeJS SDK",
55
"repository": {
66
"type": "git",

test/integration/v2.test.js

Lines changed: 101 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1231,10 +1231,10 @@ describe('CodeEngineV2_integration', () => {
12311231
const params = {
12321232
projectId: e2eTestProjectId,
12331233
format: 'hmac_auth',
1234-
name: 'my-ha-secret',
1234+
name: 'ce-api-int-test-hmac-secret',
12351235
data: {
1236-
'access_key_id': 'access-key-id',
1237-
'secret_access_key': 'secret-access-key',
1236+
'access_key_id': process.env.COS_ACCESS_KEY_ID,
1237+
'secret_access_key': process.env.COS_SECRET_ACCESS_KEY,
12381238
},
12391239
};
12401240

@@ -1247,7 +1247,7 @@ describe('CodeEngineV2_integration', () => {
12471247
test('getHMACAuthSecret()', async () => {
12481248
const params = {
12491249
projectId: e2eTestProjectId,
1250-
name: 'my-ha-secret',
1250+
name: 'ce-api-int-test-hmac-secret',
12511251
};
12521252

12531253
const res = await codeEngineService.getSecret(params);
@@ -1256,24 +1256,6 @@ describe('CodeEngineV2_integration', () => {
12561256
expect(res.result).toBeDefined();
12571257
});
12581258

1259-
test('replaceHMACAuthSecret()', async () => {
1260-
const params = {
1261-
projectId: e2eTestProjectId,
1262-
name: 'my-ha-secret',
1263-
ifMatch: '*',
1264-
data: {
1265-
'access_key_id': 'access-key-id-2',
1266-
'secret_access_key': 'secret-access-key-2',
1267-
},
1268-
format: 'hmac_auth',
1269-
};
1270-
1271-
const res = await codeEngineService.replaceSecret(params);
1272-
expect(res).toBeDefined();
1273-
expect(res.status).toBe(200);
1274-
expect(res.result).toBeDefined();
1275-
});
1276-
12771259
test('createRegistrySecret()', async () => {
12781260
const params = {
12791261
projectId: e2eTestProjectId,
@@ -1342,6 +1324,102 @@ describe('CodeEngineV2_integration', () => {
13421324
expect(res.result).toBeDefined();
13431325
});
13441326

1327+
test('listPersistentDataStore()', async () => {
1328+
const params = {
1329+
projectId: e2eTestProjectId,
1330+
limit: 100,
1331+
};
1332+
1333+
const res = await codeEngineService.listPersistentDataStore(params);
1334+
expect(res).toBeDefined();
1335+
expect(res.status).toBe(200);
1336+
expect(res.result).toBeDefined();
1337+
});
1338+
1339+
test('listPersistentDataStore() via PersistentDataStorePager', async () => {
1340+
const params = {
1341+
projectId: e2eTestProjectId,
1342+
limit: 100,
1343+
};
1344+
1345+
const allResults = [];
1346+
1347+
// Test getNext().
1348+
let pager = new CodeEngineV2.PersistentDataStorePager(codeEngineService, params);
1349+
while (pager.hasNext()) {
1350+
const nextPage = await pager.getNext();
1351+
expect(nextPage).not.toBeNull();
1352+
allResults.push(...nextPage);
1353+
}
1354+
1355+
// Test getAll().
1356+
pager = new CodeEngineV2.PersistentDataStorePager(codeEngineService, params);
1357+
const allItems = await pager.getAll();
1358+
expect(allItems).not.toBeNull();
1359+
expect(allItems).toHaveLength(allResults.length);
1360+
console.log(`Retrieved a total of ${allResults.length} items(s) with pagination.`);
1361+
});
1362+
1363+
test('createPersistentDataStore()', async () => {
1364+
const params = {
1365+
projectId: e2eTestProjectId,
1366+
name: 'my-persistent-data-store',
1367+
storageType: 'object_storage',
1368+
data: {
1369+
'bucket_location': 'eu-de',
1370+
'bucket_name': 'e2e-api-bucket-eu-de',
1371+
'secret_name': 'ce-api-int-test-hmac-secret',
1372+
},
1373+
};
1374+
1375+
const res = await codeEngineService.createPersistentDataStore(params);
1376+
expect(res).toBeDefined();
1377+
expect(res.status).toBe(201);
1378+
expect(res.result).toBeDefined();
1379+
});
1380+
1381+
test('getPersistentDataStore()', async () => {
1382+
const params = {
1383+
projectId: e2eTestProjectId,
1384+
name: 'my-persistent-data-store',
1385+
};
1386+
1387+
const res = await codeEngineService.getPersistentDataStore(params);
1388+
expect(res).toBeDefined();
1389+
expect(res.status).toBe(200);
1390+
expect(res.result).toBeDefined();
1391+
});
1392+
1393+
test('deletePersistentDataStore()', async () => {
1394+
const params = {
1395+
projectId: e2eTestProjectId,
1396+
name: 'my-persistent-data-store',
1397+
};
1398+
1399+
const res = await codeEngineService.deletePersistentDataStore(params);
1400+
expect(res).toBeDefined();
1401+
expect(res.status).toBe(202);
1402+
expect(res.result).toBeDefined();
1403+
});
1404+
1405+
test('replaceHMACAuthSecret()', async () => {
1406+
const params = {
1407+
projectId: e2eTestProjectId,
1408+
name: 'ce-api-int-test-hmac-secret',
1409+
ifMatch: '*',
1410+
data: {
1411+
'access_key_id': 'access-key-id-2',
1412+
'secret_access_key': 'secret-access-key-2',
1413+
},
1414+
format: 'hmac_auth',
1415+
};
1416+
1417+
const res = await codeEngineService.replaceSecret(params);
1418+
expect(res).toBeDefined();
1419+
expect(res.status).toBe(200);
1420+
expect(res.result).toBeDefined();
1421+
});
1422+
13451423
test('createDomainMapping()', async () => {
13461424
// ComponentRef
13471425
const componentRefModel = {
@@ -1671,7 +1749,7 @@ describe('CodeEngineV2_integration', () => {
16711749
test('deleteHMACAuthSecret()', async () => {
16721750
const params = {
16731751
projectId: e2eTestProjectId,
1674-
name: 'my-ha-secret',
1752+
name: 'ce-api-int-test-hmac-secret',
16751753
};
16761754

16771755
const res = await codeEngineService.deleteSecret(params);

0 commit comments

Comments
 (0)