UNPKG

@mindconnect/mindconnect-nodejs

Version:

MindConnect Library for NodeJS (community based)

220 lines 12.8 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 debug = require("debug"); require("url-search-params-polyfill"); const src_1 = require("../src"); const sdk_1 = require("../src/api/sdk"); const utils_1 = require("../src/api/utils"); const test_agent_setup_utils_1 = require("./test-agent-setup-utils"); const log = debug("mindconnect-setup-test"); chai.should(); describe("MindConnect Setup", () => { const auth = utils_1.loadAuth(); const gateway = auth.gateway; const tenant = auth.tenant; const basicAuth = utils_1.decrypt(auth, "passkey.4.unit.test"); const sdk = new sdk_1.MindSphereSdk({ gateway: auth.gateway, basicAuth: utils_1.decrypt(auth, "passkey.4.unit.test"), tenant: auth.tenant }); let sharedSecretConfig = {}; let unitTestConfiguration = {}; before(() => __awaiter(void 0, void 0, void 0, function* () { unitTestConfiguration = yield test_agent_setup_utils_1.unitTestSetup(sdk, sdk_1.AgentManagementModels.AgentUpdate.SecurityProfileEnum.SHAREDSECRET); sharedSecretConfig = unitTestConfiguration.agentConfig; })); after(() => __awaiter(void 0, void 0, void 0, function* () { yield test_agent_setup_utils_1.tearDownAgents(sdk, unitTestConfiguration); })); it("should instantiate", () => { const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); log(mcsetup); mcsetup.should.exist; }); it("should throw an error with invalid setup", () => { chai .expect(() => new src_1.MindConnectSetup(gateway, "invalid setup", tenant)) .to.throw("You have to pass the basic authentication header"); chai .expect(() => new src_1.MindConnectSetup("not.an.url", basicAuth, tenant)) .to.throw("the gateway must be an URL"); }); it("should acquire the public key for validation", () => __awaiter(void 0, void 0, void 0, function* () { const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); const testObject = mcsetup; testObject.should.exist; testObject.AcquirePublicKey.should.exist; yield testObject.AcquirePublicKey(); testObject._oauthResponse.should.exist; testObject._oauthResponse.keys[0].should.exist; testObject._oauthResponse.keys[0].value.should.exist; log(testObject._oauthResponse.keys[0].value); })); it("should acquire token via basic auth", () => __awaiter(void 0, void 0, void 0, function* () { const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); const testObject = mcsetup; testObject.should.exist; testObject.AcquireToken.should.exist; yield testObject.AcquireToken(); testObject._accessToken.should.exist; })); it("should validate token", () => __awaiter(void 0, void 0, void 0, function* () { const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); const testObject = mcsetup; testObject.should.exist; testObject.AcquireToken.should.exist; yield testObject.AcquireToken(); testObject.ValidateToken.should.exist; yield testObject.ValidateToken(); testObject._accessToken.should.exist; })); it("should validate token also on certificate change", () => __awaiter(void 0, void 0, void 0, function* () { const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); const testObject = mcsetup; testObject.should.exist; testObject.AcquireToken.should.exist; yield testObject.AcquireToken(); testObject.ValidateToken.should.exist; // console.log(testObject._accessToken); yield testObject.ValidateToken(); testObject._accessToken.should.exist; // * This is an expired token which can't be used, signed with self-created certificate testObject._accessToken.access_token = "eyJraWQiOiJrZXktaWQtMSIsImFsZyI6IlJTMjU2IiwidHlwIjoiSldUIn0.eyJqdGkiOiI1ZWJkODg4MGQyZGY0Yzg5OTQzMjIzYTRlYzU3N2FjMCIsInN1YiI6InNjcmVkXzAwMiIsInNjb3BlIjpbIm1kc3A6Y29yZTpBZG1pbjNyZFBhcnR5VGVjaFVzZXIiXSwiY2xpZW50X2lkIjoic2NyZWRfMDAyIiwiY2lkIjoic2NyZWRfMDAyIiwiYXpwIjoic2NyZWRfMDAyIiwiZ3JhbnRfdHlwZSI6ImNsaWVudF9jcmVkZW50aWFscyIsInJldl9zaWciOiIxOGJjMDNlZSIsImlhdCI6MTU1NDE1NjcxNCwiZXhwIjoxNTU0MTU4NTE0LCJpc3MiOiJodHRwczovL2Nhc3RpZGV2LnBpYW0uZXUxLm1pbmRzcGhlcmUuaW8vb2F1dGgvdG9rZW4iLCJ6aWQiOiJjYXN0aWRldiIsImF1ZCI6WyJzY3JlZF8wMDIiXSwidGVuIjoiY2FzdGlkZXYiLCJzY2hlbWFzIjpbInVybjpzaWVtZW5zOm1pbmRzcGhlcmU6aWFtOnYxIl0sImNhdCI6ImNsaWVudC10b2tlbjp2MSJ9.hVQ1kR6YfET3EG39QcdVwZHZN0aYhMeBKNxBioIpMOlqDrfahzPsWqJn5-XdW9oBO-kxZe9TFr5Xtdj2w_WHqBWUySqtfGrUTA8fgxcEuWfzFBcRAptvy6gPONTW4xa8Rx_G1SghTLANfrCLeiQOElpImil__b_ijBuLlx1_NHj4wvRvDFE91lvnq0c_s_Izn0-aLzkIO9xfN0iYrK5e7qTSv_m0eDneLnpsNsTMwG-ThDauaLgsxyIJSnKtwn2r_7Vn5IVrX6VD_qe7APmTZPoEtFzDiq4sN3pEDeIlXMGFuEzv_GhYfrLHNMQxLMFisbZqQpDUzTkuCc_OBMlghCRN6T432AsE9-q9SCHk_fPvBvW6O1v2II9g_mh4znj7KswDua_PSKEIwcvlRrlS5gsT-5qJTClXwdw91DIUyYOWcgSh-YaFYBy6JjAhErXKR9sJJ9IgKbMgHtetGuGcV6eF--8tKfyVW98awVSLT9W_kz0QlV92fqLeZkNdJ-UcwCj1d9C6qbElBSpvJAlwQLmraJiewCJ2ZEtyM-9IPF4o5idltp9QiKB1YwKQKbF8LkSNYoXn2scfKjOl6LaVuI55S5_VhODPTramWqQljSBYBm-aYv7J1jzQqhfD9xz19QPZc3wrJANb7kvT1xWnll1Tc0JKGk01obv8fvG0B4c"; let errorOccured = false; try { yield testObject.ValidateToken(); } catch (err) { errorOccured = true; } errorOccured.should.be.true; // * this is self-created certificate // ! The piam endpoint returns properly formated JWT (with CR LFs in proper place), unlike agent JWK endpoint testObject._oauthResponse.keys[0].value = `-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsj2ULABiqDw3IMatCR8zpwTb3qIwkurNN8O+o9qrcjgsXUkXMYDuGMN5RlUeOkG6bOdQeQmvllnm7qJ00QFRamSaM9NTg3I9yGxUeQsddsb4PtMypeeq1jenoeswLFwK4p9dgZPbPfb/Oi+ymlBdb0HbTTzCufswcfZ/erFeQa9vEtaM1HRDEA4ZZyfDELkM17CjCpzKwfeHeZ6JSOYJ+a4yLy8viwU88PGQN6gcw6f3fUhnbMxqkN9Uyw/PmkD+cwNxSuOaFHZ9Q8gFmqnlu8NJNKIijMC2y1xQlSiK89Nos8rYgLPwMgREi8Kil5Ve5GSz3mdjsBR1P5DHNjoYNLBq4TpRweDdUYkQz82LSFgfhdvd/+tenk1vgYqCbViEKrKjO2+G0haT6x1a/9EZkv+yV9MI+f4XOoCZl1CWQE1fzntUUgT7a59NpGb4z9iVg30dAsAPNLE/qzx4X59SQt86H5xcKAyjqXeEbSVllqST+pGb/dEt1UqBjXPHn2UhacUCABzHlU1KaYTTrdGNzXsnof+GF4FyjPhcR77mi10q+sBb37ACcDxW07IwV5ddTCMOtG5zQo+cWqFHwNQlgqUMevbI6n6+g7OC774VLaMy2TdKfUUZRQowHetz1bBhWUY+iEjfxf1vR6IKJ7gJuUUeu4WxSiEQ0bbh0qRF8v0CAwEAAQ==\n-----END PUBLIC KEY-----`; errorOccured = false; try { yield testObject.ValidateToken(); } catch (err) { errorOccured = true; } errorOccured.should.be.true; })); it("should renew token", () => __awaiter(void 0, void 0, void 0, function* () { const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); const result = yield mcsetup.RenewToken(); result.should.be.true; })); it("should get diagnostics", () => __awaiter(void 0, void 0, void 0, function* () { const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); const diag = yield mcsetup.GetDiagnosticInformation(); mcsetup.should.not.be.null; diag.content.should.not.be.undefined; })); it("should get agent status", () => __awaiter(void 0, void 0, void 0, function* () { const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); const agent = new src_1.MindConnectAgent(sharedSecretConfig); const agentStatus = yield mcsetup.GetAgentStatus(agent.ClientId()); agentStatus.should.not.be.undefined; agentStatus.since.should.not.be.undefined; agentStatus.status.toString().should.be.oneOf(["ONLINE", "OFFLINE"]); })); it("should get agent boarding status", () => __awaiter(void 0, void 0, void 0, function* () { const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); const agent = new src_1.MindConnectAgent(sharedSecretConfig); const boardingStatus = yield mcsetup.GetBoardingStatus(agent.ClientId()); boardingStatus.should.not.be.undefined; if (!boardingStatus.status) { throw new Error("invalid status"); } boardingStatus.status.should.not.be.undefined; boardingStatus.status.should.be.equal("ONBOARDING"); })); it("should register 2 agents for diagnostics", () => __awaiter(void 0, void 0, void 0, function* () { if (!process.env.CI) { // don't delete all diagnostic registrations all the time on the CI/CD this can disturb the normal workings on the tenants. const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); mcsetup.should.not.be.null; yield mcsetup.DeleteAllDiagnosticActivations(); try { yield mcsetup.RegisterForDiagnostic("2903bf15381646d3a8f4aeeff8d9bd29"); yield mcsetup.RegisterForDiagnostic("68766a93af834984a8f8decfbeec961e"); } catch (err) { if (("" + err).indexOf("agent limitation") < 0) { throw err; } } const activations = yield mcsetup.GetDiagnosticActivations(); log(activations.content); activations.content.length.should.be.equal(2); yield mcsetup.DeleteAllDiagnosticActivations(); } })); it("should get logs on error", () => __awaiter(void 0, void 0, void 0, function* () { if (!process.env.CI) { const mcsetup = new src_1.MindConnectSetup(gateway, basicAuth, tenant); mcsetup.should.not.be.null; const agent = new src_1.MindConnectAgent(sharedSecretConfig); agent.should.exist; yield mcsetup.DeleteAllDiagnosticActivations(); try { const response = yield mcsetup.RegisterForDiagnostic(agent.ClientId()); } catch (err) { if (("" + err).indexOf("Conflict") < 0) { throw err; } } if (!agent.IsOnBoarded()) { yield agent.OnBoard(); } yield agent.PutDataSourceConfiguration({ configurationId: "Configuration01", dataSources: [ { name: "EnvironmentData", description: "EnvironmentData (from environment sensors)", dataPoints: [ { id: "DP-Temperature", name: "Temperature", description: "Temperature", type: src_1.DataPoint.TypeEnum.DOUBLE, unit: "°C" } ] } ] }); yield agent.PostData([ { dataPointId: "Unexistent", qualityCode: "123123135", value: "12312346.42.23" } ], undefined, false); const diag = yield mcsetup.GetDiagnosticInformation(agent.ClientId()); diag.content.should.exist; let activations = yield mcsetup.GetDiagnosticActivations(); activations.content.length.should.be.greaterThan(0); yield mcsetup.DeleteDiagnostic(agent.ClientId()); activations = yield mcsetup.GetDiagnosticActivations(); activations.content.length.should.be.equal(0); } })); }); //# sourceMappingURL=mindconnect-setup.spec.js.map