@itwin/rpcinterface-full-stack-tests 3.0.0-dev.79 → 3.0.0-dev.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/common/Settings.d.ts +2 -2
- package/lib/common/Settings.d.ts.map +1 -1
- package/lib/common/Settings.js.map +1 -1
- package/lib/common/SideChannels.d.ts +1 -2
- package/lib/common/SideChannels.d.ts.map +1 -1
- package/lib/common/SideChannels.js +7 -12
- package/lib/common/SideChannels.js.map +1 -1
- package/lib/dist/bundled-tests.js +5447 -4859
- package/lib/dist/bundled-tests.js.map +1 -1
- package/lib/frontend/Elements.test.js +2 -1
- package/lib/frontend/Elements.test.js.map +1 -1
- package/lib/frontend/IModelConnection.test.js +1 -1
- package/lib/frontend/IModelConnection.test.js.map +1 -1
- package/lib/frontend/setup/TestContext.js +1 -1
- package/lib/frontend/setup/TestContext.js.map +1 -1
- package/lib/frontend/workflows/BasicScenarios.test.js +2 -1
- package/lib/frontend/workflows/BasicScenarios.test.js.map +1 -1
- package/package.json +20 -21
|
@@ -12,6 +12,7 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
const chai = require("chai");
|
|
15
|
+
const core_common_1 = require("@itwin/core-common");
|
|
15
16
|
const core_frontend_1 = require("@itwin/core-frontend");
|
|
16
17
|
const TestContext_1 = require("./setup/TestContext");
|
|
17
18
|
const expect = chai.expect;
|
|
@@ -49,7 +50,7 @@ describe("Operational: Execute Query", () => {
|
|
|
49
50
|
const query = "select count(*) nRows from(SELECT ECInstanceId FROM Bis.Element LIMIT 50)";
|
|
50
51
|
const rows = [];
|
|
51
52
|
try {
|
|
52
|
-
for (var _b = __asyncValues(iModel.query(query)), _c; _c = await _b.next(), !_c.done;) {
|
|
53
|
+
for (var _b = __asyncValues(iModel.query(query, undefined, core_common_1.QueryRowFormat.UseJsPropertyNames)), _c; _c = await _b.next(), !_c.done;) {
|
|
53
54
|
const row = _c.value;
|
|
54
55
|
rows.push(row);
|
|
55
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Elements.test.js","sourceRoot":"","sources":["../../src/frontend/Elements.test.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;AAE/F,6BAA6B;
|
|
1
|
+
{"version":3,"file":"Elements.test.js","sourceRoot":"","sources":["../../src/frontend/Elements.test.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;AAE/F,6BAA6B;AAE7B,oDAAkE;AAClE,wDAA2E;AAC3E,qDAAkD;AAElD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE3B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,MAAwB,CAAC;IAC7B,IAAI,QAAmC,CAAC;IAExC,MAAM,CAAC,KAAK;QACV,MAAM,WAAW,GAAG,MAAM,yBAAW,CAAC,QAAQ,EAAE,CAAC;QAEjD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,qBAAqB;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QAEd,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAqB,CAAC,aAAa,EAAE,CAAC;QACjE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,UAAU,GAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAmB,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEzE,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,YAAY,GAAmB,MAAM,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,iCAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;QAE1G,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,GAAG,GAAY,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAErF,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,4CAA4C,EAAE,KAAK;;QACpD,MAAM,WAAW,GAAG,MAAM,yBAAW,CAAC,QAAQ,EAAE,CAAC;QAEjD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,qBAAqB;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QAEd,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAqB,CAAC,aAAa,EAAE,CAAC;QACvE,MAAM,KAAK,GAAG,2EAA2E,CAAC;QAE1F,MAAM,IAAI,GAAG,EAAE,CAAC;;YAChB,KAAwB,IAAA,KAAA,cAAA,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,4BAAc,CAAC,kBAAkB,CAAC,CAAA,IAAA;gBAA9E,MAAM,GAAG,WAAA,CAAA;gBAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAAA;;;;;;;;;QAEjB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport * as chai from \"chai\";\nimport { Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport { ElementProps, QueryRowFormat } from \"@itwin/core-common\";\nimport { IModelConnection, SpatialModelState } from \"@itwin/core-frontend\";\nimport { TestContext } from \"./setup/TestContext\";\n\nconst expect = chai.expect;\n\ndescribe(\"IModel Elements\", () => {\n let iModel: IModelConnection;\n let elements: IModelConnection.Elements;\n\n before(async function () {\n const testContext = await TestContext.instance();\n\n if (!testContext.settings.runiModelReadRpcTests)\n this.skip();\n\n iModel = await testContext.iModelWithChangesets!.getConnection();\n elements = iModel.elements;\n });\n\n it(\"should get props\", async () => {\n const elementIds: Id64String[] = [elements.rootSubjectId];\n const elementProps: ElementProps[] = await elements.getProps(elementIds);\n\n expect(elementProps).to.exist.and.be.not.empty;\n });\n\n it(\"should query props\", async () => {\n const elementProps: ElementProps[] = await elements.queryProps({ from: SpatialModelState.classFullName });\n\n expect(elementProps).to.exist.and.be.not.empty;\n });\n\n it(\"should query ids\", async () => {\n const ids: Id64Set = await elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\n\n expect(ids).to.exist;\n });\n});\n\ndescribe(\"Operational: Execute Query\", () => {\n it(\"should successfully execute a simple query\", async function () {\n const testContext = await TestContext.instance();\n\n if (!testContext.settings.runiModelReadRpcTests)\n this.skip();\n\n const iModel = await testContext.iModelWithChangesets!.getConnection();\n const query = \"select count(*) nRows from(SELECT ECInstanceId FROM Bis.Element LIMIT 50)\";\n\n const rows = [];\n for await (const row of iModel.query(query, undefined, QueryRowFormat.UseJsPropertyNames))\n rows.push(row);\n\n expect(rows).to.be.not.empty;\n });\n});\n\n"]}
|
|
@@ -44,7 +44,7 @@ describe("IModel Connection", () => {
|
|
|
44
44
|
return expect(iModel.close()).to.eventually.be.fulfilled;
|
|
45
45
|
});
|
|
46
46
|
});
|
|
47
|
-
describe("IModel Connection with client credentials", () => {
|
|
47
|
+
describe.skip("IModel Connection with client credentials", () => {
|
|
48
48
|
let accessToken;
|
|
49
49
|
let testContext;
|
|
50
50
|
before(async function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelConnection.test.js","sourceRoot":"","sources":["../../src/frontend/IModelConnection.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport * as chai from \"chai\";\r\nimport { AccessToken, Id64, Id64Set } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Point3d, XYZProps, YawPitchRollAngles } from \"@itwin/core-geometry\";\r\nimport {\r\n EcefLocation, GeoCoordStatus, IModelReadRpcInterface, IModelVersion, MassPropertiesOperation, MassPropertiesRequestProps, ModelQueryParams,\r\n} from \"@itwin/core-common\";\r\nimport { CheckpointConnection, IModelApp, IModelConnection, SpatialModelState, ViewState } from \"@itwin/core-frontend\";\r\nimport { TestFrontendAuthorizationClient } from \"@itwin/oidc-signin-tool/lib/cjs/frontend\";\r\nimport { TestContext } from \"./setup/TestContext\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\nconst expect = chai.expect;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-var-requires\r\n(global as any).btoa = (str: string) => {\r\n const buffer = Buffer.from(str, \"binary\");\r\n return buffer.toString(\"base64\");\r\n};\r\n\r\ndescribe(\"IModel Connection\", () => {\r\n let accessToken: AccessToken;\r\n let testContext: TestContext;\r\n\r\n before(async function () {\r\n testContext = await TestContext.instance();\r\n\r\n if (!testContext.settings.runiModelReadRpcTests)\r\n this.skip();\r\n\r\n accessToken = testContext.adminUserAccessToken;\r\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\r\n });\r\n\r\n it(\"should successfully open an IModelConnection for read\", async () => {\r\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\r\n const iModelId = testContext.iModelWithChangesets!.iModelId;\r\n\r\n const iModel: IModelConnection = await CheckpointConnection.openRemote(iTwinId, iModelId);\r\n\r\n expect(iModel).to.exist.and.be.not.empty;\r\n\r\n const iModelRpcProps = iModel.getRpcProps();\r\n expect(iModelRpcProps).to.exist.and.be.not.empty;\r\n });\r\n\r\n it(\"should successfully close an open an IModelConnection\", async () => {\r\n const iModelId = testContext.iModelWithChangesets!.iModelId;\r\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\r\n const iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\r\n\r\n expect(iModel).to.exist;\r\n return expect(iModel.close()).to.eventually.be.fulfilled;\r\n });\r\n});\r\n\r\ndescribe(\"IModel Connection with client credentials\", () => {\r\n let accessToken: AccessToken;\r\n let testContext: TestContext;\r\n\r\n before(async function () {\r\n testContext = await TestContext.instance();\r\n\r\n // If client credentials are not supplied or imodel read rpc tests are disabled skip test suite\r\n if (!testContext.settings.clientConfiguration || !testContext.settings.runiModelReadRpcTests)\r\n this.skip();\r\n\r\n accessToken = testContext.clientAccessToken!;\r\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\r\n });\r\n\r\n it(\"should successfully open an IModelConnection for read\", async () => {\r\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\r\n const iModelId = testContext.iModelWithChangesets!.iModelId;\r\n const changeSetId = (await testContext.iModelWithChangesets!.getConnection()).changeset.id;\r\n\r\n const iModel = await CheckpointConnection.openRemote(iTwinId, iModelId, undefined === changeSetId ? IModelVersion.latest() : IModelVersion.asOfChangeSet(changeSetId));\r\n\r\n expect(iModel).to.exist.and.be.not.empty;\r\n\r\n const iModelRpcProps = iModel.getRpcProps();\r\n expect(iModelRpcProps).to.exist.and.be.not.empty;\r\n });\r\n});\r\n\r\ndescribe(\"IModelReadRpcInterface Methods from an IModelConnection\", () => {\r\n let iModel: IModelConnection;\r\n let iTwinId: string;\r\n let accessToken: AccessToken;\r\n let testContext: TestContext;\r\n\r\n before(async function () {\r\n testContext = await TestContext.instance();\r\n\r\n if (!testContext.settings.runiModelReadRpcTests) {\r\n this.skip();\r\n }\r\n\r\n const iModelId = testContext.iModelWithChangesets!.iModelId;\r\n iTwinId = testContext.iModelWithChangesets!.iTwinId;\r\n accessToken = testContext.adminUserAccessToken;\r\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\r\n iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\r\n });\r\n\r\n it(\"queryEntityIds should work as expected\", async () => {\r\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\r\n expect(ids).to.exist;\r\n });\r\n\r\n it(\"getToolTipMessage should work as expected\", async () => {\r\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\r\n const id = ids.values().next().value;\r\n\r\n const tooltip = await iModel.getToolTipMessage(id); // \"0x338\"\r\n\r\n expect(tooltip).to.not.be.undefined;\r\n });\r\n\r\n it(\"getDefaultViewId should work as expected\", async () => {\r\n const result = await iModel.views.queryDefaultViewId();\r\n\r\n expect(result).to.not.be.undefined;\r\n });\r\n\r\n it(\"getGeometrySummary should work as expected\", async () => {\r\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\r\n const id = ids.values().next().value;\r\n const result = await IModelReadRpcInterface.getClient().getGeometrySummary(iModel.getRpcProps(), { elementIds: [id], options: {} });\r\n expect(result).to.not.be.undefined;\r\n });\r\n\r\n it(\"requestSnap should work as expected\", async () => {\r\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\r\n const id = ids.values().next().value;\r\n\r\n const worldToView = Matrix4d.createIdentity();\r\n const snap = await iModel.requestSnap({\r\n id,\r\n testPoint: { x: 1, y: 2, z: 3 },\r\n closePoint: { x: 1, y: 2, z: 3 },\r\n worldToView: worldToView.toJSON(),\r\n });\r\n\r\n expect(snap.status).to.not.be.undefined;\r\n });\r\n\r\n it(\"queryModelProps should work as expected\", async () => {\r\n const modelQueryParams: ModelQueryParams = { limit: 10, from: SpatialModelState.classFullName, wantPrivate: false };\r\n const curModelProps = await iModel.models.queryProps(modelQueryParams);\r\n\r\n expect(curModelProps).to.not.be.undefined;\r\n expect(curModelProps.length).gt(0);\r\n });\r\n\r\n it(\"getModelProps should work as expected\", async () => {\r\n const modelQueryParams: ModelQueryParams = { limit: 10, from: SpatialModelState.classFullName, wantPrivate: false };\r\n const curModelProps = await iModel.models.queryProps(modelQueryParams);\r\n const modelId = curModelProps[0].id!.toString();\r\n\r\n await iModel.models.load(modelId); // \"0x1c\"\r\n\r\n expect(iModel.models.loaded.size).to.equal(1);\r\n expect(iModel.models.loaded.get(modelId)).to.not.be.undefined;\r\n });\r\n\r\n it(\"getClassHierarchy should work as expected\", async () => {\r\n const result = await iModel.findClassFor(\"BisCore:LineStyle\", undefined);\r\n expect(result).undefined;\r\n });\r\n\r\n it(\"getViewThumbnail should work as expected\", async () => {\r\n const modelQueryParams: ModelQueryParams = { limit: 10, from: ViewState.classFullName };\r\n const modelProps = await iModel.views.queryProps(modelQueryParams);\r\n const viewId = modelProps[0].id!.toString();\r\n const result = await iModel.views.getThumbnail(viewId);\r\n expect(result).to.not.be.undefined;\r\n });\r\n\r\n it(\"getIModelCoordinatesFromGeoCoordinates should work as expected\", async () => {\r\n const wgs84Converter = iModel.geoServices.getConverter(\"WGS84\");\r\n const nad27Converter = iModel.geoServices.getConverter(\"NAD27\");\r\n\r\n const geoPointList: XYZProps[] = [];\r\n\r\n for (let iLatitude = 0; iLatitude < 10; iLatitude++) {\r\n for (let iLongitude = 0; iLongitude < 10; iLongitude++) {\r\n geoPointList.push({ x: (132.600 + 0.02 * iLongitude), y: (34.350 + 0.02 * iLatitude), z: 0.0 });\r\n }\r\n }\r\n\r\n const testPoints: XYZProps[] = [];\r\n for (let iGeoPoint = 1; iGeoPoint < geoPointList.length; iGeoPoint += 2)\r\n testPoints.push(geoPointList[iGeoPoint]);\r\n\r\n const wgs84Response = await wgs84Converter!.getIModelCoordinatesFromGeoCoordinates(testPoints);\r\n\r\n // shouldn't have any from the cache.\r\n expect(wgs84Response.fromCache === 0).to.be.true;\r\n\r\n // shouldn't have any failures.\r\n for (const result of wgs84Response.iModelCoords) {\r\n expect(GeoCoordStatus.Success === result.s);\r\n }\r\n\r\n const nad27Response = await nad27Converter!.getIModelCoordinatesFromGeoCoordinates(testPoints);\r\n\r\n // shouldn't have any from the cache.\r\n expect(nad27Response.fromCache).eq(0);\r\n });\r\n\r\n it(\"getGeoCoordinatesFromIModelCoordinates should work as expected\", async () => {\r\n const ecefProps = new EcefLocation({ orientation: YawPitchRollAngles.createDegrees(0, 0, 0), origin: Point3d.create(0, 0, 0) });\r\n iModel.setEcefLocation(ecefProps);\r\n\r\n await iModel.spatialToCartographic({ x: 6378.137, y: 0, z: 0 });\r\n });\r\n\r\n /* NEEDSWORK queryPage no longer exists; you cannot specify a specific rows-per-page to query for (only a maximum via LIMIT).\r\n it(\"queryRowCount should work as expected\", async () => {\r\n const getRowPerPage = (nPageSize: number, nRowCount: number) => {\r\n const nRowPerPage = nRowCount / nPageSize;\r\n const nPages = Math.ceil(nRowPerPage);\r\n const nRowOnLastPage = nRowCount - (Math.floor(nRowPerPage) * pageSize);\r\n const pages = new Array(nPages).fill(pageSize);\r\n if (nRowPerPage) {\r\n pages[nPages - 1] = nRowOnLastPage;\r\n }\r\n return pages;\r\n };\r\n\r\n const pageSize = 5;\r\n const query = \"SELECT ECInstanceId as Id, Parent.Id as ParentId FROM BisCore.Element\";\r\n const rowCount = await iModel.queryRowCount(query);\r\n\r\n // verify row per page\r\n const rowPerPage = getRowPerPage(pageSize, rowCount);\r\n for (let k = 0; k < rowPerPage.length; k++) {\r\n const row = await iModel.queryPage(query, undefined, { size: pageSize, start: k });\r\n expect(row.length).to.be.equal(rowPerPage[k]);\r\n }\r\n\r\n // verify with async iterator\r\n const resultSet = [];\r\n for await (const row of iModel.query(query, undefined, { size: pageSize })) {\r\n resultSet.push(row);\r\n expect(Reflect.has(row, \"id\")).to.be.true;\r\n if (Reflect.ownKeys(row).length > 1) {\r\n expect(Reflect.has(row, \"parentId\")).to.be.true;\r\n const parentId: string = row.parentId;\r\n expect(parentId.startsWith(\"0x\")).to.be.true;\r\n }\r\n const id: string = row.id;\r\n expect(id.startsWith(\"0x\"));\r\n }\r\n expect(rowCount).to.be.equal(resultSet.length);\r\n });\r\n */\r\n\r\n it(\"queryModelRanges should work as expected\", async () => {\r\n const modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.SpatialModel\" });\r\n const modelId = modelProps[0].id!.toString();\r\n\r\n let idSet: Id64Set = Id64.toIdSet(modelId);\r\n\r\n let ranges = await iModel.models.queryModelRanges(idSet);\r\n\r\n expect(ranges).to.not.be.undefined;\r\n expect(ranges.length).to.be.equal(1);\r\n idSet = new Set<string>();\r\n for (const modelProp of modelProps) {\r\n idSet.add(modelProp.id!.toString());\r\n }\r\n ranges = await iModel.models.queryModelRanges(idSet);\r\n expect(ranges).to.not.be.undefined;\r\n expect(ranges.length).to.be.gte(1);\r\n\r\n });\r\n\r\n it(\"queryModelRanges should properly handle models that aren't geometric\", async () => {\r\n // the below clause is created specifically for the test iModel, if that iModel were to be changed and it contained models that were geometricModels\r\n // but not PhysicalModels then the test may fail.\r\n let ranges;\r\n let modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.Model\", where: \"ec_classname(ECClassId) <> 'BisCore:PhysicalModel'\" });\r\n let idSet: Id64Set = new Set<string>();\r\n for (const modelProp of modelProps) {\r\n idSet.add(modelProp.id!.toString());\r\n }\r\n if (idSet.size === 1) { // queryModelRanges throws error if idSet size is 1 AND the id in the set returns some error for querying its extents\r\n await expect(iModel.models.queryModelRanges(idSet)).to.be.rejectedWith(Error);\r\n } else {\r\n ranges = await iModel.models.queryModelRanges(idSet);\r\n expect(ranges).to.not.be.undefined;\r\n expect(ranges.length).to.be.equal(0);\r\n }\r\n const dictModelId = await iModel.models.getDictionaryModel();\r\n idSet = Id64.toIdSet(dictModelId);\r\n await expect(iModel.models.queryModelRanges(idSet)).to.be.rejectedWith(Error);\r\n\r\n modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.SpatialModel\" });\r\n idSet.add(modelProps[0].id!.toString());\r\n ranges = await iModel.models.queryModelRanges(idSet);\r\n expect(ranges).to.not.be.undefined;\r\n expect(ranges.length).to.be.equal(1);\r\n });\r\n it(\"getMassProperties should work as expected\", async () => {\r\n const requestProps: MassPropertiesRequestProps = {\r\n operation: MassPropertiesOperation.AccumulateVolumes,\r\n };\r\n\r\n const result = await IModelReadRpcInterface.getClient().getMassProperties(iModel.getRpcProps(), requestProps);\r\n expect(result).to.not.be.null;\r\n });\r\n});\r\n\r\ndescribe(\"Snapping\", () => {\r\n let iModel: IModelConnection;\r\n let iTwinId: string;\r\n let accessToken: AccessToken;\r\n let testContext: TestContext;\r\n\r\n before(async function () {\r\n testContext = await TestContext.instance();\r\n\r\n if (!testContext.settings.runiModelReadRpcTests)\r\n this.skip();\r\n\r\n const iModelId = testContext.iModelWithChangesets!.iModelId;\r\n iTwinId = testContext.iModelWithChangesets!.iTwinId;\r\n accessToken = testContext.adminUserAccessToken;\r\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\r\n iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\r\n });\r\n\r\n it(\"should be able to request a snap\", async () => {\r\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\r\n const id = ids.values().next().value;\r\n\r\n const worldToView = Matrix4d.createIdentity();\r\n const snapProps = {\r\n id,\r\n testPoint: { x: 1, y: 2, z: 3 },\r\n closePoint: { x: 1, y: 2, z: 3 },\r\n worldToView: worldToView.toJSON(),\r\n };\r\n\r\n const snap = await IModelReadRpcInterface.getClient().requestSnap(iModel.getRpcProps(), id, snapProps);\r\n expect(snap.status).to.not.be.undefined;\r\n });\r\n\r\n it(\"should be able to cancel a snap\", async () => {\r\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\r\n const id = ids.values().next().value;\r\n\r\n const worldToView = Matrix4d.createIdentity();\r\n const snapProps = {\r\n id,\r\n testPoint: { x: 1, y: 2, z: 3 },\r\n closePoint: { x: 1, y: 2, z: 3 },\r\n worldToView: worldToView.toJSON(),\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n const promise = IModelReadRpcInterface.getClient().requestSnap(iModel.getRpcProps(), id, snapProps);\r\n try {\r\n await IModelReadRpcInterface.getClient().cancelSnap(iModel.getRpcProps(), id);\r\n const snap = await promise;\r\n\r\n // This is what we expect if the snap is completed before the cancellation is processed.\r\n expect(snap.status).not.to.be.undefined;\r\n } catch (err: any) {\r\n // This is what we expect if the cancellation occurs in time to really cancel the snap.\r\n expect(err.message).to.equal(\"aborted\");\r\n }\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"IModelConnection.test.js","sourceRoot":"","sources":["../../src/frontend/IModelConnection.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport * as chai from \"chai\";\r\nimport { AccessToken, Id64, Id64Set } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Point3d, XYZProps, YawPitchRollAngles } from \"@itwin/core-geometry\";\r\nimport {\r\n EcefLocation, GeoCoordStatus, IModelReadRpcInterface, IModelVersion, MassPropertiesOperation, MassPropertiesRequestProps, ModelQueryParams,\r\n} from \"@itwin/core-common\";\r\nimport { CheckpointConnection, IModelApp, IModelConnection, SpatialModelState, ViewState } from \"@itwin/core-frontend\";\r\nimport { TestFrontendAuthorizationClient } from \"@itwin/oidc-signin-tool/lib/cjs/frontend\";\r\nimport { TestContext } from \"./setup/TestContext\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\nconst expect = chai.expect;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-var-requires\r\n(global as any).btoa = (str: string) => {\r\n const buffer = Buffer.from(str, \"binary\");\r\n return buffer.toString(\"base64\");\r\n};\r\n\r\ndescribe(\"IModel Connection\", () => {\r\n let accessToken: AccessToken;\r\n let testContext: TestContext;\r\n\r\n before(async function () {\r\n testContext = await TestContext.instance();\r\n\r\n if (!testContext.settings.runiModelReadRpcTests)\r\n this.skip();\r\n\r\n accessToken = testContext.adminUserAccessToken;\r\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\r\n });\r\n\r\n it(\"should successfully open an IModelConnection for read\", async () => {\r\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\r\n const iModelId = testContext.iModelWithChangesets!.iModelId;\r\n\r\n const iModel: IModelConnection = await CheckpointConnection.openRemote(iTwinId, iModelId);\r\n\r\n expect(iModel).to.exist.and.be.not.empty;\r\n\r\n const iModelRpcProps = iModel.getRpcProps();\r\n expect(iModelRpcProps).to.exist.and.be.not.empty;\r\n });\r\n\r\n it(\"should successfully close an open an IModelConnection\", async () => {\r\n const iModelId = testContext.iModelWithChangesets!.iModelId;\r\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\r\n const iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\r\n\r\n expect(iModel).to.exist;\r\n return expect(iModel.close()).to.eventually.be.fulfilled;\r\n });\r\n});\r\n\r\ndescribe.skip(\"IModel Connection with client credentials\", () => {\r\n let accessToken: AccessToken;\r\n let testContext: TestContext;\r\n\r\n before(async function () {\r\n testContext = await TestContext.instance();\r\n\r\n // If client credentials are not supplied or imodel read rpc tests are disabled skip test suite\r\n if (!testContext.settings.clientConfiguration || !testContext.settings.runiModelReadRpcTests)\r\n this.skip();\r\n accessToken = testContext.clientAccessToken!;\r\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\r\n });\r\n\r\n it(\"should successfully open an IModelConnection for read\", async () => {\r\n const iTwinId = testContext.iModelWithChangesets!.iTwinId;\r\n const iModelId = testContext.iModelWithChangesets!.iModelId;\r\n const changeSetId = (await testContext.iModelWithChangesets!.getConnection()).changeset.id;\r\n\r\n const iModel = await CheckpointConnection.openRemote(iTwinId, iModelId, undefined === changeSetId ? IModelVersion.latest() : IModelVersion.asOfChangeSet(changeSetId));\r\n\r\n expect(iModel).to.exist.and.be.not.empty;\r\n\r\n const iModelRpcProps = iModel.getRpcProps();\r\n expect(iModelRpcProps).to.exist.and.be.not.empty;\r\n });\r\n});\r\n\r\ndescribe(\"IModelReadRpcInterface Methods from an IModelConnection\", () => {\r\n let iModel: IModelConnection;\r\n let iTwinId: string;\r\n let accessToken: AccessToken;\r\n let testContext: TestContext;\r\n\r\n before(async function () {\r\n testContext = await TestContext.instance();\r\n\r\n if (!testContext.settings.runiModelReadRpcTests) {\r\n this.skip();\r\n }\r\n\r\n const iModelId = testContext.iModelWithChangesets!.iModelId;\r\n iTwinId = testContext.iModelWithChangesets!.iTwinId;\r\n accessToken = testContext.adminUserAccessToken;\r\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\r\n iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\r\n });\r\n\r\n it(\"queryEntityIds should work as expected\", async () => {\r\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\r\n expect(ids).to.exist;\r\n });\r\n\r\n it(\"getToolTipMessage should work as expected\", async () => {\r\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\r\n const id = ids.values().next().value;\r\n\r\n const tooltip = await iModel.getToolTipMessage(id); // \"0x338\"\r\n\r\n expect(tooltip).to.not.be.undefined;\r\n });\r\n\r\n it(\"getDefaultViewId should work as expected\", async () => {\r\n const result = await iModel.views.queryDefaultViewId();\r\n\r\n expect(result).to.not.be.undefined;\r\n });\r\n\r\n it(\"getGeometrySummary should work as expected\", async () => {\r\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:Subject\" });\r\n const id = ids.values().next().value;\r\n const result = await IModelReadRpcInterface.getClient().getGeometrySummary(iModel.getRpcProps(), { elementIds: [id], options: {} });\r\n expect(result).to.not.be.undefined;\r\n });\r\n\r\n it(\"requestSnap should work as expected\", async () => {\r\n const ids: Id64Set = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\r\n const id = ids.values().next().value;\r\n\r\n const worldToView = Matrix4d.createIdentity();\r\n const snap = await iModel.requestSnap({\r\n id,\r\n testPoint: { x: 1, y: 2, z: 3 },\r\n closePoint: { x: 1, y: 2, z: 3 },\r\n worldToView: worldToView.toJSON(),\r\n });\r\n\r\n expect(snap.status).to.not.be.undefined;\r\n });\r\n\r\n it(\"queryModelProps should work as expected\", async () => {\r\n const modelQueryParams: ModelQueryParams = { limit: 10, from: SpatialModelState.classFullName, wantPrivate: false };\r\n const curModelProps = await iModel.models.queryProps(modelQueryParams);\r\n\r\n expect(curModelProps).to.not.be.undefined;\r\n expect(curModelProps.length).gt(0);\r\n });\r\n\r\n it(\"getModelProps should work as expected\", async () => {\r\n const modelQueryParams: ModelQueryParams = { limit: 10, from: SpatialModelState.classFullName, wantPrivate: false };\r\n const curModelProps = await iModel.models.queryProps(modelQueryParams);\r\n const modelId = curModelProps[0].id!.toString();\r\n\r\n await iModel.models.load(modelId); // \"0x1c\"\r\n\r\n expect(iModel.models.loaded.size).to.equal(1);\r\n expect(iModel.models.loaded.get(modelId)).to.not.be.undefined;\r\n });\r\n\r\n it(\"getClassHierarchy should work as expected\", async () => {\r\n const result = await iModel.findClassFor(\"BisCore:LineStyle\", undefined);\r\n expect(result).undefined;\r\n });\r\n\r\n it(\"getViewThumbnail should work as expected\", async () => {\r\n const modelQueryParams: ModelQueryParams = { limit: 10, from: ViewState.classFullName };\r\n const modelProps = await iModel.views.queryProps(modelQueryParams);\r\n const viewId = modelProps[0].id!.toString();\r\n const result = await iModel.views.getThumbnail(viewId);\r\n expect(result).to.not.be.undefined;\r\n });\r\n\r\n it(\"getIModelCoordinatesFromGeoCoordinates should work as expected\", async () => {\r\n const wgs84Converter = iModel.geoServices.getConverter(\"WGS84\");\r\n const nad27Converter = iModel.geoServices.getConverter(\"NAD27\");\r\n\r\n const geoPointList: XYZProps[] = [];\r\n\r\n for (let iLatitude = 0; iLatitude < 10; iLatitude++) {\r\n for (let iLongitude = 0; iLongitude < 10; iLongitude++) {\r\n geoPointList.push({ x: (132.600 + 0.02 * iLongitude), y: (34.350 + 0.02 * iLatitude), z: 0.0 });\r\n }\r\n }\r\n\r\n const testPoints: XYZProps[] = [];\r\n for (let iGeoPoint = 1; iGeoPoint < geoPointList.length; iGeoPoint += 2)\r\n testPoints.push(geoPointList[iGeoPoint]);\r\n\r\n const wgs84Response = await wgs84Converter!.getIModelCoordinatesFromGeoCoordinates(testPoints);\r\n\r\n // shouldn't have any from the cache.\r\n expect(wgs84Response.fromCache === 0).to.be.true;\r\n\r\n // shouldn't have any failures.\r\n for (const result of wgs84Response.iModelCoords) {\r\n expect(GeoCoordStatus.Success === result.s);\r\n }\r\n\r\n const nad27Response = await nad27Converter!.getIModelCoordinatesFromGeoCoordinates(testPoints);\r\n\r\n // shouldn't have any from the cache.\r\n expect(nad27Response.fromCache).eq(0);\r\n });\r\n\r\n it(\"getGeoCoordinatesFromIModelCoordinates should work as expected\", async () => {\r\n const ecefProps = new EcefLocation({ orientation: YawPitchRollAngles.createDegrees(0, 0, 0), origin: Point3d.create(0, 0, 0) });\r\n iModel.setEcefLocation(ecefProps);\r\n\r\n await iModel.spatialToCartographic({ x: 6378.137, y: 0, z: 0 });\r\n });\r\n\r\n /* NEEDSWORK queryPage no longer exists; you cannot specify a specific rows-per-page to query for (only a maximum via LIMIT).\r\n it(\"queryRowCount should work as expected\", async () => {\r\n const getRowPerPage = (nPageSize: number, nRowCount: number) => {\r\n const nRowPerPage = nRowCount / nPageSize;\r\n const nPages = Math.ceil(nRowPerPage);\r\n const nRowOnLastPage = nRowCount - (Math.floor(nRowPerPage) * pageSize);\r\n const pages = new Array(nPages).fill(pageSize);\r\n if (nRowPerPage) {\r\n pages[nPages - 1] = nRowOnLastPage;\r\n }\r\n return pages;\r\n };\r\n\r\n const pageSize = 5;\r\n const query = \"SELECT ECInstanceId as Id, Parent.Id as ParentId FROM BisCore.Element\";\r\n const rowCount = await iModel.queryRowCount(query);\r\n\r\n // verify row per page\r\n const rowPerPage = getRowPerPage(pageSize, rowCount);\r\n for (let k = 0; k < rowPerPage.length; k++) {\r\n const row = await iModel.queryPage(query, undefined, { size: pageSize, start: k });\r\n expect(row.length).to.be.equal(rowPerPage[k]);\r\n }\r\n\r\n // verify with async iterator\r\n const resultSet = [];\r\n for await (const row of iModel.query(query, undefined, { size: pageSize })) {\r\n resultSet.push(row);\r\n expect(Reflect.has(row, \"id\")).to.be.true;\r\n if (Reflect.ownKeys(row).length > 1) {\r\n expect(Reflect.has(row, \"parentId\")).to.be.true;\r\n const parentId: string = row.parentId;\r\n expect(parentId.startsWith(\"0x\")).to.be.true;\r\n }\r\n const id: string = row.id;\r\n expect(id.startsWith(\"0x\"));\r\n }\r\n expect(rowCount).to.be.equal(resultSet.length);\r\n });\r\n */\r\n\r\n it(\"queryModelRanges should work as expected\", async () => {\r\n const modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.SpatialModel\" });\r\n const modelId = modelProps[0].id!.toString();\r\n\r\n let idSet: Id64Set = Id64.toIdSet(modelId);\r\n\r\n let ranges = await iModel.models.queryModelRanges(idSet);\r\n\r\n expect(ranges).to.not.be.undefined;\r\n expect(ranges.length).to.be.equal(1);\r\n idSet = new Set<string>();\r\n for (const modelProp of modelProps) {\r\n idSet.add(modelProp.id!.toString());\r\n }\r\n ranges = await iModel.models.queryModelRanges(idSet);\r\n expect(ranges).to.not.be.undefined;\r\n expect(ranges.length).to.be.gte(1);\r\n\r\n });\r\n\r\n it(\"queryModelRanges should properly handle models that aren't geometric\", async () => {\r\n // the below clause is created specifically for the test iModel, if that iModel were to be changed and it contained models that were geometricModels\r\n // but not PhysicalModels then the test may fail.\r\n let ranges;\r\n let modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.Model\", where: \"ec_classname(ECClassId) <> 'BisCore:PhysicalModel'\" });\r\n let idSet: Id64Set = new Set<string>();\r\n for (const modelProp of modelProps) {\r\n idSet.add(modelProp.id!.toString());\r\n }\r\n if (idSet.size === 1) { // queryModelRanges throws error if idSet size is 1 AND the id in the set returns some error for querying its extents\r\n await expect(iModel.models.queryModelRanges(idSet)).to.be.rejectedWith(Error);\r\n } else {\r\n ranges = await iModel.models.queryModelRanges(idSet);\r\n expect(ranges).to.not.be.undefined;\r\n expect(ranges.length).to.be.equal(0);\r\n }\r\n const dictModelId = await iModel.models.getDictionaryModel();\r\n idSet = Id64.toIdSet(dictModelId);\r\n await expect(iModel.models.queryModelRanges(idSet)).to.be.rejectedWith(Error);\r\n\r\n modelProps = await iModel.models.queryProps({ limit: 10, from: \"BisCore.SpatialModel\" });\r\n idSet.add(modelProps[0].id!.toString());\r\n ranges = await iModel.models.queryModelRanges(idSet);\r\n expect(ranges).to.not.be.undefined;\r\n expect(ranges.length).to.be.equal(1);\r\n });\r\n it(\"getMassProperties should work as expected\", async () => {\r\n const requestProps: MassPropertiesRequestProps = {\r\n operation: MassPropertiesOperation.AccumulateVolumes,\r\n };\r\n\r\n const result = await IModelReadRpcInterface.getClient().getMassProperties(iModel.getRpcProps(), requestProps);\r\n expect(result).to.not.be.null;\r\n });\r\n});\r\n\r\ndescribe(\"Snapping\", () => {\r\n let iModel: IModelConnection;\r\n let iTwinId: string;\r\n let accessToken: AccessToken;\r\n let testContext: TestContext;\r\n\r\n before(async function () {\r\n testContext = await TestContext.instance();\r\n\r\n if (!testContext.settings.runiModelReadRpcTests)\r\n this.skip();\r\n\r\n const iModelId = testContext.iModelWithChangesets!.iModelId;\r\n iTwinId = testContext.iModelWithChangesets!.iTwinId;\r\n accessToken = testContext.adminUserAccessToken;\r\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\r\n iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\r\n });\r\n\r\n it(\"should be able to request a snap\", async () => {\r\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\r\n const id = ids.values().next().value;\r\n\r\n const worldToView = Matrix4d.createIdentity();\r\n const snapProps = {\r\n id,\r\n testPoint: { x: 1, y: 2, z: 3 },\r\n closePoint: { x: 1, y: 2, z: 3 },\r\n worldToView: worldToView.toJSON(),\r\n };\r\n\r\n const snap = await IModelReadRpcInterface.getClient().requestSnap(iModel.getRpcProps(), id, snapProps);\r\n expect(snap.status).to.not.be.undefined;\r\n });\r\n\r\n it(\"should be able to cancel a snap\", async () => {\r\n const ids = await iModel.elements.queryIds({ limit: 10, from: \"BisCore:PhysicalElement\" });\r\n const id = ids.values().next().value;\r\n\r\n const worldToView = Matrix4d.createIdentity();\r\n const snapProps = {\r\n id,\r\n testPoint: { x: 1, y: 2, z: 3 },\r\n closePoint: { x: 1, y: 2, z: 3 },\r\n worldToView: worldToView.toJSON(),\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n const promise = IModelReadRpcInterface.getClient().requestSnap(iModel.getRpcProps(), id, snapProps);\r\n try {\r\n await IModelReadRpcInterface.getClient().cancelSnap(iModel.getRpcProps(), id);\r\n const snap = await promise;\r\n\r\n // This is what we expect if the snap is completed before the cancellation is processed.\r\n expect(snap.status).not.to.be.undefined;\r\n } catch (err: any) {\r\n // This is what we expect if the cancellation occurs in time to really cancel the snap.\r\n expect(err.message).to.equal(\"aborted\");\r\n }\r\n });\r\n});\r\n"]}
|
|
@@ -52,7 +52,7 @@ class TestContext {
|
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
if (undefined !== this.settings.clientConfiguration)
|
|
55
|
-
this.clientAccessToken = await (0, SideChannels_1.getClientAccessTokenFromBackend)(
|
|
55
|
+
this.clientAccessToken = await (0, SideChannels_1.getClientAccessTokenFromBackend)();
|
|
56
56
|
this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
|
|
57
57
|
await core_frontend_1.NoRenderApp.startup({
|
|
58
58
|
applicationVersion: PACKAGE_VERSION,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestContext.js","sourceRoot":"","sources":["../../../src/frontend/setup/TestContext.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,+BAA8B;AAC9B,sDAAoE;AACpE,oDAAyE;AACzE,wDAAmD;AACnD,uEAEkD;AAClD,oDAAmE;AACnE,4DAAsG;AACtG,mDAAgD;AAChD,gEAA8D;AAI9D,+BAA+B;AAC/B,8CAA8C;AAE9C,MAAa,WAAW;IAUtB,YAAoB,GAAsB;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAGM,MAAM,CAAC,KAAK,CAAC,QAAQ;QAC1B,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,WAAW,CAAC,MAAM,IAAA,uCAAwB,GAAE,CAAC,CAAC;YACnE,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;SACnC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,+EAA+E;IACvE,uBAAuB,CAAC,IAAiB;QAC/C,6BAA6B;QAC7B,MAAM,SAAS,GAAW,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5E,oCAAsB,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,IAAA,2BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChG,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAA,aAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sDAAsD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,uBAAuB,CAAC,CAAC;QACzJ,IAAA,aAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wDAAwD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,uBAAuB,CAAC,CAAC;QAE/J,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEtC,4DAA4D;QAC5D,qBAAM,CAAC,mBAAmB,EAAE,CAAC;QAC7B,qBAAM,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEzG,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;YAC5C,IAAI,CAAC,oBAAoB,GAAG,MAAM,IAAA,oCAAyB,EAAC;gBAC1D,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;gBACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;aACnB,EAAE;gBACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;gBACpC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;gBACvC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;aACe,CAAC,CAAC;SACnD;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,mBAAmB;YACjD,IAAI,CAAC,iBAAiB,GAAG,MAAM,IAAA,8CAA+B,
|
|
1
|
+
{"version":3,"file":"TestContext.js","sourceRoot":"","sources":["../../../src/frontend/setup/TestContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { expect } from \"chai\";\nimport { AccessToken, Logger, LogLevel } from \"@itwin/core-bentley\";\nimport { BentleyCloudRpcManager, OpenAPIInfo } from \"@itwin/core-common\";\nimport { NoRenderApp } from \"@itwin/core-frontend\";\nimport {\n getAccessTokenFromBackend, TestBrowserAuthorizationClientConfiguration, TestFrontendAuthorizationClient, TestUserCredentials,\n} from \"@itwin/oidc-signin-tool/lib/cjs/frontend\";\nimport { getRpcInterfaces, Settings } from \"../../common/Settings\";\nimport { getClientAccessTokenFromBackend, getProcessEnvFromBackend } from \"../../common/SideChannels\";\nimport { IModelSession } from \"./IModelSession\";\nimport { IModelHubFrontend } from \"@bentley/imodelhub-client\";\n\ndeclare const PACKAGE_VERSION: string;\n\n/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/indent */\n\nexport class TestContext {\n public adminUserAccessToken!: AccessToken;\n public clientAccessToken?: AccessToken;\n\n public iModelWithChangesets?: IModelSession;\n public iModelForWrite?: IModelSession;\n public iTwinId?: string;\n\n public settings: Settings;\n\n private constructor(env: NodeJS.ProcessEnv) {\n this.settings = new Settings(env);\n }\n private static _instance?: TestContext = undefined;\n\n public static async instance(): Promise<TestContext> {\n if (this._instance === undefined) {\n this._instance = new TestContext(await getProcessEnvFromBackend());\n await this._instance.initialize();\n }\n return this._instance;\n }\n\n /** Initialize configuration for the rpc interfaces used by the application. */\n private initializeRpcInterfaces(info: OpenAPIInfo) {\n // Url without trailing slash\n const uriPrefix: string = this.settings.Backend.location.replace(/\\/$/, \"\");\n BentleyCloudRpcManager.initializeClient({ info, uriPrefix }, getRpcInterfaces(this.settings));\n }\n\n private async initialize() {\n expect(this.settings.users.length).to.be.gte(1, `Unexpected number of users found in settings - got ${this.settings.users.length}, expected at least 2`);\n expect(this.settings.iModels.length).to.be.gte(1, `Unexpected number of iModels found in settings - got ${this.settings.iModels.length}, expected at least 1`);\n\n // Print out the configuration\n console.log(this.settings.toString());\n\n // Configure iModel.js frontend logging to go to the console\n Logger.initializeToConsole();\n Logger.setLevelDefault(this.settings.logLevel === undefined ? LogLevel.Warning : this.settings.logLevel);\n\n if (undefined !== this.settings.oidcClientId) {\n this.adminUserAccessToken = await getAccessTokenFromBackend({\n email: this.settings.users[0].email,\n password: this.settings.users[0].password,\n } as TestUserCredentials, {\n clientId: this.settings.oidcClientId,\n redirectUri: this.settings.oidcRedirect,\n scope: this.settings.oidcScopes,\n } as TestBrowserAuthorizationClientConfiguration);\n }\n\n if (undefined !== this.settings.clientConfiguration)\n this.clientAccessToken = await getClientAccessTokenFromBackend();\n\n this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });\n\n await NoRenderApp.startup({\n applicationVersion: PACKAGE_VERSION,\n applicationId: this.settings.gprid,\n authorizationClient: new TestFrontendAuthorizationClient(this.adminUserAccessToken),\n hubAccess: new IModelHubFrontend(),\n });\n\n this.iModelWithChangesets = await IModelSession.create(this.adminUserAccessToken, this.settings.iModel);\n this.iTwinId = this.iModelWithChangesets.iTwinId;\n if (this.settings.runiModelWriteRpcTests)\n this.iModelForWrite = await IModelSession.create(this.adminUserAccessToken, this.settings.writeIModel);\n\n console.log(\"TestSetup: Done\");\n }\n}\n"]}
|
|
@@ -13,6 +13,7 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
const chai = require("chai");
|
|
15
15
|
const chaiAsPromised = require("chai-as-promised");
|
|
16
|
+
const core_common_1 = require("@itwin/core-common");
|
|
16
17
|
const core_frontend_1 = require("@itwin/core-frontend");
|
|
17
18
|
const frontend_1 = require("@itwin/oidc-signin-tool/lib/cjs/frontend");
|
|
18
19
|
const TestContext_1 = require("../setup/TestContext");
|
|
@@ -50,7 +51,7 @@ describe("Basic Scenarios", async () => {
|
|
|
50
51
|
const iModel = await testContext.iModelWithChangesets.getConnection();
|
|
51
52
|
const rows = [];
|
|
52
53
|
try {
|
|
53
|
-
for (var _b = __asyncValues(iModel.query("SELECT ECInstanceId AS id FROM BisCore.Element", undefined, 10)), _c; _c = await _b.next(), !_c.done;) {
|
|
54
|
+
for (var _b = __asyncValues(iModel.query("SELECT ECInstanceId AS id FROM BisCore.Element", undefined, core_common_1.QueryRowFormat.UseJsPropertyNames, { limit: { count: 10 } })), _c; _c = await _b.next(), !_c.done;) {
|
|
54
55
|
const row = _c.value;
|
|
55
56
|
rows.push(row);
|
|
56
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasicScenarios.test.js","sourceRoot":"","sources":["../../../src/frontend/workflows/BasicScenarios.test.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;AAE/F,6BAA6B;AAC7B,mDAAmD;AACnD,wDAAuE;AACvE,uEAA2F;AAC3F,sDAAmD;AAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE3B,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAEzB,QAAQ,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;IACrC,IAAI,WAAwB,CAAC;IAE7B,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,WAAW,GAAG,MAAM,yBAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,WAAW,CAAC,oBAAoB,CAAC;QACrD,yBAAS,CAAC,mBAAmB,GAAG,IAAI,0CAA+B,CAAC,WAAW,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,sBAAsB,CAAC,OAAe,EAAE,QAAgB;QACrE,MAAM,MAAM,GAAG,MAAM,oCAAoB,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEjC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC9B,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,EAAE,CAAC,kHAAkH,EAAE,KAAK,IAAI,EAAE;QAChI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QAEpC,MAAM,QAAQ,GAAG,WAAW,CAAC,oBAAqB,CAAC,QAAQ,CAAC;QAC5D,MAAM,sBAAsB,CAAC,OAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,sFAAsF;IACtF,EAAE,CAAC,IAAI,CAAC,qHAAqH,EAAE,KAAK,IAAI,EAAE;QACxI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QAEpC,MAAM,QAAQ,GAAG,WAAW,CAAC,oBAAqB,CAAC,QAAQ,CAAC;QAC5D,MAAM,sBAAsB,CAAC,OAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;;QACpE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAqB,CAAC,aAAa,EAAE,CAAC;QAEvE,MAAM,IAAI,GAAG,EAAE,CAAC;;YAChB,KAAwB,IAAA,KAAA,cAAA,MAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA,IAAA;
|
|
1
|
+
{"version":3,"file":"BasicScenarios.test.js","sourceRoot":"","sources":["../../../src/frontend/workflows/BasicScenarios.test.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;AAE/F,6BAA6B;AAC7B,mDAAmD;AACnD,oDAAoD;AACpD,wDAAuE;AACvE,uEAA2F;AAC3F,sDAAmD;AAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE3B,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAEzB,QAAQ,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;IACrC,IAAI,WAAwB,CAAC;IAE7B,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,WAAW,GAAG,MAAM,yBAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,WAAW,CAAC,oBAAoB,CAAC;QACrD,yBAAS,CAAC,mBAAmB,GAAG,IAAI,0CAA+B,CAAC,WAAW,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,sBAAsB,CAAC,OAAe,EAAE,QAAgB;QACrE,MAAM,MAAM,GAAG,MAAM,oCAAoB,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEjC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC9B,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,EAAE,CAAC,kHAAkH,EAAE,KAAK,IAAI,EAAE;QAChI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QAEpC,MAAM,QAAQ,GAAG,WAAW,CAAC,oBAAqB,CAAC,QAAQ,CAAC;QAC5D,MAAM,sBAAsB,CAAC,OAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,sFAAsF;IACtF,EAAE,CAAC,IAAI,CAAC,qHAAqH,EAAE,KAAK,IAAI,EAAE;QACxI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QAEpC,MAAM,QAAQ,GAAG,WAAW,CAAC,oBAAqB,CAAC,QAAQ,CAAC;QAC5D,MAAM,sBAAsB,CAAC,OAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;;QACpE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAqB,CAAC,aAAa,EAAE,CAAC;QAEvE,MAAM,IAAI,GAAG,EAAE,CAAC;;YAChB,KAAwB,IAAA,KAAA,cAAA,MAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE,SAAS,EAAE,4BAAc,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAC,EAAC,KAAK,EAAE,EAAE,EAAC,EAAC,CAAC,CAAA,IAAA;gBAA/I,MAAM,GAAG,WAAA,CAAA;gBAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAAA;;;;;;;;;QAEjB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6CC;AACH,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport * as chai from \"chai\";\nimport * as chaiAsPromised from \"chai-as-promised\";\nimport { QueryRowFormat } from \"@itwin/core-common\";\nimport { CheckpointConnection, IModelApp } from \"@itwin/core-frontend\";\nimport { TestFrontendAuthorizationClient } from \"@itwin/oidc-signin-tool/lib/cjs/frontend\";\nimport { TestContext } from \"../setup/TestContext\";\n\nconst expect = chai.expect;\n\nchai.use(chaiAsPromised);\n\ndescribe(\"Basic Scenarios\", async () => {\n let testContext: TestContext;\n\n before(async () => {\n testContext = await TestContext.instance();\n const accessToken = testContext.adminUserAccessToken;\n IModelApp.authorizationClient = new TestFrontendAuthorizationClient(accessToken);\n });\n\n async function openIModelAndQueryPage(iTwinId: string, iModelId: string) {\n const iModel = await CheckpointConnection.openRemote(iTwinId, iModelId);\n expect(iModel).to.exist;\n expect(iModel.elements).to.exist;\n\n const elements = iModel.elements;\n const elementProps = await elements.getProps(elements.rootSubjectId);\n expect(elementProps).to.exist;\n expect(elementProps.length).to.equal(1);\n }\n\n it(\"should successfully open a new IModel with changesets for read and Get Properties for an Element TestCase:819342\", async () => {\n const iTwinId = testContext.iTwinId;\n\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n await openIModelAndQueryPage(iTwinId!, iModelId);\n });\n\n // imodeljs does not allow this -- changesetid must be non-empty for routing purposes.\n it.skip(\"should successfully open a new IModel without changesets for read and Get Properties for an Element TestCase:872675\", async () => {\n const iTwinId = testContext.iTwinId;\n\n const iModelId = testContext.iModelWithChangesets!.iModelId;\n await openIModelAndQueryPage(iTwinId!, iModelId);\n });\n\n it(\"should open iModel and Execute Query TestCase:819343\", async () => {\n const iModel = await testContext.iModelWithChangesets!.getConnection();\n\n const rows = [];\n for await (const row of iModel.query(\"SELECT ECInstanceId AS id FROM BisCore.Element\", undefined, QueryRowFormat.UseJsPropertyNames, { limit:{count: 10}}))\n rows.push(row);\n\n expect(rows).not.to.be.empty;\n });\n\n /* This test is wrong. If two users open the same imodel using the same mode in the same backend, then they\n will share a single briefcase in the backend. When either user closes the imodel, then the briefcase will\n be closed. The backend does not maintain some kind of ref count that would keep the briefcase open\n for the second connection.\n it(\"should not affect other users when iModel is closed TestCase:819344 #orchestrator\", async () => {\n const iModelId = testContext.iModelWithChangesets.iModelId;\n const iTwinId = testContext.iModelWithChangesets.iTwinId;\n const openMode = OpenMode.Readonly;\n\n const originalAppAuth = TestRpcClientManager.configuration.applicationAuthorizationValue;\n\n try {\n // Get access token of user that does not have permission to read given iModel\n const user1accessToken = await testContext.regularUser1.getAccessToken();\n const user1accessTokenString = user1accessToken.toTokenString() || \"\";\n\n TestRpcClientManager.configuration.applicationAuthorizationValue = user1accessTokenString;\n const iModel1 = await IModelConnection.open(user1accessToken, iTwinId, iModelId, openMode);\n\n // Open the same imodel for another user\n const user2accessToken = await testContext.regularUser2.getAccessToken();\n const user2accessTokenString = user2accessToken.toTokenString() || \"\";\n\n TestRpcClientManager.configuration.applicationAuthorizationValue = user2accessTokenString;\n const iModel2 = await IModelConnection.open(user2accessToken, iTwinId, iModelId, openMode);\n const query = \"SELECT ECInstanceId AS id FROM BisCore.Element\";\n\n // Act: Close the iModel for the same user\n {\n TestRpcClientManager.configuration.applicationAuthorizationValue = user1accessTokenString;\n const rows = await iModel1.queryPage(query);\n expect(rows).to.exist.and.be.not.empty;\n await iModel1.close(user1accessToken);\n }\n\n // Assert: Previous session close should not affect other users\n {\n TestRpcClientManager.configuration.applicationAuthorizationValue = user2accessTokenString;\n const rows = await iModel2.queryPage(query);\n expect(rows).to.exist.and.be.not.empty;\n }\n } finally {\n TestRpcClientManager.configuration.applicationAuthorizationValue = originalAppAuth;\n }\n });\n */\n});\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/rpcinterface-full-stack-tests",
|
|
3
|
-
"version": "3.0.0-dev.
|
|
3
|
+
"version": "3.0.0-dev.83",
|
|
4
4
|
"description": "Test the full iModel.js stack (frontend and backend) using standard RPC interfaces",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -18,22 +18,21 @@
|
|
|
18
18
|
"url": "http://www.bentley.com"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@
|
|
22
|
-
"@itwin/
|
|
23
|
-
"@itwin/
|
|
24
|
-
"@itwin/
|
|
25
|
-
"@itwin/
|
|
26
|
-
"@
|
|
27
|
-
"@
|
|
28
|
-
"@itwin/core-
|
|
29
|
-
"@itwin/core-
|
|
30
|
-
"@itwin/core-
|
|
31
|
-
"@itwin/
|
|
32
|
-
"@
|
|
33
|
-
"@itwin/
|
|
34
|
-
"@
|
|
35
|
-
"@itwin/
|
|
36
|
-
"@bentley/telemetry-client": "3.0.0-dev.79",
|
|
21
|
+
"@itwin/core-bentley": "3.0.0-dev.83",
|
|
22
|
+
"@itwin/build-tools": "3.0.0-dev.83",
|
|
23
|
+
"@itwin/certa": "3.0.0-dev.83",
|
|
24
|
+
"@itwin/eslint-plugin": "3.0.0-dev.83",
|
|
25
|
+
"@itwin/core-geometry": "3.0.0-dev.83",
|
|
26
|
+
"@bentley/imodelhub-client": "3.0.0-dev.83",
|
|
27
|
+
"@itwin/core-common": "3.0.0-dev.83",
|
|
28
|
+
"@itwin/core-frontend": "3.0.0-dev.83",
|
|
29
|
+
"@itwin/core-i18n": "3.0.0-dev.83",
|
|
30
|
+
"@itwin/core-quantity": "3.0.0-dev.83",
|
|
31
|
+
"@itwin/oidc-signin-tool": "3.0.0-dev.83",
|
|
32
|
+
"@itwin/presentation-common": "3.0.0-dev.83",
|
|
33
|
+
"@itwin/presentation-frontend": "3.0.0-dev.83",
|
|
34
|
+
"@bentley/telemetry-client": "3.0.0-dev.83",
|
|
35
|
+
"@itwin/service-authorization": "^0.2.0",
|
|
37
36
|
"chai": "^4.1.2",
|
|
38
37
|
"chai-as-promised": "^7",
|
|
39
38
|
"dotenv": "^10.0.0",
|
|
@@ -43,10 +42,10 @@
|
|
|
43
42
|
"puppeteer": "chrome-86"
|
|
44
43
|
},
|
|
45
44
|
"devDependencies": {
|
|
46
|
-
"@itwin/express-server": "3.0.0-dev.
|
|
47
|
-
"@itwin/core-backend": "3.0.0-dev.
|
|
48
|
-
"@itwin/presentation-backend": "3.0.0-dev.
|
|
49
|
-
"@bentley/itwin-registry-client": "3.0.0-dev.
|
|
45
|
+
"@itwin/express-server": "3.0.0-dev.83",
|
|
46
|
+
"@itwin/core-backend": "3.0.0-dev.83",
|
|
47
|
+
"@itwin/presentation-backend": "3.0.0-dev.83",
|
|
48
|
+
"@bentley/itwin-registry-client": "3.0.0-dev.83",
|
|
50
49
|
"@types/chai": "^4.1.4",
|
|
51
50
|
"@types/chai-as-promised": "^7",
|
|
52
51
|
"@types/mocha": "^8.2.2",
|