Use compute auth service and fix static code analyzer warnings (#15)

* Clean up formatting

* Use new compute_auth service
Implment SSO
Implement token refresh
Clean up unit tests

* Fix unit tests

* Fix auth test
Fix warnings

* Update default settings for compute_auth
This commit is contained in:
John Wu
2021-03-04 14:30:56 -08:00
committed by GitHub
parent e1f0006d5e
commit 39e779dc1d
34 changed files with 703 additions and 1462 deletions

View File

@@ -1,15 +1,37 @@
jest.mock("../../services/uploadFile");
import { setUploadFileDelay } from "../../services/uploadFile"
import { FileUploadProvider, useFileUploadContext } from "../Contexts/FileUploadContext";
import {render, cleanup, screen, fireEvent, waitFor} from "@testing-library/react"
import { setUploadFileDelay } from "../../services/uploadFile";
import {
FileUploadProvider,
useFileUploadContext,
} from "../Contexts/FileUploadContext";
import {
render,
cleanup,
screen,
fireEvent,
waitFor,
} from "@testing-library/react";
const checkState = (uploading, progress, status, linkURL) => {
expect(screen.getByTestId("uploading").innerHTML).toEqual(uploading);
expect(screen.getByTestId("progress").innerHTML).toEqual(progress);
expect(screen.getByTestId("status").innerHTML).toEqual(status);
expect(screen.getByTestId("linkURL").innerHTML).toEqual(linkURL);
};
describe("FileUploadContext", () => {
beforeEach(() => {
const TestComp = () => {
const { progress, uploading, status, linkURL, upload, cancel } = useFileUploadContext();
const TEST_FILE = [{ file: { name: "test.jpg", size: 0 }}];
const {
progress,
uploading,
status,
linkURL,
upload,
cancel,
} = useFileUploadContext();
const TEST_FILE = [{ file: { name: "test.jpg", size: 0 } }];
const TEST_ACCESSTOKEN = "ACCESSTOKEN";
return (
<>
@@ -17,14 +39,24 @@ describe("FileUploadContext", () => {
<div data-testid="progress">{progress.toString()}</div>
<div data-testid="status">{status}</div>
<div data-testid="linkURL">{linkURL}</div>
<button data-testid="uploadNoFile" onClick={() => upload()}/>
<button data-testid="uploadNoToken" onClick={() => upload(TEST_FILE)}/>
<button data-testid="upload" onClick={() => upload(TEST_FILE, TEST_ACCESSTOKEN)}/>
<button data-testid="cancel" onClick={() => cancel()}/>
<button data-testid="uploadNoFile" onClick={() => upload()} />
<button
data-testid="uploadNoToken"
onClick={() => upload(TEST_FILE)}
/>
<button
data-testid="upload"
onClick={() => upload(TEST_FILE, TEST_ACCESSTOKEN)}
/>
<button data-testid="cancel" onClick={() => cancel()} />
</>
);
};
render(<FileUploadProvider><TestComp /></FileUploadProvider>);
render(
<FileUploadProvider>
<TestComp />
</FileUploadProvider>
);
});
afterEach(() => {
@@ -32,46 +64,39 @@ describe("FileUploadContext", () => {
});
it("Initial state", async () => {
expect(screen.getByTestId("uploading").innerHTML).toEqual("false");
expect(screen.getByTestId("progress").innerHTML).toEqual("0");
expect(screen.getByTestId("status").innerHTML).toEqual("");
expect(screen.getByTestId("linkURL").innerHTML).toEqual("");
})
checkState("false", "0", "", "");
});
it("Upload no file", async () => {
fireEvent.click(screen.getByTestId("uploadNoFile"));
expect(screen.getByTestId("uploading").innerHTML).toEqual("false");
expect(screen.getByTestId("progress").innerHTML).toEqual("-1");
expect(screen.getByTestId("status").innerHTML).toEqual("Error occured: File required");
expect(screen.getByTestId("linkURL").innerHTML).toEqual("");
})
checkState("false", "-1", "Error occured: File required", "");
});
it("Upload no access token", async () => {
fireEvent.click(screen.getByTestId("uploadNoToken"));
expect(screen.getByTestId("uploading").innerHTML).toEqual("false");
expect(screen.getByTestId("progress").innerHTML).toEqual("-1");
expect(screen.getByTestId("status").innerHTML).toEqual("Error occured: Access token required");
expect(screen.getByTestId("linkURL").innerHTML).toEqual("");
})
checkState("false", "-1", "Error occured: Access token required", "");
});
it("Upload file", async () => {
fireEvent.click(screen.getByTestId("upload"));
await waitFor(() => expect(screen.getByTestId("progress").innerHTML).toEqual("100"));
expect(screen.getByTestId("uploading").innerHTML).toEqual("true");
expect(screen.getByTestId("status").innerHTML).toEqual(`Uploaded test.jpg`);
expect(screen.getByTestId("linkURL").innerHTML).toEqual(`CLOUDFRONT_URL`);
})
await waitFor(() =>
expect(screen.getByTestId("progress").innerHTML).toEqual("100")
);
checkState("true", "100", "Uploaded test.jpg", "CLOUDFRONT_URL");
});
it("Cancel upload", async () => {
setUploadFileDelay(true);
fireEvent.click(screen.getByTestId("upload"));
await waitFor(() => expect(screen.getByTestId("progress").innerHTML).toEqual("50"));
expect(screen.getByTestId("uploading").innerHTML).toEqual("true");
expect(screen.getByTestId("status").innerHTML).toEqual("Uploading test.jpg");
await waitFor(() =>
expect(screen.getByTestId("progress").innerHTML).toEqual("50")
);
checkState("true", "50", "Uploading test.jpg", "");
fireEvent.click(screen.getByTestId("cancel"));
await waitFor(() => expect(screen.getByTestId("progress").innerHTML).toEqual("0"));
expect(screen.getByTestId("uploading").innerHTML).toEqual("false");
expect(screen.getByTestId("status").innerHTML).toEqual("Upload cancelled");
expect(screen.getByTestId("linkURL").innerHTML).toEqual("");
})
})
await waitFor(() =>
expect(screen.getByTestId("progress").innerHTML).toEqual("0")
);
checkState("false", "0", "Upload cancelled", "");
});
});