Skip to content

Commit

Permalink
Workspace trust (#12)
Browse files Browse the repository at this point in the history
Add untrustedWorkspaces support
  • Loading branch information
Nate Moore authored Jun 13, 2021
1 parent e715fb3 commit 995bd42
Show file tree
Hide file tree
Showing 10 changed files with 10,571 additions and 11,325 deletions.
3,085 changes: 1,675 additions & 1,410 deletions loom-editor/package-lock.json

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions loom-editor/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
"version": "1.0.3",
"private": true,
"dependencies": {
"@emotion/babel-plugin": "^11.1.2",
"@emotion/react": "^11.1.4",
"@emotion/babel-plugin": "^11.3.0",
"@emotion/react": "^11.4.0",
"d3": "^5.16.0",
"loom-common": "file:../loom-common/out",
"react-d3-graph": "^2.6.0",
"react-hotkeys-hook": "^3.0.3",
"react-scripts": "4.0.1",
"react-hotkeys-hook": "^3.3.1",
"react-scripts": "^4.0.3",
"typesafe-actions": "^5.1.0"
},
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion loom-editor/src/components/NodeGraph.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ const graphConfig: Partial<GraphConfiguration<GraphNode, GraphLink>> = {
mouseCursor: "grab",
symbolType: "square",
viewGenerator: (node) => (
<NodeGraphView node={(node as unknown) as YarnGraphNode} />
<NodeGraphView node={node as unknown as YarnGraphNode} />
),
strokeWidth: 3.0,
},
Expand Down
58 changes: 28 additions & 30 deletions loom-editor/src/components/NodeGraphView/NodeColorChooser.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,37 +42,35 @@ interface NodeGraphViewColorChooserProps {
nodeTitle: string;
}

const NodeGraphViewColorChooser: FunctionComponent<NodeGraphViewColorChooserProps> = ({
onClose,
nodeTitle,
}) => {
const onChooseColor = (colorIndex: number) => {
window.vsCodeApi.postMessage(setNodeColor(nodeTitle, colorIndex));
onClose();
};
const NodeGraphViewColorChooser: FunctionComponent<NodeGraphViewColorChooserProps> =
({ onClose, nodeTitle }) => {
const onChooseColor = (colorIndex: number) => {
window.vsCodeApi.postMessage(setNodeColor(nodeTitle, colorIndex));
onClose();
};

return (
<div css={containerStyle} data-testid="node-title-color-chooser">
<div css={buttonContainerStyle}>
{nodeColors.map((color, index) => (
<button
onClick={() => onChooseColor(index)}
key={color}
aria-label={`Choose color ${index}`}
css={css`
${buttonStyle}
background-color: ${color};
`}
>
{" "}
</button>
))}
return (
<div css={containerStyle} data-testid="node-title-color-chooser">
<div css={buttonContainerStyle}>
{nodeColors.map((color, index) => (
<button
onClick={() => onChooseColor(index)}
key={color}
aria-label={`Choose color ${index}`}
css={css`
${buttonStyle}
background-color: ${color};
`}
>
{" "}
</button>
))}
</div>
<button css={cancelButtonStyle} onClick={onClose}>
Cancel
</button>
</div>
<button css={cancelButtonStyle} onClick={onClose}>
Cancel
</button>
</div>
);
};
);
};

export default NodeGraphViewColorChooser;
5 changes: 5 additions & 0 deletions loom-extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,11 @@
}
]
},
"capabilities": {
"untrustedWorkspaces": {
"supported": true
}
},
"scripts": {
"vscode:prepublish": "npm run build",
"build": "rm -rf out && npm run compile && cd ../loom-editor && cp -r ./build ../loom-extension/out",
Expand Down
12 changes: 6 additions & 6 deletions loom-extension/src/LoomEditorProvider.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import { parseYarnFile } from "loom-common/YarnParser";
const vscodeMock = require("../__mocks__/vscode");

describe("LoomEditorProvider", () => {
const mockContext: vscode.ExtensionContext = ({
const mockContext: vscode.ExtensionContext = {
extensionPath: "some-extension-path",
} as unknown) as vscode.ExtensionContext;
} as unknown as vscode.ExtensionContext;

const exampleYarnFile = `title: Start
tags:
Expand Down Expand Up @@ -49,16 +49,16 @@ A: HAHAHA
beforeEach(() => {
provider = new LoomEditorProvider(mockContext);

provider.document = ({
provider.document = {
getText: () => exampleYarnFile,
uri: "some-document-uri",
} as unknown) as vscode.TextDocument;
} as unknown as vscode.TextDocument;

provider.webviewPanel = ({
provider.webviewPanel = {
webview: {
postMessage: jest.fn(),
} as any,
} as unknown) as vscode.WebviewPanel;
} as unknown as vscode.WebviewPanel;

provider.nodes = parseYarnFile(exampleYarnFile);
});
Expand Down
38 changes: 16 additions & 22 deletions loom-extension/src/LoomMessageListener.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,15 @@ describe("LoomMessageListener", () => {

beforeEach(() => {
// we re-create this before each test since the tests can end up mutating it
mockEditor = ({
mockEditor = {
nodes: mockNodes,
webviewPanel: {}, // needs to be defined or errors are thrown
updateNode: jest.fn(),
deleteNode: jest.fn(),
addNewNode: jest.fn(),
renameNode: jest.fn(),
addTagsToNode: jest.fn(),
} as unknown) as LoomEditorProvider;
} as unknown as LoomEditorProvider;
});

afterEach(() => {
Expand Down Expand Up @@ -108,9 +108,8 @@ describe("LoomMessageListener", () => {
describe("confirmAndDeleteNode", () => {
it("deletes if the value chosen is Yes", () => {
// this will mock the information response immediately returning "Yes"
const mockedSetInformationMessage = vscodeMock.__setInformationMessageResponse(
"Yes"
);
const mockedSetInformationMessage =
vscodeMock.__setInformationMessageResponse("Yes");

LoomMessageListener.confirmAndDeleteNode(mockNodeTitle, mockEditor);

Expand All @@ -123,9 +122,8 @@ describe("LoomMessageListener", () => {

it("does not delete if the value chosen is not Yes", () => {
// this will mock the information response immediately returning "No"
const mockedSetInformationMessage = vscodeMock.__setInformationMessageResponse(
"No"
);
const mockedSetInformationMessage =
vscodeMock.__setInformationMessageResponse("No");

LoomMessageListener.confirmAndDeleteNode(mockNodeTitle, mockEditor);

Expand All @@ -140,9 +138,8 @@ describe("LoomMessageListener", () => {
it("adds a new node", () => {
const newNodeName = "New Node";

const mockedInputBoxResponse = vscodeMock.__setInputBoxResponse(
newNodeName
);
const mockedInputBoxResponse =
vscodeMock.__setInputBoxResponse(newNodeName);

LoomMessageListener.askForNameAndAddNewNode(mockEditor);

Expand All @@ -164,9 +161,8 @@ describe("LoomMessageListener", () => {
},
];

const mockedInputBoxResponse = vscodeMock.__setInputBoxResponse(
existingNodeName
);
const mockedInputBoxResponse =
vscodeMock.__setInputBoxResponse(existingNodeName);

LoomMessageListener.askForNameAndAddNewNode(mockEditor);

Expand All @@ -186,9 +182,8 @@ describe("LoomMessageListener", () => {
it("renames nodes", () => {
const newNodeName = "New Node Name";

const mockedInputBoxResponse = vscodeMock.__setInputBoxResponse(
newNodeName
);
const mockedInputBoxResponse =
vscodeMock.__setInputBoxResponse(newNodeName);

LoomMessageListener.askForNameAndRenameNode(mockEditor, mockNodeTitle);

Expand Down Expand Up @@ -219,9 +214,8 @@ describe("LoomMessageListener", () => {
];

// trying to rename mockNodeTitle -> existingNodeName
const mockedInputBoxResponse = vscodeMock.__setInputBoxResponse(
existingNodeName
);
const mockedInputBoxResponse =
vscodeMock.__setInputBoxResponse(existingNodeName);

LoomMessageListener.askForNameAndRenameNode(mockEditor, mockNodeTitle);

Expand Down Expand Up @@ -263,13 +257,13 @@ describe("LoomMessageListener", () => {
* on to the function passed in to it by `listenForMessages`.
*/
const createMockWebviewWithMessage = (message: EditorActions) => {
const mockWebviewPanel: WebviewPanel = ({
const mockWebviewPanel: WebviewPanel = {
webview: {
onDidReceiveMessage: (fn: (message: EditorActions) => void) => {
fn(message);
},
} as any,
} as unknown) as WebviewPanel;
} as unknown as WebviewPanel;

return mockWebviewPanel;
};
Expand Down
12 changes: 6 additions & 6 deletions loom-extension/src/TemporaryFiles.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ describe("TemporaryFiles", () => {
const mockOpenYarnFileHash = "33bde1ae455211803e3b3ed8996e7dea";

// mock VSCode TextDocument
const mockTextDocument: vscode.TextDocument = ({
const mockTextDocument: vscode.TextDocument = {
uri: vscode.Uri.file(mockOpenYarnFileName),
} as unknown) as vscode.TextDocument;
} as unknown as vscode.TextDocument;

describe("getTemporaryFolderPath", () => {
it("generates a path with the workspace name if a workspace is open", () => {
Expand Down Expand Up @@ -68,9 +68,9 @@ describe("TemporaryFiles", () => {
tags: "",
};

const mockEditor: LoomEditorProvider = ({
const mockEditor: LoomEditorProvider = {
document: mockTextDocument,
} as unknown) as LoomEditorProvider;
} as unknown as LoomEditorProvider;

it("creates temporary documents", () => {
const expectedMockFilePath = join(
Expand Down Expand Up @@ -145,9 +145,9 @@ describe("TemporaryFiles", () => {
});

it("does not un-watch files belonging to a different document", () => {
const otherMockTextDocument: vscode.TextDocument = ({
const otherMockTextDocument: vscode.TextDocument = {
uri: vscode.Uri.file("/some-other-file.yarn"),
} as unknown) as vscode.TextDocument;
} as unknown as vscode.TextDocument;

const mockTemporaryFiles: TemporaryFile[] = [
{
Expand Down
Loading

0 comments on commit 995bd42

Please sign in to comment.