diff --git a/.env.cec-prd b/.env.cec-prd index b290f2f..956480c 100644 --- a/.env.cec-prd +++ b/.env.cec-prd @@ -1,7 +1,9 @@ +REACT_APP_AUTH_CALLBACK_URL=https://ota-admin.cec-prd.fiskerinc.com REACT_APP_AUTH_SERVICE_URL=https://gw.cec-prd.fiskerinc.com/compute_auth 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_MAGNA_PROVIDER=Magna REACT_APP_MAGNA_GROUP_ID=68273225-9da4-4fa7-aea5-38e16ec471fe +REACT_APP_OTA_SERVICE_URL=https://gw.cec-prd.fiskerinc.com/ota_update +REACT_APP_SECURITY_DLL_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_32.dll +REACT_APP_SECURITY_DLL_64_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_64.dll +REACT_APP_SUPERSET_URL=https://superset.cec-prd.fiskerinc.com diff --git a/.env.dev b/.env.dev index f3731e4..84cee69 100644 --- a/.env.dev +++ b/.env.dev @@ -1,7 +1,9 @@ -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_AUTH_SERVICE_URL=https://dev-gw.cloud.fiskerinc.com/compute_auth +REACT_APP_CERT_SERVICE_URL=https://dev-gw.cloud.fiskerinc.com/certificate REACT_APP_MAGNA_PROVIDER=Fisker-QA REACT_APP_MAGNA_GROUP_ID=efcc3025-e2d8-4212-8227-805c7be39d2c +REACT_APP_OTA_SERVICE_URL=https://dev-gw.cloud.fiskerinc.com/ota_update +REACT_APP_SECURITY_DLL_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_32.dll +REACT_APP_SECURITY_DLL_64_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_64.dll +REACT_APP_SUPERSET_URL=https://dev-superset-new.cloud.fiskerinc.com diff --git a/.env.local b/.env.local index 3a54e33..b51db82 100644 --- a/.env.local +++ b/.env.local @@ -1,7 +1,9 @@ +REACT_APP_AUTH_CALLBACK_URL=http://localhost:3000 REACT_APP_AUTH_SERVICE_URL=http://localhost/compute_auth REACT_APP_CERT_SERVICE_URL=http://localhost/certificate -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_MAGNA_PROVIDER=Fisker-QA -REACT_APP_MAGNA_GROUP_ID=efcc3025-e2d8-4212-8227-805c7be39d2c \ No newline at end of file +REACT_APP_MAGNA_GROUP_ID=efcc3025-e2d8-4212-8227-805c7be39d2c +REACT_APP_OTA_SERVICE_URL=http://localhost/ota_update +REACT_APP_SECURITY_DLL_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_32.dll +REACT_APP_SECURITY_DLL_64_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_64.dll +REACT_APP_SUPERSET_URL=https://dev-superset-new.cloud.fiskerinc.com diff --git a/.env.prd b/.env.prd index a818e1d..793c11b 100644 --- a/.env.prd +++ b/.env.prd @@ -1,7 +1,9 @@ +REACT_APP_AUTH_CALLBACK_URL=https://ota-admin.cloud.fiskerinc.com REACT_APP_AUTH_SERVICE_URL=https://gw.cloud.fiskerinc.com/compute_auth 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_MAGNA_PROVIDER=Magna REACT_APP_MAGNA_GROUP_ID=68273225-9da4-4fa7-aea5-38e16ec471fe +REACT_APP_OTA_SERVICE_URL=https://gw.cloud.fiskerinc.com/ota_update +REACT_APP_SECURITY_DLL_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_32.dll +REACT_APP_SECURITY_DLL_64_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_64.dll +REACT_APP_SUPERSET_URL=https://superset.cloud.fiskerinc.com diff --git a/.env.stg b/.env.stg index 97ac1a5..ba137f8 100644 --- a/.env.stg +++ b/.env.stg @@ -1,7 +1,9 @@ +REACT_APP_AUTH_CALLBACK_URL=https://stg-ota-admin.cloud.fiskerinc.com 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_MAGNA_PROVIDER=Magna REACT_APP_MAGNA_GROUP_ID=68273225-9da4-4fa7-aea5-38e16ec471fe +REACT_APP_OTA_SERVICE_URL=https://stg-gw.cloud.fiskerinc.com/ota_update +REACT_APP_SECURITY_DLL_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_32.dll +REACT_APP_SECURITY_DLL_64_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_64.dll +REACT_APP_SUPERSET_URL=https://stg-superset.cloud.fiskerinc.com diff --git a/.env.template b/.env.template index 362d6d9..d20768a 100644 --- a/.env.template +++ b/.env.template @@ -1,7 +1,9 @@ -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_AUTH_SERVICE_URL=http://localhost/compute_auth REACT_APP_CERT_SERVICE_URL=http://localhost/certificate REACT_APP_MAGNA_PROVIDER=Magna REACT_APP_MAGNA_GROUP_ID=68273225-9da4-4fa7-aea5-38e16ec471fe +REACT_APP_OTA_SERVICE_URL=http://localhost/ota_update +REACT_APP_SECURITY_DLL_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_32.dll +REACT_APP_SECURITY_DLL_64_URL=https://assets.fiskerdps.com/cloud-supplier/fisker_security_64.dll +REACT_APP_SUPERSET_URL=https://dev-superset.cloud.fiskerinc.com diff --git a/src/components/App/App.test.js b/src/components/App/App.test.js index 3346d96..0eab94a 100644 --- a/src/components/App/App.test.js +++ b/src/components/App/App.test.js @@ -8,17 +8,14 @@ jest.mock("../../services/vehiclesAPI"); jest.mock("../../services/superset") import { - act, - render, - screen, - cleanup, - waitFor, - waitForElementToBeRemoved, + act, cleanup, render, + screen, waitFor, + waitForElementToBeRemoved } from "@testing-library/react"; -import { setToken } from "../Contexts/UserContext"; -import {TEST_AUTH_OBJECT, TEST_AUTH_OBJECT_FISKER} from "../../utils/testing"; import App from "."; import addSnapshotSerializer from "../../utils/snapshot"; +import { TEST_AUTH_OBJECT_FISKER, TEST_AUTH_OBJECT_MAGNA } from "../../utils/testing"; +import { setToken } from "../Contexts/UserContext"; const LOADING_STATUS = "Loading..."; @@ -113,9 +110,14 @@ describe("App", () => { await check("/tools/sms/send", "span.MuiButton-label", "Sign In"); }); + it("Route /tools/security-dll unauthenticated", async () => { + await check("/tools/security-dll", "span.MuiButton-label", "Sign In"); + }); + it("Route /page-not-found unauthenticated", async () => { await check("/page-not-found", "h1", "Page Not Found"); }); + it("Route / authenticated", async () => { setToken(TEST_AUTH_OBJECT_FISKER); await sleepAndCheck("/", "h6", "Home"); @@ -170,4 +172,9 @@ describe("App", () => { setToken(TEST_AUTH_OBJECT_FISKER); await sleepAndCheck("/tools/sms/send", "h6", "Send SMS"); }); + + it("Route /tools/security-dll authenticated", async () => { + setToken(TEST_AUTH_OBJECT_MAGNA); + await sleepAndCheck("/tools/security-dll", "h6", "Security.dll Download"); + }); }); diff --git a/src/components/App/__snapshots__/App.test.js.snap b/src/components/App/__snapshots__/App.test.js.snap index 4788d68..813de41 100644 --- a/src/components/App/__snapshots__/App.test.js.snap +++ b/src/components/App/__snapshots__/App.test.js.snap @@ -5233,6 +5233,362 @@ exports[`App Route /tools/certificates/add unauthenticated 1`] = ` `; +exports[`App Route /tools/security-dll authenticated 1`] = ` +
+
+
+
+
+
+
+ Security.dll Download +
+ +
+
+ +
+
+
+ +
+
+
+

