tm1npm 1.0.0
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/.env.example +16 -0
- package/.eslintrc.js +28 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/.github/ISSUE_TEMPLATE/question.md +24 -0
- package/.github/workflows/publish-npm.yml +53 -0
- package/.github/workflows/test-on-tag.yml +172 -0
- package/DEVELOPMENT_GUIDE.md +587 -0
- package/LICENSE +21 -0
- package/README.md +580 -0
- package/jest.ci.config.js +83 -0
- package/jest.config.js +68 -0
- package/lib/exceptions/TM1Exception.d.ts +17 -0
- package/lib/exceptions/TM1Exception.d.ts.map +1 -0
- package/lib/exceptions/TM1Exception.js +36 -0
- package/lib/exceptions/TM1RestException.d.ts +10 -0
- package/lib/exceptions/TM1RestException.d.ts.map +1 -0
- package/lib/exceptions/TM1RestException.js +17 -0
- package/lib/exceptions/TM1TimeoutException.d.ts +9 -0
- package/lib/exceptions/TM1TimeoutException.d.ts.map +1 -0
- package/lib/exceptions/TM1TimeoutException.js +16 -0
- package/lib/index.d.ts +41 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +132 -0
- package/lib/objects/Annotation.d.ts +36 -0
- package/lib/objects/Annotation.d.ts.map +1 -0
- package/lib/objects/Annotation.js +134 -0
- package/lib/objects/Application.d.ts +67 -0
- package/lib/objects/Application.d.ts.map +1 -0
- package/lib/objects/Application.js +125 -0
- package/lib/objects/Axis.d.ts +36 -0
- package/lib/objects/Axis.d.ts.map +1 -0
- package/lib/objects/Axis.js +103 -0
- package/lib/objects/Chore.d.ts +43 -0
- package/lib/objects/Chore.d.ts.map +1 -0
- package/lib/objects/Chore.js +129 -0
- package/lib/objects/ChoreFrequency.d.ts +23 -0
- package/lib/objects/ChoreFrequency.d.ts.map +1 -0
- package/lib/objects/ChoreFrequency.js +61 -0
- package/lib/objects/ChoreStartTime.d.ts +15 -0
- package/lib/objects/ChoreStartTime.d.ts.map +1 -0
- package/lib/objects/ChoreStartTime.js +85 -0
- package/lib/objects/ChoreTask.d.ts +28 -0
- package/lib/objects/ChoreTask.d.ts.map +1 -0
- package/lib/objects/ChoreTask.js +66 -0
- package/lib/objects/Cube.d.ts +26 -0
- package/lib/objects/Cube.d.ts.map +1 -0
- package/lib/objects/Cube.js +109 -0
- package/lib/objects/Dimension.d.ts +26 -0
- package/lib/objects/Dimension.d.ts.map +1 -0
- package/lib/objects/Dimension.js +86 -0
- package/lib/objects/Element.d.ts +35 -0
- package/lib/objects/Element.d.ts.map +1 -0
- package/lib/objects/Element.js +115 -0
- package/lib/objects/ElementAttribute.d.ts +28 -0
- package/lib/objects/ElementAttribute.d.ts.map +1 -0
- package/lib/objects/ElementAttribute.js +97 -0
- package/lib/objects/Git.d.ts +21 -0
- package/lib/objects/Git.d.ts.map +1 -0
- package/lib/objects/Git.js +49 -0
- package/lib/objects/GitCommit.d.ts +12 -0
- package/lib/objects/GitCommit.d.ts.map +1 -0
- package/lib/objects/GitCommit.js +26 -0
- package/lib/objects/GitPlan.d.ts +35 -0
- package/lib/objects/GitPlan.d.ts.map +1 -0
- package/lib/objects/GitPlan.js +78 -0
- package/lib/objects/GitRemote.d.ts +12 -0
- package/lib/objects/GitRemote.d.ts.map +1 -0
- package/lib/objects/GitRemote.js +26 -0
- package/lib/objects/Hierarchy.d.ts +47 -0
- package/lib/objects/Hierarchy.d.ts.map +1 -0
- package/lib/objects/Hierarchy.js +165 -0
- package/lib/objects/MDXView.d.ts +19 -0
- package/lib/objects/MDXView.d.ts.map +1 -0
- package/lib/objects/MDXView.js +67 -0
- package/lib/objects/NativeView.d.ts +39 -0
- package/lib/objects/NativeView.d.ts.map +1 -0
- package/lib/objects/NativeView.js +209 -0
- package/lib/objects/Process.d.ts +70 -0
- package/lib/objects/Process.d.ts.map +1 -0
- package/lib/objects/Process.js +210 -0
- package/lib/objects/ProcessDebugBreakpoint.d.ts +60 -0
- package/lib/objects/ProcessDebugBreakpoint.d.ts.map +1 -0
- package/lib/objects/ProcessDebugBreakpoint.js +168 -0
- package/lib/objects/ProcessParameter.d.ts +23 -0
- package/lib/objects/ProcessParameter.d.ts.map +1 -0
- package/lib/objects/ProcessParameter.js +55 -0
- package/lib/objects/ProcessVariable.d.ts +26 -0
- package/lib/objects/ProcessVariable.d.ts.map +1 -0
- package/lib/objects/ProcessVariable.js +63 -0
- package/lib/objects/Rules.d.ts +30 -0
- package/lib/objects/Rules.d.ts.map +1 -0
- package/lib/objects/Rules.js +103 -0
- package/lib/objects/Sandbox.d.ts +21 -0
- package/lib/objects/Sandbox.d.ts.map +1 -0
- package/lib/objects/Sandbox.js +64 -0
- package/lib/objects/Server.d.ts +27 -0
- package/lib/objects/Server.d.ts.map +1 -0
- package/lib/objects/Server.js +26 -0
- package/lib/objects/Subset.d.ts +44 -0
- package/lib/objects/Subset.d.ts.map +1 -0
- package/lib/objects/Subset.js +222 -0
- package/lib/objects/TM1Object.d.ts +8 -0
- package/lib/objects/TM1Object.d.ts.map +1 -0
- package/lib/objects/TM1Object.js +17 -0
- package/lib/objects/TM1Project.d.ts +74 -0
- package/lib/objects/TM1Project.d.ts.map +1 -0
- package/lib/objects/TM1Project.js +409 -0
- package/lib/objects/User.d.ts +42 -0
- package/lib/objects/User.d.ts.map +1 -0
- package/lib/objects/User.js +157 -0
- package/lib/objects/View.d.ts +19 -0
- package/lib/objects/View.d.ts.map +1 -0
- package/lib/objects/View.js +33 -0
- package/lib/objects/index.d.ts +30 -0
- package/lib/objects/index.d.ts.map +1 -0
- package/lib/objects/index.js +68 -0
- package/lib/services/AnnotationService.d.ts +17 -0
- package/lib/services/AnnotationService.d.ts.map +1 -0
- package/lib/services/AnnotationService.js +91 -0
- package/lib/services/ApplicationService.d.ts +21 -0
- package/lib/services/ApplicationService.d.ts.map +1 -0
- package/lib/services/ApplicationService.js +227 -0
- package/lib/services/AuditLogService.d.ts +15 -0
- package/lib/services/AuditLogService.d.ts.map +1 -0
- package/lib/services/AuditLogService.js +153 -0
- package/lib/services/CellService.d.ts +191 -0
- package/lib/services/CellService.d.ts.map +1 -0
- package/lib/services/CellService.js +597 -0
- package/lib/services/ChoreService.d.ts +24 -0
- package/lib/services/ChoreService.d.ts.map +1 -0
- package/lib/services/ChoreService.js +219 -0
- package/lib/services/ConfigurationService.d.ts +18 -0
- package/lib/services/ConfigurationService.d.ts.map +1 -0
- package/lib/services/ConfigurationService.js +60 -0
- package/lib/services/CubeService.d.ts +43 -0
- package/lib/services/CubeService.d.ts.map +1 -0
- package/lib/services/CubeService.js +296 -0
- package/lib/services/DimensionService.d.ts +21 -0
- package/lib/services/DimensionService.d.ts.map +1 -0
- package/lib/services/DimensionService.js +146 -0
- package/lib/services/ElementService.d.ts +132 -0
- package/lib/services/ElementService.d.ts.map +1 -0
- package/lib/services/ElementService.js +579 -0
- package/lib/services/FileService.d.ts +14 -0
- package/lib/services/FileService.d.ts.map +1 -0
- package/lib/services/FileService.js +65 -0
- package/lib/services/GitService.d.ts +23 -0
- package/lib/services/GitService.d.ts.map +1 -0
- package/lib/services/GitService.js +225 -0
- package/lib/services/HierarchyService.d.ts +32 -0
- package/lib/services/HierarchyService.d.ts.map +1 -0
- package/lib/services/HierarchyService.js +235 -0
- package/lib/services/JobService.d.ts +13 -0
- package/lib/services/JobService.d.ts.map +1 -0
- package/lib/services/JobService.js +83 -0
- package/lib/services/LoggerService.d.ts +16 -0
- package/lib/services/LoggerService.d.ts.map +1 -0
- package/lib/services/LoggerService.js +101 -0
- package/lib/services/ManageService.d.ts +47 -0
- package/lib/services/ManageService.d.ts.map +1 -0
- package/lib/services/ManageService.js +221 -0
- package/lib/services/MessageLogService.d.ts +13 -0
- package/lib/services/MessageLogService.d.ts.map +1 -0
- package/lib/services/MessageLogService.js +175 -0
- package/lib/services/MonitoringService.d.ts +29 -0
- package/lib/services/MonitoringService.d.ts.map +1 -0
- package/lib/services/MonitoringService.js +86 -0
- package/lib/services/ObjectService.d.ts +8 -0
- package/lib/services/ObjectService.d.ts.map +1 -0
- package/lib/services/ObjectService.js +20 -0
- package/lib/services/PowerBiService.d.ts +13 -0
- package/lib/services/PowerBiService.d.ts.map +1 -0
- package/lib/services/PowerBiService.js +52 -0
- package/lib/services/ProcessService.d.ts +57 -0
- package/lib/services/ProcessService.d.ts.map +1 -0
- package/lib/services/ProcessService.js +499 -0
- package/lib/services/RestService.d.ts +68 -0
- package/lib/services/RestService.d.ts.map +1 -0
- package/lib/services/RestService.js +166 -0
- package/lib/services/SandboxService.d.ts +28 -0
- package/lib/services/SandboxService.d.ts.map +1 -0
- package/lib/services/SandboxService.js +197 -0
- package/lib/services/SecurityService.d.ts +33 -0
- package/lib/services/SecurityService.d.ts.map +1 -0
- package/lib/services/SecurityService.js +249 -0
- package/lib/services/ServerService.d.ts +55 -0
- package/lib/services/ServerService.d.ts.map +1 -0
- package/lib/services/ServerService.js +247 -0
- package/lib/services/SessionService.d.ts +15 -0
- package/lib/services/SessionService.d.ts.map +1 -0
- package/lib/services/SessionService.js +68 -0
- package/lib/services/SubsetService.d.ts +13 -0
- package/lib/services/SubsetService.d.ts.map +1 -0
- package/lib/services/SubsetService.js +46 -0
- package/lib/services/TM1Service.d.ts +39 -0
- package/lib/services/TM1Service.d.ts.map +1 -0
- package/lib/services/TM1Service.js +94 -0
- package/lib/services/ThreadService.d.ts +15 -0
- package/lib/services/ThreadService.d.ts.map +1 -0
- package/lib/services/ThreadService.js +104 -0
- package/lib/services/TransactionLogService.d.ts +11 -0
- package/lib/services/TransactionLogService.d.ts.map +1 -0
- package/lib/services/TransactionLogService.js +124 -0
- package/lib/services/UserService.d.ts +14 -0
- package/lib/services/UserService.d.ts.map +1 -0
- package/lib/services/UserService.js +103 -0
- package/lib/services/ViewService.d.ts +30 -0
- package/lib/services/ViewService.d.ts.map +1 -0
- package/lib/services/ViewService.js +331 -0
- package/lib/services/index.d.ts +26 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/services/index.js +56 -0
- package/lib/tests/100PercentParityCheck.test.d.ts +6 -0
- package/lib/tests/100PercentParityCheck.test.d.ts.map +1 -0
- package/lib/tests/100PercentParityCheck.test.js +143 -0
- package/lib/tests/basic.test.d.ts +6 -0
- package/lib/tests/basic.test.d.ts.map +1 -0
- package/lib/tests/basic.test.js +52 -0
- package/lib/tests/cellService.test.d.ts +6 -0
- package/lib/tests/cellService.test.d.ts.map +1 -0
- package/lib/tests/cellService.test.js +311 -0
- package/lib/tests/ciSetup.d.ts +6 -0
- package/lib/tests/ciSetup.d.ts.map +1 -0
- package/lib/tests/ciSetup.js +23 -0
- package/lib/tests/comprehensive.service.test.d.ts +6 -0
- package/lib/tests/comprehensive.service.test.d.ts.map +1 -0
- package/lib/tests/comprehensive.service.test.js +507 -0
- package/lib/tests/connection.test.d.ts +6 -0
- package/lib/tests/connection.test.d.ts.map +1 -0
- package/lib/tests/connection.test.js +89 -0
- package/lib/tests/cubeService.test.d.ts +6 -0
- package/lib/tests/cubeService.test.d.ts.map +1 -0
- package/lib/tests/cubeService.test.js +368 -0
- package/lib/tests/dimensionService.comprehensive.test.d.ts +7 -0
- package/lib/tests/dimensionService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/dimensionService.comprehensive.test.js +614 -0
- package/lib/tests/dimensionService.test.d.ts +6 -0
- package/lib/tests/dimensionService.test.d.ts.map +1 -0
- package/lib/tests/dimensionService.test.js +293 -0
- package/lib/tests/edgeCases.test.d.ts +6 -0
- package/lib/tests/edgeCases.test.d.ts.map +1 -0
- package/lib/tests/edgeCases.test.js +301 -0
- package/lib/tests/elementService.comprehensive.test.d.ts +7 -0
- package/lib/tests/elementService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/elementService.comprehensive.test.js +846 -0
- package/lib/tests/elementService.test.d.ts +6 -0
- package/lib/tests/elementService.test.d.ts.map +1 -0
- package/lib/tests/elementService.test.js +350 -0
- package/lib/tests/enhancedCellService.test.d.ts +2 -0
- package/lib/tests/enhancedCellService.test.d.ts.map +1 -0
- package/lib/tests/enhancedCellService.test.js +152 -0
- package/lib/tests/enhancedCubeService.test.d.ts +2 -0
- package/lib/tests/enhancedCubeService.test.d.ts.map +1 -0
- package/lib/tests/enhancedCubeService.test.js +246 -0
- package/lib/tests/enhancedElementService.test.d.ts +2 -0
- package/lib/tests/enhancedElementService.test.d.ts.map +1 -0
- package/lib/tests/enhancedElementService.test.js +199 -0
- package/lib/tests/enhancedViewService.test.d.ts +2 -0
- package/lib/tests/enhancedViewService.test.d.ts.map +1 -0
- package/lib/tests/enhancedViewService.test.js +260 -0
- package/lib/tests/errorHandling.test.d.ts +6 -0
- package/lib/tests/errorHandling.test.d.ts.map +1 -0
- package/lib/tests/errorHandling.test.js +227 -0
- package/lib/tests/exceptions.test.d.ts +7 -0
- package/lib/tests/exceptions.test.d.ts.map +1 -0
- package/lib/tests/exceptions.test.js +257 -0
- package/lib/tests/hierarchyService.test.d.ts +6 -0
- package/lib/tests/hierarchyService.test.d.ts.map +1 -0
- package/lib/tests/hierarchyService.test.js +294 -0
- package/lib/tests/index.test.d.ts +6 -0
- package/lib/tests/index.test.d.ts.map +1 -0
- package/lib/tests/index.test.js +346 -0
- package/lib/tests/integration.test.d.ts +6 -0
- package/lib/tests/integration.test.d.ts.map +1 -0
- package/lib/tests/integration.test.js +302 -0
- package/lib/tests/integrationTests.test.d.ts +2 -0
- package/lib/tests/integrationTests.test.d.ts.map +1 -0
- package/lib/tests/integrationTests.test.js +252 -0
- package/lib/tests/mdx.advanced.test.d.ts +6 -0
- package/lib/tests/mdx.advanced.test.d.ts.map +1 -0
- package/lib/tests/mdx.advanced.test.js +437 -0
- package/lib/tests/objects.improved.test.d.ts +7 -0
- package/lib/tests/objects.improved.test.d.ts.map +1 -0
- package/lib/tests/objects.improved.test.js +302 -0
- package/lib/tests/performance.test.d.ts +6 -0
- package/lib/tests/performance.test.d.ts.map +1 -0
- package/lib/tests/performance.test.js +264 -0
- package/lib/tests/processService.comprehensive.test.d.ts +7 -0
- package/lib/tests/processService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/processService.comprehensive.test.js +656 -0
- package/lib/tests/processService.test.d.ts +6 -0
- package/lib/tests/processService.test.d.ts.map +1 -0
- package/lib/tests/processService.test.js +322 -0
- package/lib/tests/restService.test.d.ts +6 -0
- package/lib/tests/restService.test.d.ts.map +1 -0
- package/lib/tests/restService.test.js +177 -0
- package/lib/tests/security.advanced.test.d.ts +6 -0
- package/lib/tests/security.advanced.test.d.ts.map +1 -0
- package/lib/tests/security.advanced.test.js +407 -0
- package/lib/tests/security.test.d.ts +6 -0
- package/lib/tests/security.test.d.ts.map +1 -0
- package/lib/tests/security.test.js +204 -0
- package/lib/tests/securityService.comprehensive.test.d.ts +7 -0
- package/lib/tests/securityService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/securityService.comprehensive.test.js +457 -0
- package/lib/tests/setup.d.ts +4 -0
- package/lib/tests/setup.d.ts.map +1 -0
- package/lib/tests/setup.js +40 -0
- package/lib/tests/simpleCoverage.test.d.ts +6 -0
- package/lib/tests/simpleCoverage.test.d.ts.map +1 -0
- package/lib/tests/simpleCoverage.test.js +236 -0
- package/lib/tests/stress.performance.test.d.ts +6 -0
- package/lib/tests/stress.performance.test.d.ts.map +1 -0
- package/lib/tests/stress.performance.test.js +423 -0
- package/lib/tests/subsetService.test.d.ts +6 -0
- package/lib/tests/subsetService.test.d.ts.map +1 -0
- package/lib/tests/subsetService.test.js +271 -0
- package/lib/tests/testConfig.d.ts +18 -0
- package/lib/tests/testConfig.d.ts.map +1 -0
- package/lib/tests/testConfig.js +38 -0
- package/lib/tests/testUtils.d.ts +9 -0
- package/lib/tests/testUtils.d.ts.map +1 -0
- package/lib/tests/testUtils.js +100 -0
- package/lib/tests/tm1Service.test.d.ts +7 -0
- package/lib/tests/tm1Service.test.d.ts.map +1 -0
- package/lib/tests/tm1Service.test.js +290 -0
- package/lib/tests/viewService.test.d.ts +6 -0
- package/lib/tests/viewService.test.d.ts.map +1 -0
- package/lib/tests/viewService.test.js +240 -0
- package/lib/utils/Utils.d.ts +90 -0
- package/lib/utils/Utils.d.ts.map +1 -0
- package/lib/utils/Utils.js +379 -0
- package/package.json +81 -0
- package/run-all-tests.js +296 -0
- package/src/exceptions/TM1Exception.ts +38 -0
- package/src/exceptions/TM1RestException.ts +17 -0
- package/src/exceptions/TM1TimeoutException.ts +15 -0
- package/src/index.ts +94 -0
- package/src/objects/Annotation.ts +194 -0
- package/src/objects/Application.ts +146 -0
- package/src/objects/Axis.ts +149 -0
- package/src/objects/Chore.ts +174 -0
- package/src/objects/ChoreFrequency.ts +83 -0
- package/src/objects/ChoreStartTime.ts +111 -0
- package/src/objects/ChoreTask.ts +92 -0
- package/src/objects/Cube.ts +125 -0
- package/src/objects/Dimension.ts +107 -0
- package/src/objects/Element.ts +153 -0
- package/src/objects/ElementAttribute.ts +115 -0
- package/src/objects/Git.ts +86 -0
- package/src/objects/GitCommit.ts +31 -0
- package/src/objects/GitPlan.ts +121 -0
- package/src/objects/GitRemote.ts +31 -0
- package/src/objects/Hierarchy.ts +229 -0
- package/src/objects/MDXView.ts +91 -0
- package/src/objects/NativeView.ts +268 -0
- package/src/objects/Process.ts +320 -0
- package/src/objects/ProcessDebugBreakpoint.ts +239 -0
- package/src/objects/ProcessParameter.ts +76 -0
- package/src/objects/ProcessVariable.ts +89 -0
- package/src/objects/Rules.ts +117 -0
- package/src/objects/Sandbox.ts +90 -0
- package/src/objects/Server.ts +45 -0
- package/src/objects/Subset.ts +323 -0
- package/src/objects/TM1Object.ts +17 -0
- package/src/objects/TM1Project.ts +587 -0
- package/src/objects/User.ts +198 -0
- package/src/objects/View.ts +43 -0
- package/src/objects/index.ts +36 -0
- package/src/services/AnnotationService.ts +107 -0
- package/src/services/ApplicationService.ts +279 -0
- package/src/services/AuditLogService.ts +172 -0
- package/src/services/CellService.ts +814 -0
- package/src/services/ChoreService.ts +219 -0
- package/src/services/ConfigurationService.ts +69 -0
- package/src/services/CubeService.ts +338 -0
- package/src/services/DimensionService.ts +168 -0
- package/src/services/ElementService.ts +966 -0
- package/src/services/FileService.ts +67 -0
- package/src/services/GitService.ts +324 -0
- package/src/services/HierarchyService.ts +284 -0
- package/src/services/JobService.ts +59 -0
- package/src/services/LoggerService.ts +118 -0
- package/src/services/ManageService.ts +322 -0
- package/src/services/MessageLogService.ts +211 -0
- package/src/services/MonitoringService.ts +105 -0
- package/src/services/ObjectService.ts +21 -0
- package/src/services/PowerBiService.ts +85 -0
- package/src/services/ProcessService.ts +589 -0
- package/src/services/RestService.ts +224 -0
- package/src/services/SandboxService.ts +217 -0
- package/src/services/SecurityService.ts +284 -0
- package/src/services/ServerService.ts +313 -0
- package/src/services/SessionService.ts +81 -0
- package/src/services/SubsetService.ts +52 -0
- package/src/services/TM1Service.ts +133 -0
- package/src/services/ThreadService.ts +83 -0
- package/src/services/TransactionLogService.ts +148 -0
- package/src/services/UserService.ts +77 -0
- package/src/services/ViewService.ts +398 -0
- package/src/services/index.ts +28 -0
- package/src/tests/100PercentParityCheck.test.ts +166 -0
- package/src/tests/basic.test.ts +59 -0
- package/src/tests/cellService.test.ts +405 -0
- package/src/tests/ciSetup.ts +26 -0
- package/src/tests/comprehensive.service.test.ts +653 -0
- package/src/tests/config.ini.template +23 -0
- package/src/tests/connection.test.ts +90 -0
- package/src/tests/cubeService.test.ts +458 -0
- package/src/tests/dimensionService.comprehensive.test.ts +786 -0
- package/src/tests/dimensionService.test.ts +373 -0
- package/src/tests/edgeCases.test.ts +358 -0
- package/src/tests/elementService.comprehensive.test.ts +1190 -0
- package/src/tests/elementService.test.ts +472 -0
- package/src/tests/enhancedCellService.test.ts +237 -0
- package/src/tests/enhancedCubeService.test.ts +384 -0
- package/src/tests/enhancedElementService.test.ts +301 -0
- package/src/tests/enhancedViewService.test.ts +373 -0
- package/src/tests/errorHandling.test.ts +264 -0
- package/src/tests/exceptions.test.ts +313 -0
- package/src/tests/hierarchyService.test.ts +386 -0
- package/src/tests/index.test.ts +376 -0
- package/src/tests/integration.test.ts +333 -0
- package/src/tests/integrationTests.test.ts +302 -0
- package/src/tests/mdx.advanced.test.ts +513 -0
- package/src/tests/objects.improved.test.ts +385 -0
- package/src/tests/performance.test.ts +314 -0
- package/src/tests/processService.comprehensive.test.ts +933 -0
- package/src/tests/processService.test.ts +409 -0
- package/src/tests/restService.test.ts +218 -0
- package/src/tests/security.advanced.test.ts +464 -0
- package/src/tests/security.test.ts +233 -0
- package/src/tests/securityService.comprehensive.test.ts +582 -0
- package/src/tests/setup.ts +42 -0
- package/src/tests/simpleCoverage.test.ts +287 -0
- package/src/tests/stress.performance.test.ts +531 -0
- package/src/tests/subsetService.test.ts +350 -0
- package/src/tests/testConfig.ts +53 -0
- package/src/tests/testUtils.ts +94 -0
- package/src/tests/tm1Service.test.ts +361 -0
- package/src/tests/viewService.test.ts +324 -0
- package/src/utils/Utils.ts +395 -0
- package/tests/README.md +57 -0
- package/tests/connection/test-connection.ts +86 -0
- package/tests/edge-cases/edge-cases-test.ts +244 -0
- package/tests/integration/working-test.ts +193 -0
- package/tests/performance/performance-test.ts +133 -0
- package/tests/run-all-tests.sh +106 -0
- package/tests/security/security-test.ts +103 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
export class CaseAndSpaceInsensitiveDict<T> extends Map<string, T> {
|
|
2
|
+
private normalizeKey(key: string): string {
|
|
3
|
+
return key.toLowerCase().replace(/\s+/g, '');
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
set(key: string, value: T): this {
|
|
7
|
+
return super.set(this.normalizeKey(key), value);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
get(key: string): T | undefined {
|
|
11
|
+
return super.get(this.normalizeKey(key));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
has(key: string): boolean {
|
|
15
|
+
return super.has(this.normalizeKey(key));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
delete(key: string): boolean {
|
|
19
|
+
return super.delete(this.normalizeKey(key));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export class CaseAndSpaceInsensitiveTuplesDict<T> extends Map<string, T> {
|
|
24
|
+
private normalizeKey(key: string): string {
|
|
25
|
+
return key.toLowerCase().replace(/\s+/g, '');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
set(key: string, value: T): this {
|
|
29
|
+
return super.set(this.normalizeKey(key), value);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get(key: string): T | undefined {
|
|
33
|
+
return super.get(this.normalizeKey(key));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
has(key: string): boolean {
|
|
37
|
+
return super.has(this.normalizeKey(key));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
delete(key: string): boolean {
|
|
41
|
+
return super.delete(this.normalizeKey(key));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export class CaseAndSpaceInsensitiveMap<T> extends Map<string, T> {
|
|
46
|
+
private normalizeKey(key: string): string {
|
|
47
|
+
return key.toLowerCase().replace(/\s+/g, '');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
set(key: string, value: T): this {
|
|
51
|
+
return super.set(this.normalizeKey(key), value);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
get(key: string): T | undefined {
|
|
55
|
+
return super.get(this.normalizeKey(key));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
has(key: string): boolean {
|
|
59
|
+
return super.has(this.normalizeKey(key));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
delete(key: string): boolean {
|
|
63
|
+
return super.delete(this.normalizeKey(key));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export class CaseAndSpaceInsensitiveSet extends Set<string> {
|
|
68
|
+
private normalizeValue(value: string): string {
|
|
69
|
+
return value.toLowerCase().replace(/\s+/g, '');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
add(value: string): this {
|
|
73
|
+
return super.add(this.normalizeValue(value));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
has(value: string): boolean {
|
|
77
|
+
return super.has(this.normalizeValue(value));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
delete(value: string): boolean {
|
|
81
|
+
return super.delete(this.normalizeValue(value));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export function caseAndSpaceInsensitiveEquals(str1: string, str2: string): boolean {
|
|
86
|
+
if (str1 === str2) return true;
|
|
87
|
+
if (!str1 || !str2) return false;
|
|
88
|
+
|
|
89
|
+
return str1.toLowerCase().replace(/\s+/g, '') ===
|
|
90
|
+
str2.toLowerCase().replace(/\s+/g, '');
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export function lowerAndDropSpaces(str: string): string {
|
|
94
|
+
return str.toLowerCase().replace(/\s+/g, '');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export function formatUrl(template: string, ...args: string[]): string {
|
|
98
|
+
let url = template;
|
|
99
|
+
for (const arg of args) {
|
|
100
|
+
url = url.replace('{}', encodeURIComponent(arg));
|
|
101
|
+
}
|
|
102
|
+
return url;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function extractCellsetCells(cellset: any): any[] {
|
|
106
|
+
if (!cellset || !cellset.Cells) {
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
return cellset.Cells;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export function buildMdxFromAxes(axes: any[]): string {
|
|
113
|
+
// Simple MDX builder - can be expanded
|
|
114
|
+
if (!axes || axes.length === 0) {
|
|
115
|
+
return '';
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
let mdx = 'SELECT ';
|
|
119
|
+
|
|
120
|
+
for (let i = 0; i < axes.length; i++) {
|
|
121
|
+
if (i > 0) mdx += ', ';
|
|
122
|
+
|
|
123
|
+
const axis = axes[i];
|
|
124
|
+
if (axis.Tuples && axis.Tuples.length > 0) {
|
|
125
|
+
const members = axis.Tuples.map((tuple: any) => {
|
|
126
|
+
if (tuple.Members) {
|
|
127
|
+
return tuple.Members.map((member: any) => `[${member.UniqueName}]`).join(',');
|
|
128
|
+
}
|
|
129
|
+
return '';
|
|
130
|
+
}).join(',');
|
|
131
|
+
mdx += `{${members}} ON ${i}`;
|
|
132
|
+
} else {
|
|
133
|
+
mdx += `{} ON ${i}`;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return mdx;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export function buildElementsStringFromIterable(elements: Iterable<string>, separator: string = ','): string {
|
|
141
|
+
return Array.from(elements).join(separator);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export function dimensionHierarchyElementTupleFromUniqueName(uniqueName: string): [string, string, string] {
|
|
145
|
+
// Parse [Dimension].[Hierarchy].[Element] format
|
|
146
|
+
const matches = uniqueName.match(/\[([^\]]+)\]\.\[([^\]]+)\]\.\[([^\]]+)\]/);
|
|
147
|
+
if (matches && matches.length === 4) {
|
|
148
|
+
return [matches[1], matches[2], matches[3]];
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Fallback: assume format is Dimension.Hierarchy.Element
|
|
152
|
+
const parts = uniqueName.split('.');
|
|
153
|
+
if (parts.length >= 3) {
|
|
154
|
+
return [parts[0], parts[1], parts[2]];
|
|
155
|
+
} else if (parts.length === 2) {
|
|
156
|
+
return [parts[0], parts[0], parts[1]]; // Default hierarchy = dimension name
|
|
157
|
+
} else {
|
|
158
|
+
return [uniqueName, uniqueName, uniqueName];
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export function buildElementUniqueNames(elements: string[], dimensionName: string, hierarchyName?: string): string[] {
|
|
163
|
+
const hierarchy = hierarchyName || dimensionName;
|
|
164
|
+
return elements.map(element => `[${dimensionName}].[${hierarchy}].[${element}]`);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export function dimensionHierarchyElementTupleFromString(dimensionHierarchyElement: string): [string, string, string] {
|
|
168
|
+
// Parse [Dimension].[Hierarchy].[Element] format
|
|
169
|
+
const matches = dimensionHierarchyElement.match(/\[([^\]]+)\]\.\[([^\]]+)\]\.\[([^\]]+)\]/);
|
|
170
|
+
if (matches && matches.length === 4) {
|
|
171
|
+
return [matches[1], matches[2], matches[3]];
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Fallback: assume format is Dimension.Hierarchy.Element
|
|
175
|
+
const parts = dimensionHierarchyElement.split('.');
|
|
176
|
+
if (parts.length >= 3) {
|
|
177
|
+
return [parts[0], parts[1], parts[2]];
|
|
178
|
+
} else if (parts.length === 2) {
|
|
179
|
+
return [parts[0], parts[0], parts[1]]; // Default hierarchy = dimension name
|
|
180
|
+
} else {
|
|
181
|
+
return [dimensionHierarchyElement, dimensionHierarchyElement, dimensionHierarchyElement];
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
export function deprecatedInVersion(version: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void {
|
|
186
|
+
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
|
|
187
|
+
const originalMethod = descriptor.value;
|
|
188
|
+
|
|
189
|
+
descriptor.value = function (this: any, ...args: any[]) {
|
|
190
|
+
console.warn(`Method ${propertyKey} is deprecated in version ${version}`);
|
|
191
|
+
return originalMethod.apply(this, args);
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export function requireVersion(minVersion: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void {
|
|
197
|
+
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
|
|
198
|
+
const originalMethod = descriptor.value;
|
|
199
|
+
|
|
200
|
+
descriptor.value = function (this: any, ...args: any[]) {
|
|
201
|
+
// Version check would be implemented here
|
|
202
|
+
// For now, just call the original method
|
|
203
|
+
return originalMethod.apply(this, args);
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export function requireAdmin(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {
|
|
209
|
+
const originalMethod = descriptor.value;
|
|
210
|
+
|
|
211
|
+
descriptor.value = function (this: any, ...args: any[]) {
|
|
212
|
+
// Admin check would be implemented here
|
|
213
|
+
// For now, just call the original method
|
|
214
|
+
return originalMethod.apply(this, args);
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
export function requireDataAdmin(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {
|
|
219
|
+
const originalMethod = descriptor.value;
|
|
220
|
+
|
|
221
|
+
descriptor.value = function (this: any, ...args: any[]) {
|
|
222
|
+
// Data admin check would be implemented here
|
|
223
|
+
// For now, just call the original method
|
|
224
|
+
return originalMethod.apply(this, args);
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export function requireSecurityAdmin(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {
|
|
229
|
+
const originalMethod = descriptor.value;
|
|
230
|
+
|
|
231
|
+
descriptor.value = function (this: any, ...args: any[]) {
|
|
232
|
+
// Security admin check would be implemented here
|
|
233
|
+
// For now, just call the original method
|
|
234
|
+
return originalMethod.apply(this, args);
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export function requireOpsAdmin(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {
|
|
239
|
+
const originalMethod = descriptor.value;
|
|
240
|
+
|
|
241
|
+
descriptor.value = function (this: any, ...args: any[]) {
|
|
242
|
+
// Ops admin check would be implemented here
|
|
243
|
+
// For now, just call the original method
|
|
244
|
+
return originalMethod.apply(this, args);
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export function wrapTupleInBrackets(members: string[]): string {
|
|
249
|
+
if (members.length === 1) {
|
|
250
|
+
return `[${members[0]}]`;
|
|
251
|
+
}
|
|
252
|
+
return `(${members.map(m => `[${m}]`).join(',')})`;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export function abbreviateString(text: string, maxLength: number): string {
|
|
256
|
+
if (!text || text.length <= maxLength) {
|
|
257
|
+
return text || '';
|
|
258
|
+
}
|
|
259
|
+
if (maxLength <= 3) {
|
|
260
|
+
return '...';
|
|
261
|
+
}
|
|
262
|
+
return text.substring(0, maxLength - 3) + '...';
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export function getTimeFromTimeStamp(timestamp: string): Date {
|
|
266
|
+
// Parse various timestamp formats
|
|
267
|
+
try {
|
|
268
|
+
return new Date(timestamp);
|
|
269
|
+
} catch (error) {
|
|
270
|
+
// Try parsing as ISO string or other formats
|
|
271
|
+
return new Date();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
export function addTimeToTimeStamp(timestamp: string, hours: number): string {
|
|
276
|
+
const date = getTimeFromTimeStamp(timestamp);
|
|
277
|
+
date.setHours(date.getHours() + hours);
|
|
278
|
+
return date.toISOString();
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export function tidy(inputString: string): string {
|
|
282
|
+
if (!inputString) return '';
|
|
283
|
+
return inputString.trim().replace(/\s+/g, ' ');
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// MDX Utility functions
|
|
287
|
+
export function getMdxElementFromAttribute(attribute: string, cube: string): string {
|
|
288
|
+
return `[${cube}].[${attribute}]`;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export function buildMdxTuple(members: string[]): string {
|
|
292
|
+
if (members.length === 1) {
|
|
293
|
+
return members[0];
|
|
294
|
+
}
|
|
295
|
+
return `(${members.join(',')})`;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Verification utilities
|
|
299
|
+
export function verifyVersion(actualVersion: string, requiredVersion: string): boolean {
|
|
300
|
+
// Handle null/undefined inputs
|
|
301
|
+
if (!actualVersion || !requiredVersion) {
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// Simple version comparison
|
|
306
|
+
const actual = actualVersion.split('.').map(Number);
|
|
307
|
+
const required = requiredVersion.split('.').map(Number);
|
|
308
|
+
|
|
309
|
+
for (let i = 0; i < Math.max(actual.length, required.length); i++) {
|
|
310
|
+
const a = actual[i] || 0;
|
|
311
|
+
const r = required[i] || 0;
|
|
312
|
+
|
|
313
|
+
if (a > r) return true;
|
|
314
|
+
if (a < r) return false;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
return true; // Equal versions
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export function readObjectNameFromUrl(url: string): string {
|
|
321
|
+
// Extract object name from URL like "/Dimensions('DimName')" -> "DimName"
|
|
322
|
+
const match = url.match(/\('([^']+)'\)/);
|
|
323
|
+
return match ? match[1] : '';
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
export function integerizeVersion(version: string): number {
|
|
327
|
+
// Convert version string like "11.8.01300.1" to integer like 1180
|
|
328
|
+
const parts = version.split('.');
|
|
329
|
+
const major = parseInt(parts[0]) || 0;
|
|
330
|
+
const minor = parseInt(parts[1]) || 0;
|
|
331
|
+
return major * 100 + minor;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// Frame utilities for working with tabular data
|
|
335
|
+
export function frameToSignificantValue(value: any): any {
|
|
336
|
+
if (typeof value === 'number') {
|
|
337
|
+
if (Math.abs(value) < 1e-10) {
|
|
338
|
+
return 0;
|
|
339
|
+
}
|
|
340
|
+
return Number(value.toPrecision(10));
|
|
341
|
+
}
|
|
342
|
+
return value;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// HTTP utilities
|
|
346
|
+
export class HTTPAdapterWithSocketOptions {
|
|
347
|
+
constructor(private socketOptions: any = {}) {}
|
|
348
|
+
|
|
349
|
+
// Implementation would depend on the HTTP client being used
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Additional utility functions
|
|
353
|
+
export function odataTrackChangesHeader(): Record<string, string> {
|
|
354
|
+
return {
|
|
355
|
+
'Prefer': 'return=representation;odata.track-changes'
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
export function utcLocalizeTime(utcTimeStr: string): Date {
|
|
360
|
+
return new Date(utcTimeStr + 'Z');
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
export function decohints(): string {
|
|
364
|
+
return 'decohints';
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
export const Utils = {
|
|
368
|
+
CaseAndSpaceInsensitiveMap,
|
|
369
|
+
CaseAndSpaceInsensitiveSet,
|
|
370
|
+
caseAndSpaceInsensitiveEquals,
|
|
371
|
+
lowerAndDropSpaces,
|
|
372
|
+
formatUrl,
|
|
373
|
+
extractCellsetCells,
|
|
374
|
+
buildMdxFromAxes,
|
|
375
|
+
buildElementsStringFromIterable,
|
|
376
|
+
dimensionHierarchyElementTupleFromString,
|
|
377
|
+
requireVersion,
|
|
378
|
+
requireAdmin,
|
|
379
|
+
requireDataAdmin,
|
|
380
|
+
requireSecurityAdmin,
|
|
381
|
+
requireOpsAdmin,
|
|
382
|
+
wrapTupleInBrackets,
|
|
383
|
+
abbreviateString,
|
|
384
|
+
getTimeFromTimeStamp,
|
|
385
|
+
addTimeToTimeStamp,
|
|
386
|
+
tidy,
|
|
387
|
+
getMdxElementFromAttribute,
|
|
388
|
+
buildMdxTuple,
|
|
389
|
+
verifyVersion,
|
|
390
|
+
frameToSignificantValue,
|
|
391
|
+
HTTPAdapterWithSocketOptions,
|
|
392
|
+
odataTrackChangesHeader,
|
|
393
|
+
utcLocalizeTime,
|
|
394
|
+
decohints
|
|
395
|
+
};
|
package/tests/README.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# TM1npm Test Scripts
|
|
2
|
+
|
|
3
|
+
This directory contains organized standalone test scripts for tm1npm functionality.
|
|
4
|
+
|
|
5
|
+
## Directory Structure
|
|
6
|
+
|
|
7
|
+
### š Connection Tests (`connection/`)
|
|
8
|
+
- `test-connection.ts` - Comprehensive TM1 connection testing
|
|
9
|
+
- `simple-connection-test.ts` - Basic TM1 connectivity verification
|
|
10
|
+
- `minimal-connection-test.ts` - Minimal REST API connection test
|
|
11
|
+
|
|
12
|
+
### š Security Tests (`security/`)
|
|
13
|
+
- `security-test.ts` - Authentication, authorization, and vulnerability tests
|
|
14
|
+
|
|
15
|
+
### ā” Performance Tests (`performance/`)
|
|
16
|
+
- `performance-test.ts` - Response time, memory usage, and scalability tests
|
|
17
|
+
|
|
18
|
+
### šÆ Edge Cases Tests (`edge-cases/`)
|
|
19
|
+
- `edge-cases-test.ts` - Boundary conditions and unusual input tests
|
|
20
|
+
|
|
21
|
+
### š Integration Tests (`integration/`)
|
|
22
|
+
- `working-test.ts` - Comprehensive TM1 functionality test
|
|
23
|
+
|
|
24
|
+
## Environment Configuration
|
|
25
|
+
|
|
26
|
+
All tests use environment variables from `.env` file:
|
|
27
|
+
```
|
|
28
|
+
TM1_ADDRESS=localhost
|
|
29
|
+
TM1_PORT=8879
|
|
30
|
+
TM1_USER=admin
|
|
31
|
+
TM1_PASSWORD=your_password_here
|
|
32
|
+
TM1_SSL=false
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Running Tests
|
|
36
|
+
|
|
37
|
+
### Individual Test Categories
|
|
38
|
+
```bash
|
|
39
|
+
npm run test:connection # Connection tests
|
|
40
|
+
npm run test:simple # Simple connection test
|
|
41
|
+
npm run test:minimal # Minimal connection test
|
|
42
|
+
npm run test:working # Integration test
|
|
43
|
+
npm run test:security # Security tests
|
|
44
|
+
npm run test:performance # Performance tests
|
|
45
|
+
npm run test:edge-cases # Edge cases tests
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### All Tests
|
|
49
|
+
```bash
|
|
50
|
+
npm run test:all # Run all test suites including Jest unit tests
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Security Notes
|
|
54
|
+
|
|
55
|
+
- No hardcoded passwords - all credentials come from environment variables
|
|
56
|
+
- Tests will fail gracefully if TM1_PASSWORD is not set
|
|
57
|
+
- Production deployments should use secure credential management
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple connection test using axios directly
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import axios from 'axios';
|
|
6
|
+
import dotenv from 'dotenv';
|
|
7
|
+
|
|
8
|
+
// Load environment variables
|
|
9
|
+
dotenv.config();
|
|
10
|
+
|
|
11
|
+
async function simpleConnectionTest(): Promise<void> {
|
|
12
|
+
const address = process.env.TM1_ADDRESS || 'localhost';
|
|
13
|
+
const port = process.env.TM1_PORT || '8879';
|
|
14
|
+
const user = process.env.TM1_USER || 'admin';
|
|
15
|
+
const password = process.env.TM1_PASSWORD;
|
|
16
|
+
|
|
17
|
+
if (!password) {
|
|
18
|
+
console.log('ā TM1_PASSWORD environment variable is required');
|
|
19
|
+
console.log('Please set TM1_PASSWORD in your .env file');
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
console.log('š Simple TM1 Connection Test');
|
|
24
|
+
console.log(`Server: ${address}:${port}`);
|
|
25
|
+
console.log(`User: ${user}`);
|
|
26
|
+
console.log('=' .repeat(40));
|
|
27
|
+
|
|
28
|
+
const config = {
|
|
29
|
+
baseURL: `http://${address}:${port}/api/v1`,
|
|
30
|
+
auth: {
|
|
31
|
+
username: user,
|
|
32
|
+
password: password
|
|
33
|
+
},
|
|
34
|
+
timeout: 30000
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
try {
|
|
38
|
+
console.log('ā³ Testing basic server connectivity...');
|
|
39
|
+
|
|
40
|
+
// Test basic server connection
|
|
41
|
+
const response = await axios.get('/Configuration/ProductVersion', config);
|
|
42
|
+
console.log('ā
Server responded successfully!');
|
|
43
|
+
console.log(`š TM1 Version: ${response.data.value}`);
|
|
44
|
+
|
|
45
|
+
// Test server name
|
|
46
|
+
const nameResponse = await axios.get('/Configuration/ServerName', config);
|
|
47
|
+
console.log(`š·ļø Server Name: ${nameResponse.data.value}`);
|
|
48
|
+
|
|
49
|
+
// Test basic endpoints
|
|
50
|
+
console.log('ā³ Testing basic endpoints...');
|
|
51
|
+
const cubesResponse = await axios.get('/Cubes?$top=1&$select=Name', config);
|
|
52
|
+
const dimsResponse = await axios.get('/Dimensions?$top=1&$select=Name', config);
|
|
53
|
+
|
|
54
|
+
console.log(`š Found cubes: ${cubesResponse.data.value.length > 0 ? 'Yes' : 'None'}`);
|
|
55
|
+
console.log(`š Found dimensions: ${dimsResponse.data.value.length > 0 ? 'Yes' : 'None'}`);
|
|
56
|
+
|
|
57
|
+
console.log('\nš Simple connection test PASSED!');
|
|
58
|
+
console.log('ā
TM1 server is accessible and responding correctly');
|
|
59
|
+
|
|
60
|
+
} catch (error: any) {
|
|
61
|
+
console.log('\nā Connection test FAILED!');
|
|
62
|
+
console.log(`Error: ${error.message || error}`);
|
|
63
|
+
|
|
64
|
+
if (error.code === 'ECONNREFUSED') {
|
|
65
|
+
console.log(' Connection refused - server may not be running');
|
|
66
|
+
} else if (error.response?.status === 401) {
|
|
67
|
+
console.log(' Authentication failed - check username/password');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
console.log('\nš§ Troubleshooting checklist:');
|
|
71
|
+
console.log(' ā” TM1 server is running at localhost:8879');
|
|
72
|
+
console.log(' ā” Username: admin');
|
|
73
|
+
console.log(' ā” TM1 REST API is enabled');
|
|
74
|
+
console.log(' ā” No firewall blocking port 8879');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Run the test
|
|
79
|
+
if (require.main === module) {
|
|
80
|
+
simpleConnectionTest().catch((error) => {
|
|
81
|
+
console.error('Fatal error:', error);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export { simpleConnectionTest };
|