@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
JavaScript
"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