+ Generating certificates... +

+
+
+
+
+
+`; + +exports[`App Route /tools/security-dll unauthenticated 1`] = ` +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + Sign In + + + +

+ + Note: Your email address will be used as the user id + +

+
+
+
+
+
+
+`; + exports[`App Route /tools/sms/send authenticated 1`] = `
{ + const [busy, setBusy] = useState(false); + const [securityCerts, setSecurityCerts] = useState(null); + + const generateSecurityCerts = async (token) => { + setBusy(true); + + try { + const data = await api.getManufactureCert(token); + + if (data.error) throw new Error(data.message); + + setSecurityCerts(data); + } finally { + setBusy(false); + } + }; + + return ( + + {children} + + ); +}; + +export const useKeygenContext = () => useContext(KeygenContext); diff --git a/src/components/Controls/DownloadFileLink/index.jsx b/src/components/Controls/DownloadFileLink/index.jsx index 1ebfd90..f9f9cad 100644 --- a/src/components/Controls/DownloadFileLink/index.jsx +++ b/src/components/Controls/DownloadFileLink/index.jsx @@ -2,7 +2,6 @@ import React, { useEffect, useState } from "react"; const DownloadFileLink = ({ data, filename, mimetype }) => { const [link, setLink] = useState(""); - const releaseLink = () => { if (link === "") return; URL.revokeObjectURL(link); diff --git a/src/components/Layouts/SideMenu.jsx b/src/components/Layouts/SideMenu.jsx index 21a5816..9ab327c 100644 --- a/src/components/Layouts/SideMenu.jsx +++ b/src/components/Layouts/SideMenu.jsx @@ -62,6 +62,11 @@ const menuData = [ to: "/tools/certificates/add", rolesPerProvider: Permissions.FiskerCertificate, }, + { + label: "Security.dll", + to: "/tools/security-dll", + rolesPerProvider: Permissions.Magna, + }, { label: "SMS", to: "/tools/sms/send", diff --git a/src/components/Magna/SecurityDLL/__snapshots__/index.test.jsx.snap b/src/components/Magna/SecurityDLL/__snapshots__/index.test.jsx.snap new file mode 100644 index 0000000..92bf6cf --- /dev/null +++ b/src/components/Magna/SecurityDLL/__snapshots__/index.test.jsx.snap @@ -0,0 +1,45 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Magna Security DLL page Security DLL Result page 1`] = ` +
+
+

+ Click to download your certificates and security.dll. +
+ + DLL will not work unless certificate.pem and key.pem are placed next to the DLL + +

+ +
+
+`; diff --git a/src/components/Magna/SecurityDLL/index.jsx b/src/components/Magna/SecurityDLL/index.jsx new file mode 100644 index 0000000..11e4d29 --- /dev/null +++ b/src/components/Magna/SecurityDLL/index.jsx @@ -0,0 +1,47 @@ +import React, { useEffect } from "react"; + +import { KeygenProvider, useKeygenContext } from "../../Contexts/KeygenContext"; +import { useStatusContext } from "../../Contexts/StatusContext"; +import { useUserContext } from "../../Contexts/UserContext"; +import Result from "./result"; + +const MainForm = () => { + const { token: { idToken: { jwtToken: token } } } = useUserContext(); + const { generateSecurityCerts, securityCerts } = useKeygenContext(); + const { setTitle, setSitePath, setMessage } = useStatusContext(); + const getCert = async () => { + try { + await generateSecurityCerts(token); + } catch (e) { + setMessage(e.message); + } + }; + + useEffect(() => { + setTitle("Security.dll Download"); + setSitePath([ + { + label: `Tools`, + }, + { + label: "Security.dll Download", + }, + ]) + getCert(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [token]); + + if (securityCerts) { + return + } + + return

Generating certificates...

+}; + +const SecurityDLL = () => ( + + + +); + +export default SecurityDLL; \ No newline at end of file diff --git a/src/components/Magna/SecurityDLL/index.test.jsx b/src/components/Magna/SecurityDLL/index.test.jsx new file mode 100644 index 0000000..f8207b0 --- /dev/null +++ b/src/components/Magna/SecurityDLL/index.test.jsx @@ -0,0 +1,21 @@ +import { render } from "@testing-library/react"; +import React from "react"; + +import addSnapshotSerializer from "../../../utils/snapshot"; +import Result from "./result"; + +describe("Magna Security DLL page", () => { + beforeAll(() => { + global.URL.createObjectURL = jest.fn(); + global.URL.revokeObjectURL = jest.fn(); + addSnapshotSerializer(expect); + }); + + it("Security DLL Result page", () => { + const result = {public_key:"-----BEGIN CERTIFICATE-----\nPUBLIC_KEY\n-----END CERTIFICATE-----",private_key:"-----BEGIN RSA PRIVATE KEY-----\nPRIVATE_KEY\n-----END RSA PRIVATE KEY-----",serial_number:"77:49:34:9d:be:f6:59:03:b4:1c:63:84:07:5b:2a:8a:21:0a:c5:9e",type:"rsa"} + const { container } = render(); + + expect(container).toMatchSnapshot(); + + }) +}) \ No newline at end of file diff --git a/src/components/Magna/SecurityDLL/result.jsx b/src/components/Magna/SecurityDLL/result.jsx new file mode 100644 index 0000000..c81b511 --- /dev/null +++ b/src/components/Magna/SecurityDLL/result.jsx @@ -0,0 +1,36 @@ +import React from "react"; + +import { SECURITY_DLL_64_URL, SECURITY_DLL_URL } from "../../../services/securityDLL"; +import DownloadFileLink from "../../Controls/DownloadFileLink"; + +const CertMimeType = "application/x-pem-file"; + +const Result = ({ public_key, private_key }) => ( + <> +
+

Click to download your certificates and security.dll.
DLL will not work unless certificate.pem and key.pem are placed next to the DLL

+ +
+ +); + +export default Result; diff --git a/src/components/Routes/SiteRoutes.jsx b/src/components/Routes/SiteRoutes.jsx index 288655f..768aa16 100644 --- a/src/components/Routes/SiteRoutes.jsx +++ b/src/components/Routes/SiteRoutes.jsx @@ -34,6 +34,7 @@ const SSOForm = React.lazy(() => import("../SSOForm")); const VehicleAddForm = React.lazy(() => import("../Cars/Add")); const VehicleUpdateForm = React.lazy(() => import("../Cars/Update")); const CertificateCreate = React.lazy(() => import("../Certificates/Add")); +const SecurityDLL = React.lazy(() => import("../Magna/SecurityDLL")); const SMSSend = React.lazy(() => import("../SMS/Send")); const SuppliersList = React.lazy(() => import("../Suppliers/List")); const SupplierDetails = React.lazy(() => import("../Suppliers/Details")); @@ -228,6 +229,15 @@ const SiteRoutes = () => { rolesPerGroup={Permissions.FiskerMagnaCertificate} providers={providers} /> + } + type={TYPES.PROTECTED} + token={token} + groups={groups} + rolesPerGroup={Permissions.Magna} + providers={providers} + /> } diff --git a/src/services/CANFiltersAPI.js b/src/services/CANFiltersAPI.js index a6a6b4d..ce977eb 100644 --- a/src/services/CANFiltersAPI.js +++ b/src/services/CANFiltersAPI.js @@ -1,11 +1,8 @@ import { - errorHandler, - getAuthHeaderOptions, - fetchRespHandler, - addQueryParams, + addQueryParams, errorHandler, fetchRespHandler, getAuthHeaderOptions } from "../utils/http"; -const API_ENDPOINT = process.env.REACT_APP_UPLOAD_SERVICE_URL; +const API_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const canFiltersAPI = { addFilter: async (vin, filter, token) => diff --git a/src/services/fleetsAPI.js b/src/services/fleetsAPI.js index 08e54ce..542cc5e 100644 --- a/src/services/fleetsAPI.js +++ b/src/services/fleetsAPI.js @@ -1,11 +1,8 @@ import { - errorHandler, - getAuthHeaderOptions, - fetchRespHandler, - addQueryParams, + addQueryParams, errorHandler, fetchRespHandler, getAuthHeaderOptions } from "../utils/http"; -const API_ENDPOINT = process.env.REACT_APP_UPLOAD_SERVICE_URL; +const API_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const fleetsAPI = { addFleet: async (fleet, token) => diff --git a/src/services/manifestsAPI.js b/src/services/manifestsAPI.js index 33a6436..9091d97 100644 --- a/src/services/manifestsAPI.js +++ b/src/services/manifestsAPI.js @@ -1,11 +1,8 @@ import { - errorHandler, - getAuthHeaderOptions, - fetchRespHandler, - addQueryParams, + addQueryParams, errorHandler, fetchRespHandler, getAuthHeaderOptions } from "../utils/http"; -const API_ENDPOINT = process.env.REACT_APP_UPLOAD_SERVICE_URL; +const API_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const manifestsAPI = { deleteManifest: async (manifest_id, token) => diff --git a/src/services/securityDLL.js b/src/services/securityDLL.js new file mode 100644 index 0000000..f68f9a7 --- /dev/null +++ b/src/services/securityDLL.js @@ -0,0 +1,2 @@ +export const SECURITY_DLL_URL = process.env.REACT_APP_SECURITY_DLL_URL; +export const SECURITY_DLL_64_URL = process.env.REACT_APP_SECURITY_DLL_64_URL; \ No newline at end of file diff --git a/src/services/smsAPI.js b/src/services/smsAPI.js index 396d50f..d82355d 100644 --- a/src/services/smsAPI.js +++ b/src/services/smsAPI.js @@ -1,17 +1,15 @@ import { - errorHandler, - getAuthHeaderOptions, - fetchRespHandler, + errorHandler, fetchRespHandler, getAuthHeaderOptions } from "../utils/http"; -const API_ENDPOINT = process.env.REACT_APP_UPLOAD_SERVICE_URL; +const API_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const smsAPI = { /** * Sends a SMS to an ICCID - * @param {*} data - * @param {*} token - * @returns + * @param {*} data + * @param {*} token + * @returns */ send: async (data, token) => fetch(`${API_ENDPOINT}/sms`, { diff --git a/src/services/superset.js b/src/services/superset.js index 4d13078..7d827bc 100644 --- a/src/services/superset.js +++ b/src/services/superset.js @@ -1,11 +1,10 @@ import { - getAuthHeaderOptions, - addQueryParams, + addQueryParams, getAuthHeaderOptions } from "../utils/http"; //Added the token we got from the first authorization and set it as the auth token, and that allowed us to hit the request -const API_ENDPOINT = process.env.REACT_APP_UPLOAD_SERVICE_URL; +const API_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const supersetAPI = { getGuestToken: async(token) => { diff --git a/src/services/suppliersAPI.js b/src/services/suppliersAPI.js index efc6436..9b11e69 100644 --- a/src/services/suppliersAPI.js +++ b/src/services/suppliersAPI.js @@ -1,11 +1,8 @@ import { - errorHandler, - getAuthHeaderOptions, - fetchRespHandler, - addQueryParams, + addQueryParams, errorHandler, fetchRespHandler, getAuthHeaderOptions } from "../utils/http"; -const API_ENDPOINT = process.env.REACT_APP_UPLOAD_SERVICE_URL; +const API_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const suppliersAPI = { addSupplier: async (vehicle, token) => @@ -78,6 +75,17 @@ const suppliersAPI = { }) .then(fetchRespHandler) .catch(errorHandler), + + getManufactureCert: async (token) => + fetch(`${API_ENDPOINT}/manufacture-certs`, { + method: "POST", + headers: Object.assign( + { "Content-Type": "application/json" }, + getAuthHeaderOptions(token) + ), + }) + .then(fetchRespHandler) + .catch(errorHandler) }; export default suppliersAPI; diff --git a/src/services/updatesAPI.js b/src/services/updatesAPI.js index 5e8dda9..9410b0e 100644 --- a/src/services/updatesAPI.js +++ b/src/services/updatesAPI.js @@ -1,11 +1,8 @@ import { - errorHandler, - getAuthHeaderOptions, - fetchRespHandler, - addQueryParams, + addQueryParams, errorHandler, fetchRespHandler, getAuthHeaderOptions } from "../utils/http"; -const API_ENDPOINT = process.env.REACT_APP_UPLOAD_SERVICE_URL; +const API_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const createDeployUpdatesClosure = (suffix) => { return async (data, token) => diff --git a/src/services/uploadFile.js b/src/services/uploadFile.js index 7e9f11a..e85809d 100644 --- a/src/services/uploadFile.js +++ b/src/services/uploadFile.js @@ -1,6 +1,6 @@ import axios from "axios"; -const UPLOAD_ENDPOINT = process.env.REACT_APP_UPLOAD_SERVICE_URL; +const UPLOAD_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const fileField = "file"; export const getCancelToken = () => { diff --git a/src/services/vehiclesAPI.js b/src/services/vehiclesAPI.js index cc672d5..86a2bc8 100644 --- a/src/services/vehiclesAPI.js +++ b/src/services/vehiclesAPI.js @@ -1,11 +1,8 @@ import { - errorHandler, - getAuthHeaderOptions, - fetchRespHandler, - addQueryParams, + addQueryParams, errorHandler, fetchRespHandler, getAuthHeaderOptions } from "../utils/http"; -const API_ENDPOINT = process.env.REACT_APP_UPLOAD_SERVICE_URL; +const API_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const vehiclesAPI = { addVehicle: async (vehicle, token) => diff --git a/src/utils/testing.js b/src/utils/testing.js index 1ccb278..2b2f071 100644 --- a/src/utils/testing.js +++ b/src/utils/testing.js @@ -15,3 +15,9 @@ export const TEST_AUTH_OBJECT_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]"; +export const TEST_TOKEN_MAGNA = "eyJraWQiOiJlUTNuZFJLaUVcL084VUZ5RHFsYjN0S1RzWG00SzVPMlc4NXd3VWkzT2tNZz0iLCJhbGciOiJSUzI1NiJ9.eyJhdF9oYXNoIjoiSG10dVRGVmdLaS1FbXhTWTNldFdVUSIsInN1YiI6ImMyZWRjYTk5LTdiZDQtNDkzNS1hZDM3LTFhMjJhN2VmMWY0NiIsImNvZ25pdG86Z3JvdXBzIjpbInVzLXdlc3QtMl9BV3dqTFh5bTJfRmlza2VyLVFBIl0sImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tXC91cy13ZXN0LTJfQVd3akxYeW0yIiwiY29nbml0bzp1c2VybmFtZSI6ImZpc2tlci1xYV9qd3VAZmlza2VyaW5jLmNvbSIsImN1c3RvbTpncm91cHMiOiJbMjczYzdjMGQtNTFkMy00YTMxLTk0NDMtYzQzNjc1NzJlZTRmLCA1ZTU5YTYxOS1jODkwLTQ0NzItOTFjMi1kNWVhZTVkOGZhMTgsIGM0ZDQzNjFjLTg4ODItNDdiNC04NjQxLWZkM2FiNjhhZTcyMiwgZWZjYzMwMjUtZTJkOC00MjEyLTgyMjctODA1YzdiZTM5ZDJjLCA4Njk1NmEyZi04ZDQ2LTQ3ZmYtOWIyOS1mOTkwNzlhZTNjMWQsIGY2M2I2NDMwLTEyODgtNDBhOC1hYTQ5LTg0Mzg1MTUwZDZhOCwgNWRlYTZjMzItNjU3NS00NTI3LTkyNTQtZTUwZDI3YWU1ZTkyLCAxMzFlNjI1Ny1mZGI3LTQyNmEtOTgyNS0xY2Q5MTg4MDJmYmEsIGE2Yzk4MDVlLTgwYjItNDJiMi1iZmJiLTlkZjUyZTU1MDRkOCwgNjZjYWQ4NjAtM2Q4MC00YTU4LTlkOTgtNTQwOTE3NzMzZWY2LCAyNDQ5YzA2Ni05MTQ2LTQ0YTctYjRlNi00ODI4MDMxZDk1OGQsIDkyOWIwNDcwLWY3ZWItNGUxOC05Zjk3LTIyYWMyYzU5MWExMCwgM2JlZjYzNzctZWRkZS00YWUwLTkzMWUtMzg4Nzk5OTM5NjUyLCA3ODNjNTk3OS1mNWU3LTRjYjYtYjE0ZS1jMzU1M2RkZTk1NmEsIDI5MTRlNjdmLWZiODUtNGI3OC1iNzlkLTY1NmY0ZjM3ZmFhMSwgYjBlODJlODMtMmM5NC00YjI0LWI5YzctZTc3ODE2ZjI1OTdkLCBjZjY1MzE4My1jODI5LTRlZWQtYTZjZS00NTNmYTEwMTdjZDksIDZjM2NmOThkLTBhZGEtNDhjNi1hZTk0LWIxNzFjZmEyNzVmYywgNTUxNWE5OGYtNDY2OC00MTIxLThlOGQtZmVlMjgyNTY5OWNmLCA5NzJhZDA5NS0xNmI3LTQwYWQtYTQ2NC1mNWRiZjQxN2E4Y2QsIDczN2U0NDljLTIzMDktNDY5ZS1hYTQ4LTQ2ZTY4OTE5ODNjMCwgOGQ4Mjc4YTUtOWMwZS00YzdmLTkxOGEtODExZmQxZDIzNmU0LCBiYWZjMTdhNy1lYzY0LTQ5ZDktYTJhNy1kYWZjMjhkY2IwMzcsIDc0NmYzNGIwLTliYTAtNGI1ZC04ZDg0LTAyNTZhOWM4ZTM5MCwgN2JjZGNkYjItMzI3OS00NGJmLWE5OTgtNzcxYmFiNGIzM2UxLCBhY2JkNzJjOS05ZmYzLTQ2YTgtODNiYS1jNmZhNWRmM2YyNjQsIDFhYzc5NGNjLTc2YWMtNDdmNi1iZWU2LWQ2NjY2OTk4ZjBmZCwgOGY3OGRjZTctZjVmOS00MDMzLWExMGMtYzljNzQwOGJmY2ZlLCA4Nzc3MGFlYS05MTYyLTQwOWUtYWE3MC0xMGQwZDFkZTU5MDIsIDU2ZWY0YmVjLWQ3MzktNGRkZi1hMDAzLWVjYzgxMzA4NWI4ZF0iLCJhdWQiOiI3Y2sydGZvcWF2YzcyYzQ1aGg3dGdlNDJrZCIsImlkZW50aXRpZXMiOlt7InVzZXJJZCI6Imp3dUBmaXNrZXJpbmMuY29tIiwicHJvdmlkZXJOYW1lIjoiRmlza2VyLVFBIiwicHJvdmlkZXJUeXBlIjoiU0FNTCIsImlzc3VlciI6Imh0dHBzOlwvXC9zdHMud2luZG93cy5uZXRcLzVhYTRiNjQwLWM5ZmMtNGE5Yi1iM2EzLWQ0YTdkMDA4ZmI1ZVwvIiwicHJpbWFyeSI6InRydWUiLCJkYXRlQ3JlYXRlZCI6IjE2Njg2MjQ4NTM3NDEifV0sInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjcwNjI4NDU3LCJleHAiOjE2NzA2MzU1OTgsImlhdCI6MTY3MDYzMTk5OCwiZW1haWwiOiJqd3VAZmlza2VyaW5jLmNvbSJ9.dqSyarRMi8i5C51waGAgCu54z8BozGmS_B9bQELAq-puHfWBSsVzBVBipSY50e_NdTyg7UcU5CA4kijSIQLWz5jsy09Mfq_rh7NNOeWcX_X631bkLsQda9Qs53j4AlrPZFgAV_EtmoqLCK-z1kYv4gjZvtyWw7LKQ1VcsuFaNGPko1QAC1zpIc2OngRvamtLOxhuQjd8bDdQFQh56P4q02rkTssCEPyxr-D3loBC1s7GkJ3OZm1wuljjJfXCLogirIyrgDS4k2e0CPWofXCwGqM0lvVs73DmRt_s7-TNbYFg9A105d3UhoP6NNfKCNTqEVWKLPaGQNkhcL9xJwYX-A"; +export const TEST_AUTH_OBJECT_MAGNA = { + idToken: { + jwtToken: TEST_TOKEN_MAGNA + }, +} \ No newline at end of file