UNPKG

@mindconnect/mindconnect-nodejs

Version:

NodeJS Library for Siemens Insights Hub Connectivity - TypeScript SDK for Insights Hub and Industrial IoT - Command Line Interface - Insights Hub Development Proxy (Siemens Insights Hub was formerly known as MindSphere)

136 lines 9.29 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); // Copyright (C), Siemens AG 2017 const chai = require("chai"); const mocha_1 = require("mocha"); const nock = require("nock"); require("url-search-params-polyfill"); const sdk_1 = require("../src/api/sdk/"); const utils_1 = require("../src/api/utils"); const test_utils_1 = require("./test-utils"); chai.should(); describe("[SDK] Credential Auth", () => { const auth = (0, utils_1.loadAuth)(); beforeEach(() => { nock.cleanAll(); }); afterEach(() => { nock.cleanAll(); }); (0, mocha_1.it)("should acquire token @sanity @s4f", () => __awaiter(void 0, void 0, void 0, function* () { const sdk = new sdk_1.MindSphereSdk(Object.assign(Object.assign({}, auth), { basicAuth: (0, utils_1.decrypt)(auth, (0, test_utils_1.getPasskeyForUnitTest)()) })); const agentManagement = sdk.GetAgentManagementClient(); const token = yield agentManagement.GetToken(); token.should.not.be.undefined; })); (0, mocha_1.it)("should validate token during key rotation", (0, test_utils_1.mochaAsync)(() => __awaiter(void 0, void 0, void 0, function* () { const sdk = new sdk_1.MindSphereSdk(Object.assign(Object.assign({}, auth), { basicAuth: (0, utils_1.decrypt)(auth, (0, test_utils_1.getPasskeyForUnitTest)()) })); const agentManagement = sdk.GetAgentManagementClient(); nock(`https://${sdk.GetTenant()}.piam.eu1.mindsphere.io:443`, { allowUnmocked: true, }) .get("/token_keys") .once() .reply(200, { keys: [ { kty: "RSA", e: "AQAB", use: "sig", kid: "key-id-3", alg: "RS256", value: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy2HAjZ9NX9EwatR7QgUk\nomMSUK/zhdKBkU1VwJUUDFNAhtUILd0yULVczPCa+gjfnW+xSpXOigfn5lw4bEiR\nFA7Xly8I0hPD0hUK0Dgl2nwkHi8J61p+q8uAHq9AQQmV1lS+rNH6u64V2gu6QIED\ndeQ3CcfFkROkus66rxfp9w9CiM7WudJKrSBRoYeA2pnP2axh1jLZJni6JA3/NhDR\nqvKLUsfMyukaBzB0FcJE++iyh0i+3Rl1hkq5/H3BECF2PHTfK2afZlN6Kg1+3u5v\nVXZZ0cun4JttxtkEMqBau3sdx5LtoHRaGIO0EYgmzHk4+sLC8mweSruuSnUK7ZVg\nRQIDAQAB\n-----END PUBLIC KEY-----", n: "AMthwI2fTV_RMGrUe0IFJKJjElCv84XSgZFNVcCVFAxTQIbVCC3dMlC1XMzwmvoI351vsUqVzooH5-ZcOGxIkRQO15cvCNITw9IVCtA4Jdp8JB4vCetafqvLgB6vQEEJldZUvqzR-ruuFdoLukCBA3XkNwnHxZETpLrOuq8X6fcPQojO1rnSSq0gUaGHgNqZz9msYdYy2SZ4uiQN_zYQ0aryi1LHzMrpGgcwdBXCRPvosodIvt0ZdYZKufx9wRAhdjx03ytmn2ZTeioNft7ub1V2WdHLp-CbbcbZBDKgWrt7HceS7aB0WhiDtBGIJsx5OPrCwvJsHkq7rkp1Cu2VYEU", }, { kty: "RSA", e: "AQAB", use: "sig", kid: "key-id-4", alg: "RS256", value: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHR/ozntSL7UvB0B2zlV\nfj1DoO5IlFLc9Mn9g73DElwSNcWf2cjlSPfjaDj9J602Wm4tI/aqm1CdbhvYzHd8\n9yHdDlQWmFjdsTeA8um6E3e3xIaYBa/RKbbGdSxEC33boAWXdFWsxPGyHkGyKxqv\n8H0Lj2xZSv/LsMO5XCro/+DNl4y/KDUL+gJF6JkSklmVwcnFeCMHi93SD3Bxbqsq\njLUxpypYII2X1AtIjK1HvWeJPiQEYnCxbfYMZsDmCg80HKfc+PTcZD5ZZu30YwhE\nBUFCbmH/GUsbIkIXBb9+GpfecVagHYGPpW3eBzn9cWeqA/CHXafpZfk3yw/RMPAe\nOQIDAQAB\n-----END PUBLIC KEY-----", n: "AMh0f6M57Ui-1LwdAds5VX49Q6DuSJRS3PTJ_YO9wxJcEjXFn9nI5Uj342g4_SetNlpuLSP2qptQnW4b2Mx3fPch3Q5UFphY3bE3gPLpuhN3t8SGmAWv0Sm2xnUsRAt926AFl3RVrMTxsh5Bsisar_B9C49sWUr_y7DDuVwq6P_gzZeMvyg1C_oCReiZEpJZlcHJxXgjB4vd0g9wcW6rKoy1MacqWCCNl9QLSIytR71niT4kBGJwsW32DGbA5goPNByn3Pj03GQ-WWbt9GMIRAVBQm5h_xlLGyJCFwW_fhqX3nFWoB2Bj6Vt3gc5_XFnqgPwh12n6WX5N8sP0TDwHjk", }, ], }); const token = yield agentManagement.GetToken(); token.should.not.be.undefined; }))); (0, mocha_1.it)("should use correct URL in tests @sanity @s4f", () => { const sdk = new sdk_1.MindSphereSdk(Object.assign(Object.assign({}, auth), { basicAuth: (0, utils_1.decrypt)(auth, (0, test_utils_1.getPasskeyForUnitTest)()) })); const url = sdk.GetGateway().replace("gateway", `${sdk.GetTenant()}.piam`); url.should.contain(".piam."); }); (0, mocha_1.it)("should throw error if there is no key", (0, test_utils_1.mochaAsync)(() => __awaiter(void 0, void 0, void 0, function* () { const sdk = new sdk_1.MindSphereSdk(Object.assign(Object.assign({}, auth), { basicAuth: (0, utils_1.decrypt)(auth, (0, test_utils_1.getPasskeyForUnitTest)()) })); const assetManagement = sdk.GetAssetManagementClient(); const url = sdk.GetGateway().replace("gateway", `${sdk.GetTenant()}.piam`); nock(`${url}:443`, { allowUnmocked: true, }) .get("/token_keys") .twice() .reply(200, { keys: [ { kty: "RSA", e: "AQAB", use: "sig", kid: "key-id-1133", alg: "RS256", value: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHR/ozntSL7UvB0B2zlV\nfj1DoO5IlFLc9Mn9g73DElwSNcWf2cjlSPfjaDj9J602Wm4tI/aqm1CdbhvYzHd8\n9yHdDlQWmFjdsTeA8um6E3e3xIaYBa/RKbbGdSxEC33boAWXdFWsxPGyHkGyKxqv\n8H0Lj2xZSv/LsMO5XCro/+DNl4y/KDUL+gJF6JkSklmVwcnFeCMHi93SD3Bxbqsq\njLUxpypYII2X1AtIjK1HvWeJPiQEYnCxbfYMZsDmCg80HKfc+PTcZD5ZZu30YwhE\nBUFCbmH/GUsbIkIXBb9+GpfecVagHYGPpW3eBzn9cWeqA/CHXafpZfk3yw/RMPAe\nOQIDAQAB\n-----END PUBLIC KEY-----", n: "AMh0f6M57Ui-1LwdAds5VX49Q6DuSJRS3PTJ_YO9wxJcEjXFn9nI5Uj342g4_SetNlpuLSP2qptQnW4b2Mx3fPch3Q5UFphY3bE3gPLpuhN3t8SGmAWv0Sm2xnUsRAt926AFl3RVrMTxsh5Bsisar_B9C49sWUr_y7DDuVwq6P_gzZeMvyg1C_oCReiZEpJZlcHJxXgjB4vd0g9wcW6rKoy1MacqWCCNl9QLSIytR71niT4kBGJwsW32DGbA5goPNByn3Pj03GQ-WWbt9GMIRAVBQm5h_xlLGyJCFwW_fhqX3nFWoB2Bj6Vt3gc5_XFnqgPwh12n6WX5N8sP0TDwHjk", }, { kty: "RSA", e: "AQAB", use: "sig", kid: "key-id-1132", alg: "RS256", value: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHR/ozntSL7UvB0B2zlV\nfj1DoO5IlFLc9Mn9g73DElwSNcWf2cjlSPfjaDj9J602Wm4tI/aqm1CdbhvYzHd8\n9yHdDlQWmFjdsTeA8um6E3e3xIaYBa/RKbbGdSxEC33boAWXdFWsxPGyHkGyKxqv\n8H0Lj2xZSv/LsMO5XCro/+DNl4y/KDUL+gJF6JkSklmVwcnFeCMHi93SD3Bxbqsq\njLUxpypYII2X1AtIjK1HvWeJPiQEYnCxbfYMZsDmCg80HKfc+PTcZD5ZZu30YwhE\nBUFCbmH/GUsbIkIXBb9+GpfecVagHYGPpW3eBzn9cWeqA/CHXafpZfk3yw/RMPAe\nOQIDAQAB\n-----END PUBLIC KEY-----", n: "AMh0f6M57Ui-1LwdAds5VX49Q6DuSJRS3PTJ_YO9wxJcEjXFn9nI5Uj342g4_SetNlpuLSP2qptQnW4b2Mx3fPch3Q5UFphY3bE3gPLpuhN3t8SGmAWv0Sm2xnUsRAt926AFl3RVrMTxsh5Bsisar_B9C49sWUr_y7DDuVwq6P_gzZeMvyg1C_oCReiZEpJZlcHJxXgjB4vd0g9wcW6rKoy1MacqWCCNl9QLSIytR71niT4kBGJwsW32DGbA5goPNByn3Pj03GQ-WWbt9GMIRAVBQm5h_xlLGyJCFwW_fhqX3nFWoB2Bj6Vt3gc5_XFnqgPwh12n6WX5N8sP0TDwHjk", }, ], }); let errorOccured = false; try { yield assetManagement.GetToken(); // console.log(JSON.stringify((assetManagement as any)._authenticator!._oauthResponse!)); } catch (err) { errorOccured = true; // console.log(JSON.stringify((assetManagement as any)._authenticator!._oauthResponse!)); // console.log(err); } errorOccured.should.be.true; }))); (0, mocha_1.it)("should just work", () => __awaiter(void 0, void 0, void 0, function* () { const sdk = new sdk_1.MindSphereSdk(Object.assign(Object.assign({}, auth), { basicAuth: (0, utils_1.decrypt)(auth, (0, test_utils_1.getPasskeyForUnitTest)()) })); const agentManagement = sdk.GetAgentManagementClient(); const token1 = yield agentManagement.GetToken(); token1.should.not.be.undefined; agentManagement._accessToken = undefined; const token2 = yield agentManagement.GetToken(); token2.should.not.be.undefined; agentManagement._oauthResponse = undefined; const token3 = yield agentManagement.GetToken(); token3.should.not.be.undefined; agentManagement._oauthResponse = undefined; agentManagement._accessToken = undefined; const token4 = yield agentManagement.GetToken(); token4.should.not.be.undefined; for (let index = 0; index < 5; index++) { yield agentManagement.GetToken(); } })); }); //# sourceMappingURL=credential-auth.spec.js.map