diff --git a/.env.cec-prd b/.env.cec-prd
index 10aaab8..b9a9c92 100644
--- a/.env.cec-prd
+++ b/.env.cec-prd
@@ -3,6 +3,3 @@ REACT_APP_CERT_SERVICE_URL=https://gw.cec-prd.fiskerinc.com/certificate
REACT_APP_UPLOAD_SERVICE_URL=https://gw.cec-prd.fiskerinc.com/ota_update
REACT_APP_AUTH_CALLBACK_URL=https://ota-admin.cec-prd.fiskerinc.com
REACT_APP_SUPERSET_URL=https://superset.cec-prd.fiskerinc.com
-REACT_APP_SUPERSET_KEYS_LIST=0b01ac72-9ef4-4a5f-be34-b1ac0bf972cc
-REACT_APP_MAGNA_PROVIDER=Magna
-REACT_APP_MAGNA_GROUP_ID=68273225-9da4-4fa7-aea5-38e16ec471fe
diff --git a/.env.dev b/.env.dev
index 53cdbe7..fb00db4 100644
--- a/.env.dev
+++ b/.env.dev
@@ -2,7 +2,4 @@ REACT_APP_CERT_SERVICE_URL=https://dev-gw.cloud.fiskerinc.com/certificate
REACT_APP_AUTH_SERVICE_URL=https://dev-gw.cloud.fiskerinc.com/compute_auth
REACT_APP_UPLOAD_SERVICE_URL=https://dev-gw.cloud.fiskerinc.com/ota_update
REACT_APP_AUTH_CALLBACK_URL=https://dev-ota-admin.cloud.fiskerinc.com
-REACT_APP_SUPERSET_URL=https://dev-superset-new.cloud.fiskerinc.com
-REACT_APP_SUPERSET_KEYS_LIST=0b01ac72-9ef4-4a5f-be34-b1ac0bf972cc
-REACT_APP_MAGNA_PROVIDER=AzureAD
-REACT_APP_MAGNA_GROUP_ID=efcc3025-e2d8-4212-8227-805c7be39d2c
+REACT_APP_SUPERSET_URL=https://dev-superset-new.cloud.fiskerinc.com
\ No newline at end of file
diff --git a/.env.local b/.env.local
index b19c9ac..8647c32 100644
--- a/.env.local
+++ b/.env.local
@@ -4,5 +4,3 @@ REACT_APP_UPLOAD_SERVICE_URL=http://localhost/ota_update
REACT_APP_AUTH_CALLBACK_URL=http://localhost:3000
REACT_APP_SUPERSET_URL=https://dev-superset-new.cloud.fiskerinc.com
REACT_APP_SUPERSET_KEYS_LIST=0b01ac72-9ef4-4a5f-be34-b1ac0bf972cc
-REACT_APP_MAGNA_PROVIDER=AzureAD
-REACT_APP_MAGNA_GROUP_ID=efcc3025-e2d8-4212-8227-805c7be39d2c
\ No newline at end of file
diff --git a/.env.prd b/.env.prd
index c48fb52..d8ce7fe 100644
--- a/.env.prd
+++ b/.env.prd
@@ -3,6 +3,3 @@ REACT_APP_CERT_SERVICE_URL=https://gw.cloud.fiskerinc.com/certificate
REACT_APP_UPLOAD_SERVICE_URL=https://gw.cloud.fiskerinc.com/ota_update
REACT_APP_AUTH_CALLBACK_URL=https://ota-admin.cloud.fiskerinc.com
REACT_APP_SUPERSET_URL=https://superset.cloud.fiskerinc.com
-REACT_APP_SUPERSET_KEYS_LIST=0b01ac72-9ef4-4a5f-be34-b1ac0bf972cc
-REACT_APP_MAGNA_PROVIDER=Magna
-REACT_APP_MAGNA_GROUP_ID=68273225-9da4-4fa7-aea5-38e16ec471fe
diff --git a/.env.stg b/.env.stg
index 6502211..8d545cf 100644
--- a/.env.stg
+++ b/.env.stg
@@ -2,7 +2,4 @@ REACT_APP_AUTH_SERVICE_URL=https://stg-gw.cloud.fiskerinc.com/compute_auth
REACT_APP_CERT_SERVICE_URL=https://stg-gw.cloud.fiskerinc.com/certificate
REACT_APP_UPLOAD_SERVICE_URL=https://stg-gw.cloud.fiskerinc.com/ota_update
REACT_APP_AUTH_CALLBACK_URL=https://stg-ota-admin.cloud.fiskerinc.com
-REACT_APP_SUPERSET_URL=https://stg-superset.cloud.fiskerinc.com
-REACT_APP_SUPERSET_KEYS_LIST=0b01ac72-9ef4-4a5f-be34-b1ac0bf972cc
-REACT_APP_MAGNA_PROVIDER=AzureAD
-REACT_APP_MAGNA_GROUP_ID=efcc3025-e2d8-4212-8227-805c7be39d2c
+REACT_APP_SUPERSET_URL=https://stg-superset.cloud.fiskerinc.com
\ No newline at end of file
diff --git a/.env.template b/.env.template
index fd82389..eb5a173 100644
--- a/.env.template
+++ b/.env.template
@@ -2,7 +2,4 @@ REACT_APP_AUTH_SERVICE_URL=http://localhost/compute_auth
REACT_APP_UPLOAD_SERVICE_URL=http://localhost/ota_update
REACT_APP_AUTH_CALLBACK_URL=http://localhost:3000
REACT_APP_SUPERSET_URL=https://dev-superset.cloud.fiskerinc.com
-REACT_APP_CERT_SERVICE_URL=http://localhost/certificate
-REACT_APP_SUPERSET_KEYS_LIST=0b01ac72-9ef4-4a5f-be34-b1ac0bf972cc
-REACT_APP_MAGNA_PROVIDER=Magna
-REACT_APP_MAGNA_GROUP_ID=68273225-9da4-4fa7-aea5-38e16ec471fe
+REACT_APP_CERT_SERVICE_URL=http://localhost/certificate
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index f858b27..7211f78 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -37,8 +37,7 @@
"react-router-hash-link": "^2.4.3",
"react-scripts": "5.0.0",
"usehooks-ts": "^2.7.1",
- "web-vitals": "^2.1.4",
- "webpack": "^5.74.0"
+ "web-vitals": "^2.1.4"
},
"devDependencies": {
"react-test-renderer": "^17.0.2"
@@ -5608,9 +5607,9 @@
}
},
"node_modules/acorn": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
- "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
+ "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
"bin": {
"acorn": "bin/acorn"
},
@@ -8029,9 +8028,9 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
- "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
+ "version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz",
+ "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==",
"dependencies": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -11603,6 +11602,11 @@
"node": ">=4"
}
},
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+ },
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -16631,9 +16635,9 @@
}
},
"node_modules/watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz",
+ "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==",
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -16664,33 +16668,33 @@
}
},
"node_modules/webpack": {
- "version": "5.74.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz",
- "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==",
+ "version": "5.70.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz",
+ "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==",
"dependencies": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^0.0.51",
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/wasm-edit": "1.11.1",
"@webassemblyjs/wasm-parser": "1.11.1",
- "acorn": "^8.7.1",
+ "acorn": "^8.4.1",
"acorn-import-assertions": "^1.7.6",
"browserslist": "^4.14.5",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.10.0",
+ "enhanced-resolve": "^5.9.2",
"es-module-lexer": "^0.9.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.9",
- "json-parse-even-better-errors": "^2.3.1",
+ "json-parse-better-errors": "^1.0.2",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
"schema-utils": "^3.1.0",
"tapable": "^2.1.1",
"terser-webpack-plugin": "^5.1.3",
- "watchpack": "^2.4.0",
+ "watchpack": "^2.3.1",
"webpack-sources": "^3.2.3"
},
"bin": {
@@ -21516,9 +21520,9 @@
}
},
"acorn": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
- "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA=="
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
+ "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ=="
},
"acorn-globals": {
"version": "6.0.0",
@@ -23300,9 +23304,9 @@
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"enhanced-resolve": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
- "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
+ "version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz",
+ "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==",
"requires": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -25882,6 +25886,11 @@
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
},
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+ },
"json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -29488,9 +29497,9 @@
}
},
"watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz",
+ "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==",
"requires": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -29515,33 +29524,33 @@
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
},
"webpack": {
- "version": "5.74.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz",
- "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==",
+ "version": "5.70.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz",
+ "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==",
"requires": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^0.0.51",
"@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/wasm-edit": "1.11.1",
"@webassemblyjs/wasm-parser": "1.11.1",
- "acorn": "^8.7.1",
+ "acorn": "^8.4.1",
"acorn-import-assertions": "^1.7.6",
"browserslist": "^4.14.5",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.10.0",
+ "enhanced-resolve": "^5.9.2",
"es-module-lexer": "^0.9.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.9",
- "json-parse-even-better-errors": "^2.3.1",
+ "json-parse-better-errors": "^1.0.2",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
"schema-utils": "^3.1.0",
"tapable": "^2.1.1",
"terser-webpack-plugin": "^5.1.3",
- "watchpack": "^2.4.0",
+ "watchpack": "^2.3.1",
"webpack-sources": "^3.2.3"
},
"dependencies": {
diff --git a/package.json b/package.json
index 0ab9581..18caa41 100644
--- a/package.json
+++ b/package.json
@@ -32,8 +32,7 @@
"react-router-hash-link": "^2.4.3",
"react-scripts": "5.0.0",
"usehooks-ts": "^2.7.1",
- "web-vitals": "^2.1.4",
- "webpack": "^5.74.0"
+ "web-vitals": "^2.1.4"
},
"scripts": {
"start": "env-cmd -f .env.local react-scripts start",
@@ -52,10 +51,7 @@
"extends": [
"react-app",
"react-app/jest"
- ],
- "rules": {
- "no-console": "warn"
- }
+ ]
},
"browserslist": [
">0.2%",
@@ -86,4 +82,4 @@
"lcov"
]
}
-}
+}
\ No newline at end of file
diff --git a/src/components/App/App.test.js b/src/components/App/App.test.js
index 3346d96..24f282c 100644
--- a/src/components/App/App.test.js
+++ b/src/components/App/App.test.js
@@ -16,7 +16,7 @@ import {
waitForElementToBeRemoved,
} from "@testing-library/react";
import { setToken } from "../Contexts/UserContext";
-import {TEST_AUTH_OBJECT, TEST_AUTH_OBJECT_FISKER} from "../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../utils/testing";
import App from ".";
import addSnapshotSerializer from "../../utils/snapshot";
@@ -35,7 +35,7 @@ const check = async (path, selector, compare) => {
let container
await act(async () => {
container = await renderRoute(path);
- });
+ })
expect(container.querySelector(selector).innerHTML).toEqual(compare);
expect(container).toMatchSnapshot();
};
@@ -117,57 +117,57 @@ describe("App", () => {
await check("/page-not-found", "h1", "Page Not Found");
});
it("Route / authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
await sleepAndCheck("/", "h6", "Home");
});
it("Route /home authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
await sleepAndCheck("/home", "h6", "Home");
});
it("Route /page-not-found authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
await check("/page-not-found", "h1", "Page Not Found");
});
it("Route /packages authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
await check("/packages", "h6", "Deployments");
});
it("Route /package-status authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
await check("/package-status/1", "h6", "Manifest Test Manifest 1.0");
});
it("Route /package-deploy authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
await check("/package-deploy/1", "h6", "Deploy Test Manifest 1.0");
});
it("Route /vehicle-add authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
await check("/vehicle-add", "h6", "Add Vehicle");
});
it("Route /vehicles authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
await check("/vehicles", "h6", "Vehicles");
});
it("Route /vehicle-status authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
await check("/vehicle-status/FISKER123", "h6", "Vehicle FISKER123 Details");
});
it("Route /tools/certificates/add authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
- await sleepAndCheck("/tools/certificates/add", "h6", "Create Certificate");
+ setToken(TEST_AUTH_OBJECT);
+ await check("/tools/certificates/add", "h6", "Create Certificate");
});
it("Route /tools/sms/send authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
- await sleepAndCheck("/tools/sms/send", "h6", "Send SMS");
+ setToken(TEST_AUTH_OBJECT);
+ await check("/tools/sms/send", "h6", "Send SMS");
});
});
diff --git a/src/components/App/__snapshots__/App.test.js.snap b/src/components/App/__snapshots__/App.test.js.snap
index 91462b2..4d7e87c 100644
--- a/src/components/App/__snapshots__/App.test.js.snap
+++ b/src/components/App/__snapshots__/App.test.js.snap
@@ -35,7 +35,7 @@ exports[`App Route / authenticated 1`] = `
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
+
+
+
+
+
@@ -3890,7 +3729,7 @@ exports[`App Route /page-not-found authenticated 1`] = `
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
+
+
+
@@ -7935,7 +7616,7 @@ exports[`App Route /vehicles authenticated 1`] = `
- Anvar
+ John
-
-
-
-
-
- Suppliers
-
-
-
-
-
+ >
+
+
+
+
diff --git a/src/components/CANFilter/Add/index.test.jsx b/src/components/CANFilter/Add/index.test.jsx
index 7afca84..6bd1813 100644
--- a/src/components/CANFilter/Add/index.test.jsx
+++ b/src/components/CANFilter/Add/index.test.jsx
@@ -1,5 +1,3 @@
-import {TEST_AUTH_OBJECT_FISKER} from "../../../utils/testing";
-
jest.mock("../../Contexts/CANFiltersContext");
jest.mock("../../Contexts/StatusContext");
jest.mock("../../Contexts/UserContext");
@@ -10,6 +8,7 @@ import { BrowserRouter } from "react-router-dom";
import { CANFiltersProvider } from "../../Contexts/CANFiltersContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -36,7 +35,7 @@ describe("CANFiltersAdd", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderCANFiltersAdd();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/CANFilter/Table/__snapshots__/index.test.jsx.snap b/src/components/CANFilter/Table/__snapshots__/index.test.jsx.snap
index 010dd2a..00fb3e3 100644
--- a/src/components/CANFilter/Table/__snapshots__/index.test.jsx.snap
+++ b/src/components/CANFilter/Table/__snapshots__/index.test.jsx.snap
@@ -250,6 +250,23 @@ exports[`CANFiltersTable Render 1`] = `
/>
+
+
+
|
+
+
+
|
+
+
+
diff --git a/src/components/CANFilter/Table/index.jsx b/src/components/CANFilter/Table/index.jsx
index 5156f0b..9068090 100644
--- a/src/components/CANFilter/Table/index.jsx
+++ b/src/components/CANFilter/Table/index.jsx
@@ -1,3 +1,5 @@
+import React, { useEffect, useState } from "react";
+import { Link } from 'react-router-dom';
import {
Grid,
Table,
@@ -10,46 +12,46 @@ import {
} from "@material-ui/core";
import AddCircleIcon from "@material-ui/icons/AddCircle";
import DeleteIcon from "@material-ui/icons/Delete";
-import EditIcon from "@material-ui/icons/Edit";
+import EditIcon from '@material-ui/icons/Edit';
import clsx from "clsx";
-import React, { useEffect, useState } from "react";
-import { Link } from "react-router-dom";
-import { logger } from "../../../services/monitoring";
-import { hasRole, Permissions } from "../../../utils/roles";
-import { trimIfMoreThan } from "../../../utils/strings";
import {
CANFiltersProvider,
useCANFiltersContext,
} from "../../Contexts/CANFiltersContext";
-import { useStatusContext } from "../../Contexts/StatusContext";
-import { useUserContext } from "../../Contexts/UserContext";
-import SearchField from "../../Controls/SearchField";
import TableHeaderSortable from "../../Table/HeaderSortable";
-import { useLocalStorage } from "../../useLocalStorage";
+import {
+ useUserContext
+} from "../../Contexts/UserContext"
+import { useStatusContext } from "../../Contexts/StatusContext";
import useStyles from "../../useStyles";
+import SearchField from "../../Controls/SearchField";
+import { logger } from "../../../services/monitoring";
+import { Roles, hasRole } from "../../../utils/roles";
+import {useLocalStorage} from "../../useLocalStorage";
+import {trimIfMoreThan} from "../../../utils/strings";
const tableColumns = [
{
id: "can_id",
- label: "CAN ID",
+ label: "CAN ID"
},
{
id: "interval",
- label: "Interval (ms)",
+ label: "Interval (ms)"
},
{
id: "fleet",
- label: "Fleet",
+ label: "Fleet"
},
{
id: "edge_mask",
- label: "Edge mask",
+ label: "Edge mask"
},
{
id: "",
- label: "Actions",
- },
+ label: "Actions"
+ }
];
const PAGE_SIZE = "CAN_FILTER_TABLE_PAGE_SIZE";
@@ -61,16 +63,9 @@ const MainForm = ({ vin }) => {
const [pageIndex, setPageIndex] = useState(0);
const [orderBy, setOrderBy] = useState("id");
const [order, setOrder] = useState("desc");
- const { getFilters, deleteFilter, filters, totalFilters } =
- useCANFiltersContext();
+ const { getFilters, deleteFilter, filters, totalFilters } = useCANFiltersContext();
const { setMessage } = useStatusContext();
- const {
- token: {
- idToken: { jwtToken: token },
- },
- groups,
- providers,
- } = useUserContext();
+ const { token: { idToken: { jwtToken: token } }, groups } = useUserContext();
useEffect(() => {
(async () => {
@@ -123,7 +118,7 @@ const MainForm = ({ vin }) => {
const onDelete = async (can_id) => {
try {
await deleteFilter(vin, can_id, token);
- setMessage(`Deleted ${can_id}`);
+ setMessage(`Deleted ${can_id}`)
} catch (e) {
setMessage(e.message);
logger.warn(e.stack);
@@ -131,24 +126,24 @@ const MainForm = ({ vin }) => {
};
const Actions = (row) => {
- if (row.fleet != null) {
- return;
+ if(row.fleet != null) {
+ return
}
let actions = [];
- if (hasRole(groups, Permissions.FiskerCreate, providers)) {
+ if (hasRole([Roles.CREATE], groups)) {
actions.push({
tip: `Update "${row.can_id}"`,
link: `/filter-update?vin=${vin}&can_id=${row.can_id}&interval=${row.interval}`,
- icon:
,
+ icon:
});
}
- if (hasRole(groups, Permissions.FiskerDelete, providers)) {
+ if (hasRole([Roles.DELETE], groups)) {
actions.push({
tip: `Delete "${row.can_id}"`,
id: row.can_id,
- icon:
,
- });
+ icon:
+ })
}
if (actions.length === 0) return ["No actions"];
@@ -182,7 +177,7 @@ const MainForm = ({ vin }) => {
-
+
@@ -201,9 +196,7 @@ const MainForm = ({ vin }) => {
{row.fleet}
-
- {trimIfMoreThan(row.edge_mask, 15, "...")}
-
+ {trimIfMoreThan(row.edge_mask, 15, "...")}
{Actions(row)}
))}
@@ -226,7 +219,7 @@ const MainForm = ({ vin }) => {
-
+
);
};
diff --git a/src/components/CANFilter/Table/index.test.jsx b/src/components/CANFilter/Table/index.test.jsx
index 2642dc1..40e3102 100644
--- a/src/components/CANFilter/Table/index.test.jsx
+++ b/src/components/CANFilter/Table/index.test.jsx
@@ -11,7 +11,7 @@ import { BrowserRouter } from "react-router-dom";
import { CANFiltersProvider } from "../../Contexts/CANFiltersContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import {TEST_AUTH_OBJECT_FISKER} from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -37,7 +37,7 @@ describe("CANFiltersTable", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderCANFiltersTable();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/CANFilter/Update/index.test.jsx b/src/components/CANFilter/Update/index.test.jsx
index a38cb35..e1e264d 100644
--- a/src/components/CANFilter/Update/index.test.jsx
+++ b/src/components/CANFilter/Update/index.test.jsx
@@ -8,7 +8,7 @@ import { BrowserRouter } from "react-router-dom";
import { CANFiltersProvider } from "../../Contexts/CANFiltersContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -34,7 +34,7 @@ describe("CANFiltersUpdate", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderCANFiltersUpdate();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Add/index.test.jsx b/src/components/Cars/Add/index.test.jsx
index 1b7e753..bb8c506 100644
--- a/src/components/Cars/Add/index.test.jsx
+++ b/src/components/Cars/Add/index.test.jsx
@@ -8,7 +8,7 @@ import { BrowserRouter } from "react-router-dom";
import { VehicleProvider } from "../../Contexts/VehicleContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -36,7 +36,7 @@ describe("VehicleAddForm", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderVehicleAdd();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/List/__snapshots__/index.test.jsx.snap b/src/components/Cars/List/__snapshots__/index.test.jsx.snap
index 50c7849..cc2b5f0 100644
--- a/src/components/Cars/List/__snapshots__/index.test.jsx.snap
+++ b/src/components/Cars/List/__snapshots__/index.test.jsx.snap
@@ -22,7 +22,22 @@ exports[`VehicleTable Render 1`] = `
>
+ >
+
+
+
+
diff --git a/src/components/Cars/List/index.jsx b/src/components/Cars/List/index.jsx
index db72783..0dbc101 100644
--- a/src/components/Cars/List/index.jsx
+++ b/src/components/Cars/List/index.jsx
@@ -1,18 +1,16 @@
+import React, { useEffect, useState } from "react";
import { Checkbox, FormControlLabel, Grid, MenuItem } from "@material-ui/core";
import AddCircleIcon from "@material-ui/icons/AddCircle";
-import clsx from "clsx";
-import React, { useEffect, useState } from "react";
import { Link } from "react-router-dom";
+import clsx from "clsx";
-import { Permissions } from "../../../utils/roles";
-import { useStatusContext } from "../../Contexts/StatusContext";
-import { useUserContext } from "../../Contexts/UserContext";
import { VehicleProvider } from "../../Contexts/VehicleContext";
+import { useUserContext } from "../../Contexts/UserContext";
+import { useStatusContext } from "../../Contexts/StatusContext";
+import useStyles from "../../useStyles";
+import SearchField from "../../Controls/SearchField";
import CarSelectionTable from "../../Controls/CarSelectionTable";
import OptionsDropdown from "../../Controls/OptionsDropdown";
-import { RoleWrap } from "../../Controls/RoleWrap";
-import SearchField from "../../Controls/SearchField";
-import useStyles from "../../useStyles";
const MainForm = () => {
const classes = useStyles();
@@ -24,8 +22,6 @@ const MainForm = () => {
token: {
idToken: { jwtToken: token },
},
- groups,
- providers,
} = useUserContext();
const handleSearch = (query) => {
@@ -34,11 +30,11 @@ const MainForm = () => {
const handleOnline = (event) => {
setOnline(event.target.checked);
- };
+ }
const handleOnlineHMI = (event) => {
setOnlineHMI(event.target.checked);
- };
+ }
useEffect(() => {
setTitle("Vehicles");
@@ -50,34 +46,30 @@ const MainForm = () => {
-
-
-
-
-
+
+
+
-
+
@@ -87,11 +79,7 @@ const MainForm = () => {
classes={classes}
token={token}
multiSelect={false}
- search={{
- search,
- online: online ? true : null,
- online_hmi: onlineHMI ? true : null,
- }}
+ search={{ search, online: online? true : null, online_hmi: onlineHMI? true : null }}
/>
);
diff --git a/src/components/Cars/List/index.test.jsx b/src/components/Cars/List/index.test.jsx
index e45d166..08b6335 100644
--- a/src/components/Cars/List/index.test.jsx
+++ b/src/components/Cars/List/index.test.jsx
@@ -11,7 +11,7 @@ import { BrowserRouter } from "react-router-dom";
import { VehicleProvider } from "../../Contexts/VehicleContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -39,7 +39,7 @@ describe("VehicleTable", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderVehicleTable();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Status/CANFiltersTab.test.jsx b/src/components/Cars/Status/CANFiltersTab.test.jsx
index 518ff0f..f7ac32d 100644
--- a/src/components/Cars/Status/CANFiltersTab.test.jsx
+++ b/src/components/Cars/Status/CANFiltersTab.test.jsx
@@ -9,7 +9,7 @@ import { render, waitFor } from "@testing-library/react";
import { BrowserRouter } from "react-router-dom";
import { setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import CANFiltersTab from "./CANFiltersTab";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -31,7 +31,7 @@ describe("CANFiltersTab", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderCANFiltersTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Status/CANSignalsTab.test.jsx b/src/components/Cars/Status/CANSignalsTab.test.jsx
index f50b265..2747b69 100644
--- a/src/components/Cars/Status/CANSignalsTab.test.jsx
+++ b/src/components/Cars/Status/CANSignalsTab.test.jsx
@@ -11,7 +11,7 @@ import { render, waitFor } from "@testing-library/react";
import { BrowserRouter } from "react-router-dom";
import CANSignalsTab from "./CANSignalsTab";
import {setToken} from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import {TEST_AUTH_OBJECT} from "../../../utils/testing";
const renderCANSignalsTab = async () => {
const { container } = render(
@@ -31,7 +31,7 @@ describe("CANSignalsTab", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderCANSignalsTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Status/CarUpdatesTab.test.jsx b/src/components/Cars/Status/CarUpdatesTab.test.jsx
index 1251721..291be4b 100644
--- a/src/components/Cars/Status/CarUpdatesTab.test.jsx
+++ b/src/components/Cars/Status/CarUpdatesTab.test.jsx
@@ -11,7 +11,7 @@ import { BrowserRouter } from "react-router-dom";
import { CANFiltersProvider } from "../../Contexts/CANFiltersContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./CarUpdatesTab";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -39,7 +39,7 @@ describe("CarUpdatesTab", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderCarUpdatesTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Status/Details/__snapshots__/index.test.jsx.snap b/src/components/Cars/Status/Details/__snapshots__/index.test.jsx.snap
index bf46c26..d38148b 100644
--- a/src/components/Cars/Status/Details/__snapshots__/index.test.jsx.snap
+++ b/src/components/Cars/Status/Details/__snapshots__/index.test.jsx.snap
@@ -101,6 +101,23 @@ exports[`VehicleDetailsTab Render 1`] = `
/>
+
+
+
diff --git a/src/components/Cars/Status/Details/index.jsx b/src/components/Cars/Status/Details/index.jsx
index bfb1c77..7692078 100644
--- a/src/components/Cars/Status/Details/index.jsx
+++ b/src/components/Cars/Status/Details/index.jsx
@@ -1,36 +1,28 @@
-import { Grid, Tooltip } from "@material-ui/core";
-import DeleteIcon from "@material-ui/icons/Delete";
-import EditIcon from "@material-ui/icons/Edit";
-import clsx from "clsx";
import React, { useEffect, useState } from "react";
import { Redirect } from "react-router";
-import { Link } from "react-router-dom";
-
-import { logger } from "../../../../services/monitoring";
-import { Permissions } from "../../../../utils/roles";
-import { useStatusContext } from "../../../Contexts/StatusContext";
-import { useUserContext } from "../../../Contexts/UserContext";
+import { Link } from 'react-router-dom';
import {
- useVehicleContext,
- VehicleProvider
-} from "../../../Contexts/VehicleContext";
-import { RoleWrap } from "../../../Controls/RoleWrap";
-import DeleteConfirmation from "../../../DeleteConfirmation";
+ Grid,
+ Tooltip,
+} from "@material-ui/core";
+import EditIcon from "@material-ui/icons/Edit"
+import DeleteIcon from "@material-ui/icons/Delete";
+import clsx from "clsx";
+
+import { useUserContext } from "../../../Contexts/UserContext"
+import { useStatusContext } from "../../../Contexts/StatusContext";
import useStyles from "../../../useStyles";
+import { logger } from "../../../../services/monitoring";
+import { useVehicleContext, VehicleProvider } from "../../../Contexts/VehicleContext";
+import DeleteConfirmation from "../../../DeleteConfirmation";
const MainForm = ({ vin }) => {
const classes = useStyles();
const { setMessage } = useStatusContext();
const { vehicle, getVehicle, deleteVehicle } = useVehicleContext();
const [redirect, setRedirect] = useState(null);
- const [showDeleteModal, setShowDeleteModal] = useState(false);
- const {
- token: {
- idToken: { jwtToken: token },
- },
- groups,
- providers,
- } = useUserContext();
+ const [showDeleteModal, setShowDeleteModal] = useState(false)
+ const { token: { idToken: { jwtToken: token } } } = useUserContext();
useEffect(() => {
(async () => {
@@ -48,7 +40,7 @@ const MainForm = ({ vin }) => {
const onDelete = async () => {
try {
await deleteVehicle(vin, token);
- setMessage(`Deleted ${vin}`);
+ setMessage(`Deleted ${vin}`)
setRedirect(`/vehicles`);
} catch (e) {
setMessage(e.message);
@@ -64,67 +56,36 @@ const MainForm = ({ vin }) => {
-
- VIN: {vin}
-
+ VIN: {vin}
{vehicle.log_level != null && (
-
- Log Level: {vehicle.log_level}
-
+ Log Level: {vehicle.log_level}
)}
{vehicle.canbus && (
CANBus
-
- Enabled: {vehicle.canbus.enabled.toString()}
-
-
- Max Memory Buffer Size: {vehicle.canbus.max_mem_buffer_size ?? "Default"}
-
-
- Enabled: {vehicle.canbus.data_logger_enabled.toString()}
-
-
- Max Disk Buffer Size: {vehicle.canbus.max_disk_buffer_size ?? "Default"}
-
-
- Filters: {vehicle.canbus.filters ? vehicle.canbus.filters.length : 0}
-
+ Enabled: {vehicle.canbus.enabled.toString()}
+ Max Memory Buffer Size: {vehicle.canbus.max_mem_buffer_size ?? "Default"}
+ Enabled: {vehicle.canbus.data_logger_enabled.toString()}
+ Max Disk Buffer Size: {vehicle.canbus.max_disk_buffer_size ?? "Default"}
+ Filters: {vehicle.canbus.filters ? vehicle.canbus.filters.length : 0}
)}
-
-
-
-
-
-
-
-
-
- setShowDeleteModal(true)}>
-
-
-
-
+
+
+
+
+
+
+ setShowDeleteModal(true)}>
+
+
+
-
setShowDeleteModal(false)}
- deleteFunction={onDelete}
- />
-
+ setShowDeleteModal(false)} deleteFunction={onDelete}/>
+
);
};
diff --git a/src/components/Cars/Status/Details/index.test.jsx b/src/components/Cars/Status/Details/index.test.jsx
index b571949..708c415 100644
--- a/src/components/Cars/Status/Details/index.test.jsx
+++ b/src/components/Cars/Status/Details/index.test.jsx
@@ -9,7 +9,7 @@ import routeData from "react-router";
import { VehicleProvider } from "../../../Contexts/VehicleContext";
import { StatusProvider } from "../../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER }from "../../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../../utils/snapshot";
@@ -42,7 +42,7 @@ describe("VehicleDetailsTab", () => {
})
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderVehicleDetailsTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Status/DetailsTab.test.jsx b/src/components/Cars/Status/DetailsTab.test.jsx
index 9ed2660..4057a10 100644
--- a/src/components/Cars/Status/DetailsTab.test.jsx
+++ b/src/components/Cars/Status/DetailsTab.test.jsx
@@ -11,7 +11,7 @@ import { MemoryRouter, Route } from "react-router-dom";
import { VehicleProvider } from "../../Contexts/VehicleContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./DetailsTab";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -41,7 +41,7 @@ describe("DetailsTab", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderDetailsTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Status/DigitalTwinTab.test.jsx b/src/components/Cars/Status/DigitalTwinTab.test.jsx
index 3e62c6d..aa9c27a 100644
--- a/src/components/Cars/Status/DigitalTwinTab.test.jsx
+++ b/src/components/Cars/Status/DigitalTwinTab.test.jsx
@@ -10,7 +10,7 @@ import { render, waitFor } from "@testing-library/react";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import DigitalTwinTab from "./DigitalTwinTab";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -34,7 +34,7 @@ describe("DigitalTwinTab", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderDetailsTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Status/FleetsTab.test.jsx b/src/components/Cars/Status/FleetsTab.test.jsx
index 283f859..58fad88 100644
--- a/src/components/Cars/Status/FleetsTab.test.jsx
+++ b/src/components/Cars/Status/FleetsTab.test.jsx
@@ -12,7 +12,7 @@ import { BrowserRouter } from "react-router-dom";
import {StatusProvider} from "../../Contexts/StatusContext";
import {VehicleProvider} from "../../Contexts/VehicleContext";
import {setToken, UserProvider} from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import {TEST_AUTH_OBJECT} from "../../../utils/testing";
import addSnapshotSerializer from "../../../utils/snapshot";
import FleetsTab from "./FleetsTab";
@@ -40,7 +40,7 @@ describe("FleetsTab", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderFleetsTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Status/RemoteCommandsTab.test.jsx b/src/components/Cars/Status/RemoteCommandsTab.test.jsx
index 1644aa7..c1d7882 100644
--- a/src/components/Cars/Status/RemoteCommandsTab.test.jsx
+++ b/src/components/Cars/Status/RemoteCommandsTab.test.jsx
@@ -10,7 +10,7 @@ import {StatusProvider} from "../../Contexts/StatusContext";
import {setToken, UserProvider} from "../../Contexts/UserContext";
import RemoteCommandsTab from "./RemoteCommandsTab";
import addSnapshotSerializer from "../../../utils/snapshot";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import {TEST_AUTH_OBJECT} from "../../../utils/testing";
import React from "react";
const renderRemoteCommandsTab = async () => {
@@ -33,7 +33,7 @@ describe("RemoteCommandsTab", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderRemoteCommandsTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Status/__snapshots__/CANFiltersTab.test.jsx.snap b/src/components/Cars/Status/__snapshots__/CANFiltersTab.test.jsx.snap
index 77fde3d..da44961 100644
--- a/src/components/Cars/Status/__snapshots__/CANFiltersTab.test.jsx.snap
+++ b/src/components/Cars/Status/__snapshots__/CANFiltersTab.test.jsx.snap
@@ -249,6 +249,23 @@ exports[`CANFiltersTab Render 1`] = `
/>
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Cars/Status/__snapshots__/DetailsTab.test.jsx.snap b/src/components/Cars/Status/__snapshots__/DetailsTab.test.jsx.snap
index d23af12..c2a24b3 100644
--- a/src/components/Cars/Status/__snapshots__/DetailsTab.test.jsx.snap
+++ b/src/components/Cars/Status/__snapshots__/DetailsTab.test.jsx.snap
@@ -109,6 +109,23 @@ exports[`DetailsTab Render 1`] = `
/>
+
+
+
diff --git a/src/components/Cars/Status/__snapshots__/index.test.jsx.snap b/src/components/Cars/Status/__snapshots__/index.test.jsx.snap
index 1954a3f..87bafee 100644
--- a/src/components/Cars/Status/__snapshots__/index.test.jsx.snap
+++ b/src/components/Cars/Status/__snapshots__/index.test.jsx.snap
@@ -67,6 +67,7 @@ exports[`CarStatus Render 1`] = `
+
+
+
diff --git a/src/components/Cars/Status/index.jsx b/src/components/Cars/Status/index.jsx
index 48c37b9..bed8b79 100644
--- a/src/components/Cars/Status/index.jsx
+++ b/src/components/Cars/Status/index.jsx
@@ -1,22 +1,19 @@
-import { Box, Tab, Tabs } from "@material-ui/core";
-import clsx from "clsx";
import React, { useEffect } from "react";
import { useParams } from "react-router";
import { useLocation } from "react-router-dom";
+import clsx from "clsx";
+import { Box, Tab, Tabs } from "@material-ui/core";
-import { Permissions } from "../../../utils/roles";
-import { useStatusContext } from "../../Contexts/StatusContext";
-import { useUserContext } from "../../Contexts/UserContext";
-import { RoleWrap } from "../../Controls/RoleWrap";
-import TabPanel from "../../Controls/TabPanel";
-import useStyles from "../../useStyles";
-import CANFiltersTab from "./CANFiltersTab";
-import CANSignalsTab from "./CANSignalsTab";
-import CarUpdatesTab from "./CarUpdatesTab";
import CarDetailsTab from "./DetailsTab";
+import CarUpdatesTab from "./CarUpdatesTab";
+import CANFiltersTab from "./CANFiltersTab";
import DigitalTwinTab from "./DigitalTwinTab";
-import FleetsTab from "./FleetsTab";
+import TabPanel from "../../Controls/TabPanel";
+import { useStatusContext } from "../../Contexts/StatusContext";
+import useStyles from "../../useStyles";
+import CANSignalsTab from "./CANSignalsTab";
import RemoteCommandsTab from "./RemoteCommandsTab";
+import FleetsTab from "./FleetsTab";
const tabHashes = ["details", "updates", "filters"];
@@ -27,8 +24,6 @@ const CarStatus = () => {
const { hash } = useLocation();
const [tabIndex, setTabIndex] = React.useState(0);
- const { groups, providers } = useUserContext();
-
useEffect(() => {
const key = hash.replace("#", "");
const index = tabHashes.findIndex((element) => element === key);
@@ -68,18 +63,12 @@ const CarStatus = () => {
>
-
-
-
+
+
+
+
+
-
-
-
-
@@ -91,30 +80,25 @@ const CarStatus = () => {
-
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
+
+
+
);
};
diff --git a/src/components/Cars/Status/index.test.jsx b/src/components/Cars/Status/index.test.jsx
index 21a32d6..8083078 100644
--- a/src/components/Cars/Status/index.test.jsx
+++ b/src/components/Cars/Status/index.test.jsx
@@ -12,7 +12,7 @@ import routeData from "react-router";
import { CANFiltersProvider } from "../../Contexts/CANFiltersContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import CarStatus from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -45,7 +45,7 @@ describe("CarStatus", () => {
})
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderCarStatus();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Cars/Update/index.test.jsx b/src/components/Cars/Update/index.test.jsx
index c3b680b..9f2bfec 100644
--- a/src/components/Cars/Update/index.test.jsx
+++ b/src/components/Cars/Update/index.test.jsx
@@ -8,7 +8,7 @@ import { BrowserRouter } from "react-router-dom";
import { VehicleProvider } from "../../Contexts/VehicleContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -36,7 +36,7 @@ describe("VehicleUpdate", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderVehicleUpdate();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Contexts/UserContext.jsx b/src/components/Contexts/UserContext.jsx
index f6ab06c..3f05b69 100644
--- a/src/components/Contexts/UserContext.jsx
+++ b/src/components/Contexts/UserContext.jsx
@@ -2,7 +2,7 @@ import React, { useContext, useEffect, useState } from "react";
import auth from "../../services/auth";
import getTimerWorker from "../../services/getTimerWorker";
import { parsePayload } from "../../utils/jwt";
-import {getGroups, getProviders} from "../../utils/roles";
+import { getGroups } from "../../utils/roles";
const UserContext = React.createContext();
@@ -10,7 +10,6 @@ export const UserProvider = ({ children }) => {
const [fetching, setFetching] = useState(false);
const [token, setToken] = useState(null);
const [groups, setGroups] = useState(null);
- const [providers, setProviders] = useState(null);
const [error, setError] = useState(null);
let timer;
@@ -74,7 +73,6 @@ export const UserProvider = ({ children }) => {
}
setGroups(getGroups(idToken));
- setProviders(getProviders(idToken));
startSessionTimer();
} catch (e) {
setError(`Verify error. ${e.message}`);
@@ -108,7 +106,6 @@ export const UserProvider = ({ children }) => {
const signOut = () => {
setGroups(null);
- setProviders(null);
setToken(null);
if (localStorage) {
localStorage.removeItem("token");
@@ -156,7 +153,6 @@ export const UserProvider = ({ children }) => {
error,
fetching,
groups,
- providers,
token,
getAuthorizeURL,
getLogoutURL,
diff --git a/src/components/Contexts/__mocks__/UserContext.jsx b/src/components/Contexts/__mocks__/UserContext.jsx
index 746fd32..958d515 100644
--- a/src/components/Contexts/__mocks__/UserContext.jsx
+++ b/src/components/Contexts/__mocks__/UserContext.jsx
@@ -1,10 +1,9 @@
import React from "react";
-import {getGroups, getProviders} from "../../../utils/roles";
+import { getGroups } from "../../../utils/roles";
let token = null;
let groups = null;
-let providers = null;
let fetching = false;
let error = null;
let signInResp = {};
@@ -21,7 +20,6 @@ export const useUserContext = () => ({
error,
fetching,
groups,
- providers,
token,
getAuthorizeURL: jest.fn(() => authorizeURL),
getLogoutURL: jest.fn(() => logoutURL),
@@ -37,10 +35,8 @@ export const setToken = (val) => {
token = val;
if (!val || !val.idToken || !val.idToken.jwtToken) {
groups = null;
- providers = null
} else {
groups = getGroups(val.idToken.jwtToken);
- providers = getProviders(val.idToken.jwtToken);
}
};
diff --git a/src/components/Controls/CarUpdateStatusTable/CarUpdateStatusTable.test.jsx b/src/components/Controls/CarUpdateStatusTable/CarUpdateStatusTable.test.jsx
index c49d526..d728be1 100644
--- a/src/components/Controls/CarUpdateStatusTable/CarUpdateStatusTable.test.jsx
+++ b/src/components/Controls/CarUpdateStatusTable/CarUpdateStatusTable.test.jsx
@@ -6,14 +6,14 @@ import { render, waitFor } from "@testing-library/react";
import { CarUpdatesProvider } from "../../Contexts/CarUpdatesContext";
import CarUpdateStatusTable from "../CarUpdateStatusTable";
import { StatusProvider } from "../../Contexts/StatusContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import addSnapshotSerializer from "../../../utils/snapshot";
const renderCarUpdateStatusTable = async () => {
const { container } = render(
-
+
);
diff --git a/src/components/Controls/CarUpdatesTable/index.jsx b/src/components/Controls/CarUpdatesTable/index.jsx
index ef60a4b..3750152 100644
--- a/src/components/Controls/CarUpdatesTable/index.jsx
+++ b/src/components/Controls/CarUpdatesTable/index.jsx
@@ -1,3 +1,4 @@
+import React, { useEffect, useState } from "react";
import {
LinearProgress,
Table,
@@ -8,22 +9,19 @@ import {
TableRow,
Tooltip,
} from "@material-ui/core";
-import CancelIcon from "@material-ui/icons/Cancel";
-import React, { useEffect, useState } from "react";
import { Link } from "react-router-dom";
+import CancelIcon from "@material-ui/icons/Cancel";
-import { logger } from "../../../services/monitoring";
import { LocalDateTimeString } from "../../../utils/dates";
+import TableHeaderSortable from "../../Table/HeaderSortable";
import {
CarUpdatesProvider,
useCarUpdatesContext,
} from "../../Contexts/CarUpdatesContext";
import { useStatusContext } from "../../Contexts/StatusContext";
-import { useUserContext } from "../../Contexts/UserContext";
-import TableHeaderSortable from "../../Table/HeaderSortable";
-import { useLocalStorage } from "../../useLocalStorage";
import useStyles from "../../useStyles";
-import { RoleWrap } from "../RoleWrap";
+import { logger } from "../../../services/monitoring";
+import { useLocalStorage } from "../../useLocalStorage";
const tableColumns = [
{
@@ -70,8 +68,6 @@ const MainForm = ({ vin, token }) => {
} = useCarUpdatesContext();
const { setMessage } = useStatusContext();
- const { groups, providers } = useUserContext();
-
useEffect(() => {
(async () => {
try {
@@ -180,17 +176,11 @@ const MainForm = ({ vin, token }) => {
{LocalDateTimeString(row.updated)}
-
-
- sendCancel(row)}>
-
-
-
-
+
+ sendCancel(row)}>
+
+
+
))}
diff --git a/src/components/Controls/RoleWrap/__snapshots__/index.test.js.snap b/src/components/Controls/RoleWrap/__snapshots__/index.test.js.snap
deleted file mode 100644
index 94da114..0000000
--- a/src/components/Controls/RoleWrap/__snapshots__/index.test.js.snap
+++ /dev/null
@@ -1,23 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`RoleWrap RoleWrap with access, child renders 1`] = `
-
-`;
-
-exports[`RoleWrap RoleWrap without access, child does not render 1`] = ``;
-
-exports[`RoleWrap RoleWrap without access, eitherComponent renders 1`] = `
-
-`;
diff --git a/src/components/Controls/RoleWrap/index.js b/src/components/Controls/RoleWrap/index.js
deleted file mode 100644
index b91b408..0000000
--- a/src/components/Controls/RoleWrap/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import {hasRole} from "../../../utils/roles";
-import React from "react";
-
-export const RoleWrap = (props) => {
- const {groups, rolesPerProvider, providers} = props;
-
- const eitherComponent = props["eitherComponent"] || null;
-
- if (!hasRole(groups, rolesPerProvider, providers)) {
- return eitherComponent != null ? eitherComponent : <>>;
- }
-
- return (
-
- {props.children}
-
- )
-}
-
diff --git a/src/components/Controls/RoleWrap/index.test.js b/src/components/Controls/RoleWrap/index.test.js
deleted file mode 100644
index 421caac..0000000
--- a/src/components/Controls/RoleWrap/index.test.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import { render, screen } from "@testing-library/react";
-import { Permissions, Providers, Roles } from "../../../utils/roles";
-import addSnapshotSerializer from "../../../utils/snapshot";
-import { RoleWrap } from "./index";
-
-const selector = "test-role-wrap-child";
-
-const renderRoleWrap = async (
- groups,
- providers,
- rolesPerProvider,
- eitherComponent
-) => {
- const { container } = render(
-
- Test
-
- );
- return container;
-};
-
-describe("RoleWrap", () => {
- beforeAll(() => {
- addSnapshotSerializer(expect);
- });
-
- it("RoleWrap with access, child renders", async () => {
- const view = await renderRoleWrap(
- [Roles.READ],
- [Providers.FISKER],
- Permissions.FiskerRead,
- null
- );
- const childComponent = screen.getByTestId(selector);
- expect(childComponent).toHaveTextContent("Test");
-
- expect(view).toMatchSnapshot();
- });
-
- it("RoleWrap without access, child does not render", async () => {
- const view = await renderRoleWrap(
- [Roles.READ],
- [Providers.FISKER],
- Permissions.FiskerCreate,
- null
- );
- const childComponent = screen.queryByTestId(selector);
- expect(childComponent).toBeNull();
-
- expect(view).toMatchSnapshot();
- });
-
- it("RoleWrap without access, eitherComponent renders", async () => {
- const view = await renderRoleWrap(
- [Roles.READ],
- [Providers.FISKER],
- Permissions.FiskerCreate,
- Either
- );
- const childComponent = screen.getByTestId(selector);
- expect(childComponent).toHaveTextContent("Either");
-
- expect(view).toMatchSnapshot();
- });
-});
diff --git a/src/components/Fleets/Add/index.test.jsx b/src/components/Fleets/Add/index.test.jsx
index b2ba2e4..3806a23 100644
--- a/src/components/Fleets/Add/index.test.jsx
+++ b/src/components/Fleets/Add/index.test.jsx
@@ -8,7 +8,7 @@ import { BrowserRouter } from "react-router-dom";
import { FleetProvider } from "../../Contexts/FleetContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -36,7 +36,7 @@ describe("FleetAddForm", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderFleetAdd();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Status/CANFilters/Add/index.test.jsx b/src/components/Fleets/Status/CANFilters/Add/index.test.jsx
index aaad37b..362ffbf 100644
--- a/src/components/Fleets/Status/CANFilters/Add/index.test.jsx
+++ b/src/components/Fleets/Status/CANFilters/Add/index.test.jsx
@@ -8,7 +8,7 @@ import { BrowserRouter } from "react-router-dom";
import { FleetProvider } from "../../../../Contexts/FleetContext";
import { StatusProvider } from "../../../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER }from "../../../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../../../utils/snapshot";
@@ -34,7 +34,7 @@ describe("FleetCANFilterAdd", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderFleetCANFilterAdd();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Status/CANFilters/Table/__snapshots__/index.test.jsx.snap b/src/components/Fleets/Status/CANFilters/Table/__snapshots__/index.test.jsx.snap
index c07188c..6baadf0 100644
--- a/src/components/Fleets/Status/CANFilters/Table/__snapshots__/index.test.jsx.snap
+++ b/src/components/Fleets/Status/CANFilters/Table/__snapshots__/index.test.jsx.snap
@@ -221,6 +221,23 @@ exports[`FleetCANFiltersTable Render 1`] = `
/>
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Fleets/Status/CANFilters/Table/index.jsx b/src/components/Fleets/Status/CANFilters/Table/index.jsx
index 69740b4..e9eb631 100644
--- a/src/components/Fleets/Status/CANFilters/Table/index.jsx
+++ b/src/components/Fleets/Status/CANFilters/Table/index.jsx
@@ -1,3 +1,5 @@
+import React, { useEffect, useState } from "react";
+import { Link } from 'react-router-dom';
import {
Grid,
Table,
@@ -10,42 +12,37 @@ import {
} from "@material-ui/core";
import AddCircleIcon from "@material-ui/icons/AddCircle";
import DeleteIcon from "@material-ui/icons/Delete";
-import EditIcon from "@material-ui/icons/Edit";
+import EditIcon from '@material-ui/icons/Edit';
import clsx from "clsx";
-import React, { useEffect, useState } from "react";
-import { Link } from "react-router-dom";
-import { logger } from "../../../../../services/monitoring";
-import { hasRole, Permissions } from "../../../../../utils/roles";
-import { trimIfMoreThan } from "../../../../../utils/strings";
-import {
- FleetProvider,
- useFleetContext,
-} from "../../../../Contexts/FleetContext";
-import { useStatusContext } from "../../../../Contexts/StatusContext";
-import { useUserContext } from "../../../../Contexts/UserContext";
-import SearchField from "../../../../Controls/SearchField";
import TableHeaderSortable from "../../../../Table/HeaderSortable";
-import { useLocalStorage } from "../../../../useLocalStorage";
+import { useUserContext } from "../../../../Contexts/UserContext"
+import { useStatusContext } from "../../../../Contexts/StatusContext";
+import { FleetProvider, useFleetContext } from "../../../../Contexts/FleetContext"
import useStyles from "../../../../useStyles";
+import SearchField from "../../../../Controls/SearchField";
+import { logger } from "../../../../../services/monitoring";
+import { Roles, hasRole } from "../../../../../utils/roles";
+import {useLocalStorage} from "../../../../useLocalStorage";
+import {trimIfMoreThan} from "../../../../../utils/strings"
const tableColumns = [
{
id: "can_id",
- label: "CAN ID",
+ label: "CAN ID"
},
{
id: "interval",
- label: "Interval (ms)",
+ label: "Interval (ms)"
},
{
id: "edge_mask",
- label: "Edge mask",
+ label: "Edge mask"
},
{
id: "",
- label: "Actions",
- },
+ label: "Actions"
+ }
];
const PAGE_SIZE = "FLEET_STATUS_CAN_FILTER_TABLE_PAGE_SIZE";
@@ -57,19 +54,8 @@ const MainForm = ({ name }) => {
const [order, setOrder] = useState("desc");
const classes = useStyles();
const { setMessage } = useStatusContext();
- const {
- fleetCANFilters,
- totalFleetCANFilters,
- getFleetCANFilters,
- deleteFleetCANFilter,
- } = useFleetContext();
- const {
- token: {
- idToken: { jwtToken: token },
- },
- groups,
- providers,
- } = useUserContext();
+ const { fleetCANFilters, totalFleetCANFilters, getFleetCANFilters, deleteFleetCANFilter } = useFleetContext();
+ const { token: { idToken: { jwtToken: token } }, groups } = useUserContext();
useEffect(() => {
(async () => {
@@ -121,7 +107,7 @@ const MainForm = ({ name }) => {
const onDelete = async (can_id) => {
try {
await deleteFleetCANFilter(name, can_id, token);
- setMessage(`Deleted ${can_id}`);
+ setMessage(`Deleted ${can_id}`)
} catch (e) {
setMessage(e.message);
logger.warn(e.stack);
@@ -130,19 +116,19 @@ const MainForm = ({ name }) => {
const Actions = (row) => {
let actions = [];
- if (hasRole(groups, Permissions.FiskerCreate, providers)) {
+ if (hasRole([Roles.CREATE], groups)) {
actions.push({
tip: `Update "${row.can_id}"`,
link: `/fleet/${name}/filter-update?name=${name}&can_id=${row.can_id}&interval=${row.interval}`,
- icon: ,
+ icon:
});
}
- if (hasRole(groups, Permissions.FiskerDelete, providers)) {
+ if (hasRole([Roles.DELETE], groups)) {
actions.push({
tip: `Delete "${row.can_id}"`,
id: row.can_id,
- icon: ,
- });
+ icon:
+ })
}
if (actions.length === 0) return ["No actions"];
@@ -171,10 +157,7 @@ const MainForm = ({ name }) => {
-
+
@@ -191,13 +174,11 @@ const MainForm = ({ name }) => {
onSortRequest={handleSort}
/>
- {fleetCANFilters.map((row) => (
+ {fleetCANFilters.map(row => (
{row.can_id}
{row.interval}
-
- {trimIfMoreThan(row.edge_mask, 15, "...")}
-
+ {trimIfMoreThan(row.edge_mask, 15, "...")}
{Actions(row)}
))}
@@ -220,7 +201,7 @@ const MainForm = ({ name }) => {
-
+
);
};
diff --git a/src/components/Fleets/Status/CANFilters/Table/index.test.jsx b/src/components/Fleets/Status/CANFilters/Table/index.test.jsx
index ce7c40c..4c69962 100644
--- a/src/components/Fleets/Status/CANFilters/Table/index.test.jsx
+++ b/src/components/Fleets/Status/CANFilters/Table/index.test.jsx
@@ -11,7 +11,7 @@ import { BrowserRouter } from "react-router-dom";
import { FleetProvider } from "../../../../Contexts/FleetContext";
import { StatusProvider } from "../../../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER }from "../../../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../../../utils/snapshot";
@@ -37,7 +37,7 @@ describe("FleetCANFiltersTable", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderFleetCANFiltersTable();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Status/CANFilters/Update/index.test.jsx b/src/components/Fleets/Status/CANFilters/Update/index.test.jsx
index 029e6e2..36fdb68 100644
--- a/src/components/Fleets/Status/CANFilters/Update/index.test.jsx
+++ b/src/components/Fleets/Status/CANFilters/Update/index.test.jsx
@@ -8,7 +8,7 @@ import { BrowserRouter } from "react-router-dom";
import { FleetProvider } from "../../../../Contexts/FleetContext";
import { StatusProvider } from "../../../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../../../utils/snapshot";
@@ -34,7 +34,7 @@ describe("FleetCANFilterUpdate", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderFleetCANFilterUpdate();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Status/CANFiltersTab.test.jsx b/src/components/Fleets/Status/CANFiltersTab.test.jsx
index bd490d2..bd30ecc 100644
--- a/src/components/Fleets/Status/CANFiltersTab.test.jsx
+++ b/src/components/Fleets/Status/CANFiltersTab.test.jsx
@@ -9,7 +9,7 @@ import { render, waitFor } from "@testing-library/react";
import { BrowserRouter } from "react-router-dom";
import { setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import CANFiltersTab from "./CANFiltersTab";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -31,7 +31,7 @@ describe("CANFiltersTab", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderCANFitlersTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Status/Details/index.test.jsx b/src/components/Fleets/Status/Details/index.test.jsx
index 7a3384f..6cd7f4b 100644
--- a/src/components/Fleets/Status/Details/index.test.jsx
+++ b/src/components/Fleets/Status/Details/index.test.jsx
@@ -9,7 +9,7 @@ import routeData from "react-router";
import { FleetProvider } from "../../../Contexts/FleetContext";
import { StatusProvider } from "../../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER }from "../../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../../utils/snapshot";
@@ -42,7 +42,7 @@ describe("FleetDetailsTab", () => {
})
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderFleetDetailsTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Status/DetailsTab.test.jsx b/src/components/Fleets/Status/DetailsTab.test.jsx
index c6da46b..21f3eca 100644
--- a/src/components/Fleets/Status/DetailsTab.test.jsx
+++ b/src/components/Fleets/Status/DetailsTab.test.jsx
@@ -11,7 +11,7 @@ import { MemoryRouter, Route } from "react-router-dom";
import { FleetProvider } from "../../Contexts/FleetContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./DetailsTab";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -41,7 +41,7 @@ describe("DetailsTab", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderDetailsTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Status/Vehicles/Add/index.test.jsx b/src/components/Fleets/Status/Vehicles/Add/index.test.jsx
index fea2983..1eccb7e 100644
--- a/src/components/Fleets/Status/Vehicles/Add/index.test.jsx
+++ b/src/components/Fleets/Status/Vehicles/Add/index.test.jsx
@@ -8,7 +8,7 @@ import { BrowserRouter } from "react-router-dom";
import { FleetProvider } from "../../../../Contexts/FleetContext";
import { StatusProvider } from "../../../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER }from "../../../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../../../utils/snapshot";
@@ -36,7 +36,7 @@ describe("FleetVehicleAdd", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderFleetVehicleAdd();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Status/Vehicles/Table/__snapshots__/index.test.jsx.snap b/src/components/Fleets/Status/Vehicles/Table/__snapshots__/index.test.jsx.snap
index 9cad130..7cb84c5 100644
--- a/src/components/Fleets/Status/Vehicles/Table/__snapshots__/index.test.jsx.snap
+++ b/src/components/Fleets/Status/Vehicles/Table/__snapshots__/index.test.jsx.snap
@@ -153,7 +153,26 @@ exports[`FleetVehiclesTable Render 1`] = `
- No actions
+
+
+
+
+
+
|
- No actions
+
+
+
+
+
+
- No actions
+
+
+
+
+
+
diff --git a/src/components/Fleets/Status/Vehicles/Table/index.jsx b/src/components/Fleets/Status/Vehicles/Table/index.jsx
index 07dc489..07127f2 100644
--- a/src/components/Fleets/Status/Vehicles/Table/index.jsx
+++ b/src/components/Fleets/Status/Vehicles/Table/index.jsx
@@ -1,3 +1,5 @@
+import React, { useEffect, useState } from "react";
+import { Link } from 'react-router-dom';
import {
Grid,
Table,
@@ -11,32 +13,27 @@ import {
import AddCircleIcon from "@material-ui/icons/AddCircle";
import DeleteIcon from "@material-ui/icons/Delete";
import clsx from "clsx";
-import React, { useEffect, useState } from "react";
-import { Link } from "react-router-dom";
-import { logger } from "../../../../../services/monitoring";
-import { hasRole, Permissions } from "../../../../../utils/roles";
-import {
- FleetProvider,
- useFleetContext,
-} from "../../../../Contexts/FleetContext";
-import { useStatusContext } from "../../../../Contexts/StatusContext";
-import { useUserContext } from "../../../../Contexts/UserContext";
-import SearchField from "../../../../Controls/SearchField";
-import DeleteConfirmation from "../../../../DeleteConfirmation";
import TableHeaderSortable from "../../../../Table/HeaderSortable";
-import { useLocalStorage } from "../../../../useLocalStorage";
+import { useUserContext } from "../../../../Contexts/UserContext"
+import { useStatusContext } from "../../../../Contexts/StatusContext";
+import { FleetProvider, useFleetContext } from "../../../../Contexts/FleetContext"
import useStyles from "../../../../useStyles";
+import SearchField from "../../../../Controls/SearchField";
+import { logger } from "../../../../../services/monitoring";
+import { Roles, hasRole } from "../../../../../utils/roles";
+import { useLocalStorage } from "../../../../useLocalStorage";
+import DeleteConfirmation from "../../../../DeleteConfirmation";
const tableColumns = [
{
id: "vin",
- label: "VIN",
+ label: "VIN"
},
{
id: "",
- label: "Actions",
- },
+ label: "Actions"
+ }
];
const PAGE_SIZE = "FLEET_STATUS_VEHICLES_TABLE_PAGE_SIZE";
@@ -47,22 +44,11 @@ const MainForm = ({ name }) => {
const [orderBy, setOrderBy] = useState("id");
const [order, setOrder] = useState("desc");
const [search, setSearch] = useState("");
- const [showDeleteModal, setShowDeleteModal] = useState(false);
+ const [showDeleteModal, setShowDeleteModal] = useState(false)
const classes = useStyles();
const { setMessage } = useStatusContext();
- const {
- fleetVehicles,
- totalFleetVehicles,
- getFleetVehicles,
- deleteFleetVehicle,
- } = useFleetContext();
- const {
- token: {
- idToken: { jwtToken: token },
- },
- groups,
- providers,
- } = useUserContext();
+ const { fleetVehicles, totalFleetVehicles, getFleetVehicles, deleteFleetVehicle } = useFleetContext();
+ const { token: { idToken: { jwtToken: token } }, groups } = useUserContext();
const handleSearch = (query) => {
setSearch(query);
@@ -119,7 +105,7 @@ const MainForm = ({ name }) => {
const onDelete = async (vin) => {
try {
await deleteFleetVehicle(name, { vin: vin }, token);
- setMessage(`Deleted ${vin}`);
+ setMessage(`Deleted ${vin}`)
} catch (e) {
setMessage(e.message);
logger.warn(e.stack);
@@ -128,12 +114,12 @@ const MainForm = ({ name }) => {
const Actions = (vin) => {
let actions = [];
- if (hasRole(groups, Permissions.FiskerDelete, providers)) {
+ if (hasRole([Roles.DELETE], groups)) {
actions.push({
tip: `Delete "${vin}"`,
id: vin,
- icon: ,
- });
+ icon:
+ })
}
if (actions.length === 0) return ["No actions"];
@@ -154,13 +140,9 @@ const MainForm = ({ name }) => {
{action.icon}
- setShowDeleteModal(false)}
- deleteFunction={() => onDelete(action.id)}
- />
+ setShowDeleteModal(false)} deleteFunction={() => onDelete(action.id)} />
+
);
}
});
@@ -170,10 +152,7 @@ const MainForm = ({ name }) => {
-
+
@@ -190,7 +169,7 @@ const MainForm = ({ name }) => {
onSortRequest={handleSort}
/>
- {fleetVehicles.map((vin) => (
+ {fleetVehicles.map(vin => (
{vin}
@@ -217,7 +196,7 @@ const MainForm = ({ name }) => {
-
+
);
};
diff --git a/src/components/Fleets/Status/Vehicles/Table/index.test.jsx b/src/components/Fleets/Status/Vehicles/Table/index.test.jsx
index a6b2c11..703be2a 100644
--- a/src/components/Fleets/Status/Vehicles/Table/index.test.jsx
+++ b/src/components/Fleets/Status/Vehicles/Table/index.test.jsx
@@ -11,7 +11,7 @@ import { BrowserRouter } from "react-router-dom";
import { FleetProvider } from "../../../../Contexts/FleetContext";
import { StatusProvider } from "../../../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER }from "../../../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../../../utils/snapshot";
@@ -39,7 +39,7 @@ describe("FleetVehiclesTable", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderFleetVehiclesTable();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Status/VehiclesTab.test.jsx b/src/components/Fleets/Status/VehiclesTab.test.jsx
index 9d8081e..ef72fd7 100644
--- a/src/components/Fleets/Status/VehiclesTab.test.jsx
+++ b/src/components/Fleets/Status/VehiclesTab.test.jsx
@@ -9,7 +9,7 @@ import { render, waitFor } from "@testing-library/react";
import { BrowserRouter } from "react-router-dom";
import { setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import VehiclesTab from "./VehiclesTab";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -31,7 +31,7 @@ describe("VehiclesTab", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderVehiclesTab();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Status/__snapshots__/CANFiltersTab.test.jsx.snap b/src/components/Fleets/Status/__snapshots__/CANFiltersTab.test.jsx.snap
index 4ab0de0..27c2794 100644
--- a/src/components/Fleets/Status/__snapshots__/CANFiltersTab.test.jsx.snap
+++ b/src/components/Fleets/Status/__snapshots__/CANFiltersTab.test.jsx.snap
@@ -220,6 +220,23 @@ exports[`CANFiltersTab Render 1`] = `
/>
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Fleets/Status/__snapshots__/VehiclesTab.test.jsx.snap b/src/components/Fleets/Status/__snapshots__/VehiclesTab.test.jsx.snap
index aab2895..7db6e6e 100644
--- a/src/components/Fleets/Status/__snapshots__/VehiclesTab.test.jsx.snap
+++ b/src/components/Fleets/Status/__snapshots__/VehiclesTab.test.jsx.snap
@@ -152,7 +152,26 @@ exports[`VehiclesTab Render 1`] = `
- No actions
+
+
+
+
+
+
|
- No actions
+
+
+
+
+
+
- No actions
+
+
+
+
+
+
diff --git a/src/components/Fleets/Status/index.test.jsx b/src/components/Fleets/Status/index.test.jsx
index 9e18e1d..bc5cb8c 100644
--- a/src/components/Fleets/Status/index.test.jsx
+++ b/src/components/Fleets/Status/index.test.jsx
@@ -12,7 +12,7 @@ import routeData from "react-router";
import { FleetProvider } from "../../Contexts/FleetContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import FleetStatus from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -45,7 +45,7 @@ describe("FleetStatus", () => {
})
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderCarStatus();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Table/index.test.jsx b/src/components/Fleets/Table/index.test.jsx
index f70cbe0..31d2b6b 100644
--- a/src/components/Fleets/Table/index.test.jsx
+++ b/src/components/Fleets/Table/index.test.jsx
@@ -11,7 +11,7 @@ import { BrowserRouter } from "react-router-dom";
import { FleetProvider } from "../../Contexts/FleetContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -39,7 +39,7 @@ describe("FleetTable", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderFleetTable();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Fleets/Update/index.test.jsx b/src/components/Fleets/Update/index.test.jsx
index 3e4479e..8e91ee1 100644
--- a/src/components/Fleets/Update/index.test.jsx
+++ b/src/components/Fleets/Update/index.test.jsx
@@ -8,7 +8,7 @@ import { BrowserRouter } from "react-router-dom";
import { FleetProvider } from "../../Contexts/FleetContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -36,7 +36,7 @@ describe("FleetUpdate", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderFleetUpdate();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Layouts/SideMenu.jsx b/src/components/Layouts/SideMenu.jsx
index ea750a9..214bdf3 100644
--- a/src/components/Layouts/SideMenu.jsx
+++ b/src/components/Layouts/SideMenu.jsx
@@ -1,17 +1,17 @@
+import React from "react";
import { List } from "@material-ui/core";
+import HomeIcon from "@material-ui/icons/Home";
+import DirectionsCarIcon from "@material-ui/icons/DirectionsCar";
+import CommuteIcon from "@material-ui/icons/Commute";
+import CloudDownloadIcon from "@material-ui/icons/CloudDownload";
import AssessmentIcon from "@material-ui/icons/Assessment";
import BuildIcon from "@material-ui/icons/Build";
-import CloudDownloadIcon from "@material-ui/icons/CloudDownload";
-import CommuteIcon from "@material-ui/icons/Commute";
-import DirectionsCarIcon from "@material-ui/icons/DirectionsCar";
-import HomeIcon from "@material-ui/icons/Home";
import SettingsInputCompositeIcon from "@material-ui/icons/SettingsInputComposite";
-import { default as React, useEffect, useState } from "react";
-import { hasRole, Permissions } from "../../utils/roles";
import { useUserContext } from "../Contexts/UserContext";
-import SupersetDashboardList from "../SupersetDashboardList/SupersetDashboardList";
+import { Roles, hasRole } from "../../utils/roles";
import { ExpandableSideMenuItem, MenuItem } from "./MenuItem";
+import SupersetDashboardList from "../SupersetDashboardList/SupersetDashboardList";
const menuData = [
{
@@ -24,60 +24,65 @@ const menuData = [
label: "Deployments",
to: "/packages",
icon: ,
- rolesPerProvider: Permissions.FiskerMagnaRead,
+ roles: [Roles.READ, Roles.CREATE],
},
{
label: "Vehicles",
to: "/vehicles",
icon: ,
- rolesPerProvider: Permissions.FiskerMagnaRead,
+ roles: [Roles.READ, Roles.CREATE],
},
{
label: "Fleets",
to: "/fleets",
icon: ,
- rolesPerProvider: Permissions.FiskerRead,
+ roles: [Roles.READ, Roles.CREATE],
},
{
label: "Datascope",
to: null,
icon: ,
- rolesPerProvider: Permissions.FiskerRead,
- component: SupersetDashboardList,
+ roles: [Roles.READ, Roles.CREATE],
+ component: SupersetDashboardList
},
{
label: "Suppliers",
to: "/suppliers",
icon: ,
- rolesPerProvider: Permissions.FiskerSupplierAdmin,
+ roles: [Roles.APPROVESUPPLIERS],
},
{
label: "Tools",
to: "/tools/certificates/add",
icon: ,
- rolesPerProvider: Permissions.FiskerTools,
+ roles: [Roles.CERTIFICATES, Roles.APPROVESUPPLIERS],
submenus: [
{
label: "Certificate",
to: "/tools/certificates/add",
- rolesPerProvider: Permissions.FiskerCertificate,
+ roles: [Roles.CERTIFICATES],
},
{
label: "SMS",
to: "/tools/sms/send",
- rolesPerProvider: Permissions.FiskerCreate,
- },
+ roles: [Roles.CREATE],
+ }
],
},
];
-const SideMenu = () => {
- const { groups, providers } = useUserContext();
- const [menu, setMenu] = useState(menuData);
- useEffect(() => {
- filterAccessible(groups, providers, setMenu);
- }, [groups, providers]);
+const SideMenu = () => {
+ const { groups } = useUserContext();
+
+ const menu = menuData.reduce((result, item) => {
+ if (hasRole(item.roles, groups)) {
+ result.push(item);
+ }
+
+ return result;
+ }, []);
+
return (
@@ -91,14 +96,4 @@ const SideMenu = () => {
);
};
-const filterAccessible = (groups, providers, setMenu) => {
- const filteredMenu = menuData.reduce((result, item) => {
- if (hasRole(groups, item.rolesPerProvider, providers)) {
- result.push(item);
- }
- return result;
- }, []);
- setMenu(filteredMenu);
-};
-
-export default SideMenu;
+export default SideMenu;
\ No newline at end of file
diff --git a/src/components/Layouts/SideMenu.test.jsx b/src/components/Layouts/SideMenu.test.jsx
index c481462..476a22a 100644
--- a/src/components/Layouts/SideMenu.test.jsx
+++ b/src/components/Layouts/SideMenu.test.jsx
@@ -1,12 +1,12 @@
jest.mock("../Contexts/UserContext");
-jest.mock("../../services/superset");
+jest.mock("../../services/superset")
-import { render, screen, waitFor } from "@testing-library/react";
+import { render, waitFor, screen } from "@testing-library/react";
import { BrowserRouter } from "react-router-dom";
-import addSnapshotSerializer from "../../utils/snapshot";
-import { TEST_AUTH_OBJECT_FISKER } from "../../utils/testing";
-import { setToken, UserProvider } from "../Contexts/UserContext";
+import { UserProvider, setToken } from "../Contexts/UserContext";
+import { TEST_AUTH_OBJECT } from "../../utils/testing";
import SideMenu from "./SideMenu";
+import addSnapshotSerializer from "../../utils/snapshot";
const renderMenu = async () => {
const { container } = render(
@@ -23,20 +23,15 @@ const renderMenu = async () => {
describe("SideMenu", () => {
beforeAll(() => {
addSnapshotSerializer(expect);
- });
- it("Unauthenticated", async () => {
- setToken({ idToken: { jwtToken: null } });
- const container = await renderMenu();
- expect(container).toMatchSnapshot();
});
it("Authenticated", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderMenu();
await waitFor(() => {
- expect(screen.getByText("Datascope")).toBeInTheDocument();
- });
+ expect(screen.getByText('Datascope')).toBeInTheDocument()
+ })
expect(container).toMatchSnapshot();
});
});
diff --git a/src/components/Layouts/__snapshots__/SideMenu.test.jsx.snap b/src/components/Layouts/__snapshots__/SideMenu.test.jsx.snap
index 12a0106..c804955 100644
--- a/src/components/Layouts/__snapshots__/SideMenu.test.jsx.snap
+++ b/src/components/Layouts/__snapshots__/SideMenu.test.jsx.snap
@@ -213,42 +213,6 @@ exports[`SideMenu Authenticated 1`] = `
-
-
-
-
-
- Suppliers
-
-
-
-
-
`;
-
-exports[`SideMenu Unauthenticated 1`] = `
-
-`;
diff --git a/src/components/Manifest/Details/index.test.jsx b/src/components/Manifest/Details/index.test.jsx
index e0e2be2..0c0ecdd 100644
--- a/src/components/Manifest/Details/index.test.jsx
+++ b/src/components/Manifest/Details/index.test.jsx
@@ -9,7 +9,7 @@ import { ManifestsProvider } from "../../Contexts/ManifestsContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import ManifestDetails from ".";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import addSnapshotSerializer from "../../../utils/snapshot";
const TestComponent = (opened) => (
@@ -26,7 +26,7 @@ const TestComponent = (opened) => (
describe("Manifest Details Component", () => {
beforeAll(() => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
addSnapshotSerializer(expect);
});
diff --git a/src/components/Manifest/List/index.jsx b/src/components/Manifest/List/index.jsx
index c81819d..742ddc1 100644
--- a/src/components/Manifest/List/index.jsx
+++ b/src/components/Manifest/List/index.jsx
@@ -1,3 +1,5 @@
+import React, { useEffect, useState } from "react";
+import { Link } from "react-router-dom";
import {
Grid,
Table,
@@ -8,30 +10,28 @@ import {
TableRow,
Tooltip,
} from "@material-ui/core";
-import DeleteIcon from "@material-ui/icons/Delete";
import SendIcon from "@material-ui/icons/Send";
import VisibilityIcon from "@material-ui/icons/Visibility";
+import DeleteIcon from "@material-ui/icons/Delete";
import clsx from "clsx";
-import React, { useEffect, useState } from "react";
-import { Link } from "react-router-dom";
-import EditIcon from "@material-ui/icons/Edit";
-import { logger } from "../../../services/monitoring";
-import { LocalDateTimeString } from "../../../utils/dates";
-import { TYPE_MANIFEST_SOFTWARE } from "../../../utils/manifest_types";
-import { hasRole, Permissions } from "../../../utils/roles";
import {
- ManifestsProvider,
useManifestsContext,
+ ManifestsProvider,
} from "../../Contexts/ManifestsContext";
-import { useStatusContext } from "../../Contexts/StatusContext";
import { useUserContext } from "../../Contexts/UserContext";
-import ECUList from "../../Controls/ECUList";
-import SearchField from "../../Controls/SearchField";
-import DeleteConfirmation from "../../DeleteConfirmation";
-import TableHeaderSortable from "../../Table/HeaderSortable";
-import { useLocalStorage } from "../../useLocalStorage";
+import { useStatusContext } from "../../Contexts/StatusContext";
import useStyles from "../../useStyles";
+import { LocalDateTimeString } from "../../../utils/dates";
+import TableHeaderSortable from "../../Table/HeaderSortable";
+import SearchField from "../../Controls/SearchField";
+import { logger } from "../../../services/monitoring";
+import ECUList from "../../Controls/ECUList";
+import { Roles, hasRole } from "../../../utils/roles";
+import { useLocalStorage } from "../../useLocalStorage";
+import { TYPE_MANIFEST_SOFTWARE } from "../../../utils/manifest_types";
+import DeleteConfirmation from "../../DeleteConfirmation";
+import EditIcon from "@material-ui/icons/Edit";
const tableColumns = [
{
@@ -71,7 +71,7 @@ const formatManifestType = (type) => {
default:
return "Standard";
}
-};
+}
const PAGE_SIZE = "MANIFEST_LIST_PAGE_SIZE";
@@ -95,7 +95,6 @@ const MainForm = () => {
idToken: { jwtToken: token },
},
groups,
- providers,
} = useUserContext();
const sortHandler = (event, property) => {
@@ -156,7 +155,7 @@ const MainForm = () => {
setDeleteId(id);
setDeleteRowName(`${row.name} ${row.version}`);
setShowDeleteModal(true);
- };
+ }
const onDelete = async (manifest_id) => {
try {
@@ -169,30 +168,29 @@ const MainForm = () => {
const Actions = (row) => {
let actions = [];
- if (hasRole(groups, Permissions.FiskerMagnaRead, providers)) {
+ if (hasRole([Roles.CREATE, Roles.READ], groups)) {
actions.push({
tip: `Status "${row.name} ${row.version}"`,
link: `/package-status/${row.id}`,
icon: (
),
- });
- }
- if (hasRole(groups, Permissions.FiskerRead, providers)) {
- actions.push({
+ }, {
tip: `Update "${row.name} ${row.version}"`,
link: `/package-update/${row.id}`,
- icon: ,
+ icon: (
+
+ ),
});
}
- if (hasRole(groups, Permissions.FiskerMagnaCreate, providers)) {
+ if (hasRole([Roles.CREATE], groups)) {
actions.push({
tip: `Deploy "${row.name} ${row.version}"`,
link: `/package-deploy/${row.id}`,
icon: ,
});
}
- if (hasRole(groups, Permissions.FiskerDelete, providers)) {
+ if (hasRole([Roles.DELETE], groups)) {
actions.push({
tip: `Delete "${row.name} ${row.version}"`,
id: row.id,
@@ -259,9 +257,7 @@ const MainForm = () => {
)}
{row.version}
-
- {formatManifestType(row.type)}
-
+ {formatManifestType(row.type)}
{LocalDateTimeString(row.created)}
@@ -294,8 +290,7 @@ const MainForm = () => {
message={deleteRowName}
open={showDeleteModal}
close={() => setShowDeleteModal(false)}
- deleteFunction={() => onDelete(deleteId)}
- />
+ deleteFunction={() => onDelete(deleteId)} />
);
};
diff --git a/src/components/Manifest/Status/index.jsx b/src/components/Manifest/Status/index.jsx
index 28eb6de..b57686f 100644
--- a/src/components/Manifest/Status/index.jsx
+++ b/src/components/Manifest/Status/index.jsx
@@ -1,3 +1,6 @@
+import React, { useEffect, useState } from "react";
+import { useParams } from "react-router";
+import { Link } from "react-router-dom";
import {
LinearProgress,
Table,
@@ -11,27 +14,22 @@ import {
} from "@material-ui/core";
import CancelIcon from "@material-ui/icons/Cancel";
import clsx from "clsx";
-import React, { useEffect, useState } from "react";
-import { useParams } from "react-router";
-import { Link } from "react-router-dom";
-import { logger } from "../../../services/monitoring";
-import { LocalDateTimeString } from "../../../utils/dates";
-import { Permissions } from "../../../utils/roles";
-import {
- CarUpdatesProvider,
- useCarUpdatesContext,
-} from "../../Contexts/CarUpdatesContext";
import {
ManifestsProvider,
useManifestsContext,
} from "../../Contexts/ManifestsContext";
-import { useStatusContext } from "../../Contexts/StatusContext";
+import {
+ CarUpdatesProvider,
+ useCarUpdatesContext,
+} from "../../Contexts/CarUpdatesContext";
import { useUserContext } from "../../Contexts/UserContext";
-import { RoleWrap } from "../../Controls/RoleWrap";
-import { useLocalStorage } from "../../useLocalStorage";
+import { useStatusContext } from "../../Contexts/StatusContext";
import useStyles from "../../useStyles";
+import { LocalDateTimeString } from "../../../utils/dates";
+import { logger } from "../../../services/monitoring";
import ManifestDetails from "../Details";
+import { useLocalStorage } from "../../useLocalStorage";
const PAGE_SIZE = "MANIFEST_STATUS_PAGE_SIZE";
@@ -54,8 +52,6 @@ const MainForm = () => {
token: {
idToken: { jwtToken: token },
},
- groups,
- providers,
} = useUserContext();
useEffect(() => {
@@ -176,18 +172,11 @@ const MainForm = () => {
{LocalDateTimeString(row.updated)}
- No action>}
- >
-
- sendCancel(row)}>
-
-
-
-
+
+ sendCancel(row)}>
+
+
+
))}
diff --git a/src/components/Manifest/Update/index.jsx b/src/components/Manifest/Update/index.jsx
index ae25364..e4897f5 100644
--- a/src/components/Manifest/Update/index.jsx
+++ b/src/components/Manifest/Update/index.jsx
@@ -49,7 +49,9 @@ const MainForm = () => {
const onSubmit = async (e) => {
e.preventDefault();
try {
- const result = await updateManifest(manifest_id, {name, type}, token);
+ const data = {name, type};
+ console.log(data);
+ const result = await updateManifest(manifest_id, data, token);
if (!result || result.error) return;
setMessage(`Updated manifest ${manifest_id}`);
diff --git a/src/components/Manifest/Update/index.test.jsx b/src/components/Manifest/Update/index.test.jsx
index ff49e93..d851193 100644
--- a/src/components/Manifest/Update/index.test.jsx
+++ b/src/components/Manifest/Update/index.test.jsx
@@ -9,7 +9,7 @@ import { ManifestsProvider } from "../../Contexts/ManifestsContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import ManifestUpdate from ".";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import addSnapshotSerializer from "../../../utils/snapshot";
const renderManifestUpdate = async () => {
@@ -33,12 +33,12 @@ const renderManifestUpdate = async () => {
describe("Manifest Details Component", () => {
beforeAll(() => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
addSnapshotSerializer(expect);
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const view = await renderManifestUpdate();
expect(view).toMatchSnapshot();
});
diff --git a/src/components/Routes/AuthRoute.jsx b/src/components/Routes/AuthRoute.jsx
index 0fe8110..f3e02d3 100644
--- a/src/components/Routes/AuthRoute.jsx
+++ b/src/components/Routes/AuthRoute.jsx
@@ -8,7 +8,7 @@ export const TYPES = {
PROTECTED: 2,
};
-export const AuthRoute = ({ token, type, groups, rolesPerGroup, providers, ...others }) => {
+export const AuthRoute = ({ token, type, roles, groups, ...others }) => {
if (type === TYPES.PROTECTED && !token) {
return ;
} else if (type === TYPES.GUEST && token) {
@@ -16,9 +16,8 @@ export const AuthRoute = ({ token, type, groups, rolesPerGroup, providers, ...ot
} else if (
type === TYPES.PROTECTED &&
token &&
- rolesPerGroup &&
- providers &&
- !hasRole(groups, rolesPerGroup, providers)
+ roles &&
+ !hasRole(roles, groups)
) {
return ;
}
diff --git a/src/components/Routes/SiteRoutes.jsx b/src/components/Routes/SiteRoutes.jsx
index 0347670..1bb32fb 100644
--- a/src/components/Routes/SiteRoutes.jsx
+++ b/src/components/Routes/SiteRoutes.jsx
@@ -1,10 +1,10 @@
import React, { Suspense } from "react";
import { Switch } from "react-router-dom";
-import { Permissions } from "../../utils/roles";
-import { useUserContext } from "../Contexts/UserContext";
-import { MessageBar } from "../MessageBar";
import { AuthRoute, TYPES } from "../Routes/AuthRoute";
+import { MessageBar } from "../MessageBar";
+import { useUserContext } from "../Contexts/UserContext";
+import { Roles } from "../../utils/roles";
const CANFilterCreate = React.lazy(() => import("../CANFilter/Add"));
const CANFilterUpdate = React.lazy(() => import("../CANFilter/Update"));
@@ -39,7 +39,7 @@ const SuppliersList = React.lazy(() => import("../Suppliers/List"));
const SupplierDetails = React.lazy(() => import("../Suppliers/Details"));
const Datascope = React.lazy(() => import("../Dashboard"));
const SiteRoutes = () => {
- const { token, groups, providers } = useUserContext();
+ const { token, groups } = useUserContext();
return (
@@ -57,8 +57,7 @@ const SiteRoutes = () => {
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerCreate}
- providers={providers}
+ roles={[Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerCreate}
- providers={providers}
+ roles={[Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerRead}
- providers={providers}
+ roles={[Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerCreate}
- providers={providers}
+ roles={[Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerMagnaRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerMagnaRead}
- providers={providers}
+ roles={[Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerMagnaRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerMagnaRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerCreate}
- providers={providers}
+ roles={[Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerMagnaRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerMagnaRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerCreate}
- providers={providers}
+ roles={[Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerCertificate}
- providers={providers}
+ roles={[Roles.CERTIFICATES]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerCreate}
- providers={providers}
+ roles={[Roles.CREATE]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerSupplierAdmin}
- providers={providers}
+ roles={[Roles.APPROVESUPPLIERS]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerSupplierAdmin}
- providers={providers}
+ roles={[Roles.APPROVESUPPLIERS]}
/>
{
type={TYPES.PROTECTED}
token={token}
groups={groups}
- rolesPerGroup={Permissions.FiskerRead}
- providers={providers}
+ roles={[Roles.READ, Roles.CREATE]}
/>
diff --git a/src/components/Suppliers/Details/index.test.js b/src/components/Suppliers/Details/index.test.js
index 760c81c..d093d7b 100644
--- a/src/components/Suppliers/Details/index.test.js
+++ b/src/components/Suppliers/Details/index.test.js
@@ -15,7 +15,7 @@ import { BrowserRouter } from "react-router-dom";
import { SupplierProvider } from "../../Contexts/SupplierContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -43,7 +43,7 @@ describe("Supplier page", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderSupplierDetailsPage();
expect(container).toMatchSnapshot();
});
diff --git a/src/components/Suppliers/List/index.test.jsx b/src/components/Suppliers/List/index.test.jsx
index 8f395b6..520e896 100644
--- a/src/components/Suppliers/List/index.test.jsx
+++ b/src/components/Suppliers/List/index.test.jsx
@@ -10,7 +10,7 @@ import { BrowserRouter } from "react-router-dom";
import { SupplierProvider } from "../../Contexts/SupplierContext";
import { StatusProvider } from "../../Contexts/StatusContext";
import { UserProvider, setToken } from "../../Contexts/UserContext";
-import { TEST_AUTH_OBJECT_FISKER } from "../../../utils/testing";
+import { TEST_AUTH_OBJECT } from "../../../utils/testing";
import MainForm from "./index";
import addSnapshotSerializer from "../../../utils/snapshot";
@@ -38,7 +38,7 @@ describe("Suppliers page", () => {
});
it("Render", async () => {
- setToken(TEST_AUTH_OBJECT_FISKER);
+ setToken(TEST_AUTH_OBJECT);
const container = await renderSuppliersPage();
expect(container).toMatchSnapshot();
});
diff --git a/src/utils/roles.js b/src/utils/roles.js
index 484297f..78546bf 100644
--- a/src/utils/roles.js
+++ b/src/utils/roles.js
@@ -6,12 +6,16 @@ export const Roles = {
DELETE: "8f78dce7-f5f9-4033-a10c-c9c7408bfcfe",
CERTIFICATES: "746f34b0-9ba0-4b5d-8d84-0256a9c8e390",
APPROVESUPPLIERS: "a6c9805e-80b2-42b2-bfbb-9df52e5504d8",
- MAGNAGROUP: process.env.REACT_APP_MAGNA_GROUP_ID,
};
-export const Providers = {
- FISKER: "Fisker",
- MAGNA: process.env.REACT_APP_MAGNA_PROVIDER,
+export const hasRoleToken = (roles, token) => {
+ if (!roles || roles.length === 0) return true;
+
+ const groups = getGroups(token);
+
+ if (!groups) return false;
+
+ return hasRole(roles, groups);
};
export const getGroups = (token) => {
@@ -22,54 +26,13 @@ export const getGroups = (token) => {
return payload["custom:groups"];
};
-export const getProviders = (token) => {
- const payload = parsePayload(token);
+export const hasRole = (roles, groups) => {
+ if (!roles || roles.length === 0) return true;
+ if (!groups) return false;
- if (!payload || !payload["identities"] || payload["identities"].length === 0)
- return null;
-
- return payload["identities"].map((identity) => identity["providerName"]);
-};
-
-export const hasRole = (userGroups, rolesPerProvider, userProviders) => {
- if (!rolesPerProvider || rolesPerProvider.length === 0) return true;
-
- if (!userGroups || userGroups.length === 0) return false;
-
- if (rolesPerProvider && userProviders) {
- for (const provider of userProviders) {
- if (rolesPerProvider[provider]) {
- const rolesForProvider = rolesPerProvider[provider];
- if (!rolesForProvider || rolesForProvider.length === 0) return true;
- if (
- rolesForProvider.filter((role) => userGroups.includes(role)).length >
- 0
- ) {
- return true;
- }
- }
- }
+ for (let role of roles) {
+ if (groups.indexOf(role) > -1) return true;
}
return false;
};
-
-export const Permissions = {
- FiskerRead: { [Providers.FISKER]: [Roles.CREATE, Roles.READ] },
- FiskerCreate: { [Providers.FISKER]: [Roles.CREATE] },
- FiskerDelete: { [Providers.FISKER]: [Roles.DELETE] },
- FiskerSupplierAdmin: { [Providers.FISKER]: [Roles.APPROVESUPPLIERS] },
- FiskerCertificate: { [Providers.FISKER]: [Roles.CERTIFICATES] },
- FiskerTools: {
- [Providers.FISKER]: [Roles.APPROVESUPPLIERS, Roles.CERTIFICATES],
- },
- Magna: { [Providers.MAGNA]: [Roles.MAGNAGROUP] },
- FiskerMagnaRead: {
- [Providers.FISKER]: [Roles.CREATE, Roles.READ],
- [Providers.MAGNA]: [Roles.MAGNAGROUP],
- },
- FiskerMagnaCreate: {
- [Providers.FISKER]: [Roles.CREATE],
- [Providers.MAGNA]: [Roles.MAGNAGROUP],
- },
-};
diff --git a/src/utils/roles.test.js b/src/utils/roles.test.js
index 06294b8..8d73178 100644
--- a/src/utils/roles.test.js
+++ b/src/utils/roles.test.js
@@ -1,28 +1,10 @@
-import {
- getGroups,
- getProviders,
- hasRole,
- Permissions,
- Providers,
- Roles,
-} from "./roles";
-import { TEST_EXPECTED_GROUPS, TEST_TOKEN } from "./testing";
+
+import { hasRoleToken, Roles } from "./roles";
+import { TEST_TOKEN } from "./testing";
describe("Roles Helper", () => {
it("Check roles", () => {
- expect(
- hasRole([Roles.CREATE], Permissions.FiskerCreate, [Providers.FISKER])
- ).toEqual(true);
- expect(
- hasRole([Roles.READ], Permissions.FiskerCreate, [Providers.FISKER])
- ).toEqual(false);
- });
-
- it("Get groups", () => {
- expect(getGroups(TEST_TOKEN)).toEqual(TEST_EXPECTED_GROUPS);
- });
-
- it("Get providers", () => {
- expect(getProviders(TEST_TOKEN)).toEqual(["AzureAD"]);
- });
+ expect(hasRoleToken([Roles.CREATE], TEST_TOKEN)).toEqual(true);
+ expect(hasRoleToken([Roles.READ], TEST_TOKEN)).toEqual(false);
+ })
});
diff --git a/src/utils/testing.js b/src/utils/testing.js
index 1ccb278..6bdc7d2 100644
--- a/src/utils/testing.js
+++ b/src/utils/testing.js
@@ -5,13 +5,5 @@ export const TEST_AUTH_OBJECT = {
jwtToken: TEST_TOKEN,
},
};
-
-export const TEST_TOKEN_FISKER =
- "eyJraWQiOiJlUTNuZFJLaUVcL084VUZ5RHFsYjN0S1RzWG00SzVPMlc4NXd3VWkzT2tNZz0iLCJhbGciOiJSUzI1NiJ9.eyJhdF9oYXNoIjoiODIwNTViMm9CUl9HQURiMXVyU3V3dyIsInN1YiI6ImEwZDAzMzA5LWQxYzMtNGNhZi05Zjc3LWJlMDE5N2ZlOGE1OSIsImNvZ25pdG86Z3JvdXBzIjpbInVzLXdlc3QtMl9BV3dqTFh5bTJfRmlza2VyIl0sImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tXC91cy13ZXN0LTJfQVd3akxYeW0yIiwiY29nbml0bzp1c2VybmFtZSI6ImZpc2tlcl9hdW1hcm92QGZpc2tlcmluYy5jb20iLCJnaXZlbl9uYW1lIjoiQW52YXIiLCJjdXN0b206Z3JvdXBzIjoiWzhkODI3OGE1LTljMGUtNGM3Zi05MThhLTgxMWZkMWQyMzZlNCwgNzQ2ZjM0YjAtOWJhMC00YjVkLThkODQtMDI1NmE5YzhlMzkwLCA2MDcxZWFiYS1kNjY2LTRjMDMtODE3Yi1jMjgyYTk1MWI5NjYsIGFjYmQ3MmM5LTlmZjMtNDZhOC04M2JhLWM2ZmE1ZGYzZjI2NCwgNzM3ZTQ0OWMtMjMwOS00NjllLWFhNDgtNDZlNjg5MTk4M2MwLCBmNjNiNjQzMC0xMjg4LTQwYTgtYWE0OS04NDM4NTE1MGQ2YTgsIDg3NzcwYWVhLTkxNjItNDA5ZS1hYTcwLTEwZDBkMWRlNTkwMiwgYTZjOTgwNWUtODBiMi00MmIyLWJmYmItOWRmNTJlNTUwNGQ4LCBiYWZjMTdhNy1lYzY0LTQ5ZDktYTJhNy1kYWZjMjhkY2IwMzcsIDI0NDljMDY2LTkxNDYtNDRhNy1iNGU2LTQ4MjgwMzFkOTU4ZCwgZWZjYzMwMjUtZTJkOC00MjEyLTgyMjctODA1YzdiZTM5ZDJjLCAyNzNjN2MwZC01MWQzLTRhMzEtOTQ0My1jNDM2NzU3MmVlNGYsIDcwZmU1OWM2LTFkNjktNGRmZS05N2I5LWZhZTQzMjE1MTAxOSwgODY5NTZhMmYtOGQ0Ni00N2ZmLTliMjktZjk5MDc5YWUzYzFkLCBiMGU4MmU4My0yYzk0LTRiMjQtYjljNy1lNzc4MTZmMjU5N2RdIiwiYXVkIjoiN2NrMnRmb3FhdmM3MmM0NWhoN3RnZTQya2QiLCJjdXN0b206c2Vzc2lvbi1kdXJhdGlvbiI6IjkwMCIsImlkZW50aXRpZXMiOlt7InVzZXJJZCI6ImF1bWFyb3ZAZmlza2VyaW5jLmNvbSIsInByb3ZpZGVyTmFtZSI6IkZpc2tlciIsInByb3ZpZGVyVHlwZSI6IlNBTUwiLCJpc3N1ZXIiOiJodHRwczpcL1wvc3RzLndpbmRvd3MubmV0XC81YWE0YjY0MC1jOWZjLTRhOWItYjNhMy1kNGE3ZDAwOGZiNWVcLyIsInByaW1hcnkiOiJ0cnVlIiwiZGF0ZUNyZWF0ZWQiOiIxNjY0ODA3MDE1NzQ3In1dLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY2Nzc1NjIzOCwiZXhwIjoxNjY3NzU5ODM4LCJpYXQiOjE2Njc3NTYyMzgsImZhbWlseV9uYW1lIjoiVW1hcm92IiwiZW1haWwiOiJhdW1hcm92QGZpc2tlcmluYy5jb20ifQ.ZZC7tgMMjRpRNJcGdp7ftXJQJ6pjzP45SJAcfJRZC4oUHG-h5BI1bGKEKmslWdK09GEH1cN7YDGQg8ufkKOyncm-J5DRNvj27fN--Lapkg1Q0bHT8pwMDXRjPUbazLEwEvfo1yGyLBOBopxdisQvv9km8-UH3Xy7a7IsCOWx51xKsgMWho4w4BK1PQUBpUrG0h-tno7-7nHO4gwr4urCtDPIoMjsq_lF77LDvM3SBdCH28ogaoDE3ogd1tbBpwHXtOhnp-FMp85I2Vk-pI_KsiW3RXr50OdeAVEfFLFKhjCCoB5RR6pKxWJXs-7BN91Tnn7SYgfAWt5Wa2cxBxMUDg"
-export const TEST_AUTH_OBJECT_FISKER = {
- idToken: {
- jwtToken: TEST_TOKEN_FISKER
- },
-}
export const TEST_EXPECTED_GROUPS =
"[2914e67f-fb85-4b78-b79d-656f4f37faa1, 8d8278a5-9c0e-4c7f-918a-811fd1d236e4, 746f34b0-9ba0-4b5d-8d84-0256a9c8e390, 6c3cf98d-0ada-48c6-ae94-b171cfa275fc, acbd72c9-9ff3-46a8-83ba-c6fa5df3f264, 5e59a619-c890-4472-91c2-d5eae5d8fa18, 56ef4bec-d739-4ddf-a003-ecc813085b8d, 929b0470-f7eb-4e18-9f97-22ac2c591a10, 131e6257-fdb7-426a-9825-1cd918802fba, 1ac794cc-76ac-47f6-bee6-d6666998f0fd, 87770aea-9162-409e-aa70-10d0d1de5902, 5dea6c32-6575-4527-9254-e50d27ae5e92, bafc17a7-ec64-49d9-a2a7-dafc28dcb037, 2449c066-9146-44a7-b4e6-4828031d958d, efcc3025-e2d8-4212-8227-805c7be39d2c, 8f78dce7-f5f9-4033-a10c-c9c7408bfcfe, cf653183-c829-4eed-a6ce-453fa1017cd9, 783c5979-f5e7-4cb6-b14e-c3553dde956a, 5515a98f-4668-4121-8e8d-fee2825699cf, 86956a2f-8d46-47ff-9b29-f99079ae3c1d, c4d4361c-8882-47b4-8641-fd3ab68ae722, 972ad095-16b7-40ad-a464-f5dbf417a8cd, 7bcdcdb2-3279-44bf-a998-771bab4b33e1]";