+++ /dev/null
-// Copyright (C) The Arvados Authors. All rights reserved.
-//
-// SPDX-License-Identifier: AGPL-3.0
-
-import React from 'react';
-import { mount, configure } from 'enzyme';
-import Adapter from 'enzyme-adapter-react-16';
-import configureMockStore from 'redux-mock-store'
-import { Provider } from 'react-redux';
-import { CollectionFileViewerAction } from './collection-file-viewer-action';
-import { ContextMenuKind } from 'views-components/context-menu/context-menu';
-import { createTree, initTreeNode, setNode, getNodeValue } from "models/tree";
-import { getInlineFileUrl, sanitizeToken } from "./helpers";
-
-const middlewares = [];
-const mockStore = configureMockStore(middlewares);
-
-configure({ adapter: new Adapter() });
-
-describe('CollectionFileViewerAction', () => {
- let defaultStore;
- const fileUrl = "https://download.host:12345/c=abcde-4zz18-abcdefghijklmno/t=v2/token2/token3/cat.jpg";
- const insecureKeepInlineUrl = "https://download.host:12345/";
- const secureKeepInlineUrl = "https://*.collections.host:12345/";
-
- beforeEach(() => {
- let filesTree = createTree();
- let data = {id: "000", value: {"url": fileUrl}};
- filesTree = setNode(initTreeNode(data))(filesTree);
-
- defaultStore = {
- auth: {
- config: {
- keepWebServiceUrl: "https://download.host:12345/",
- keepWebInlineServiceUrl: insecureKeepInlineUrl,
- clusterConfig: {
- Collections: {
- TrustAllContent: false
- }
- }
- }
- },
- contextMenu: {
- resource: {
- uuid: "000",
- menuKind: ContextMenuKind.COLLECTION_FILE_ITEM,
- }
- },
- collectionPanel: {
- item: {
- uuid: ""
- }
- },
- collectionPanelFiles: filesTree
- };
- });
-
- it('should hide open in new tab when unsafe', () => {
- // given
- const store = mockStore(defaultStore);
-
- // when
- const wrapper = mount(<Provider store={store}>
- <CollectionFileViewerAction />
- </Provider>);
-
- // then
- expect(wrapper).not.toBeUndefined();
-
- // and
- expect(wrapper.find("a")).toHaveLength(0);
- });
-
- it('should show open in new tab when TrustAllContent=true', () => {
- // given
- let initialState = defaultStore;
- initialState.auth.config.clusterConfig.Collections.TrustAllContent = true;
- const store = mockStore(initialState);
-
- // when
- const wrapper = mount(<Provider store={store}>
- <CollectionFileViewerAction />
- </Provider>);
-
- // then
- expect(wrapper).not.toBeUndefined();
-
- // and
- expect(wrapper.find("a").prop("href"))
- .toEqual(sanitizeToken(getInlineFileUrl(fileUrl,
- initialState.auth.config.keepWebServiceUrl,
- initialState.auth.config.keepWebInlineServiceUrl))
- );
- });
-
- it('should show open in new tab when inline url is secure', () => {
- // given
- let initialState = defaultStore;
- initialState.auth.config.keepWebInlineServiceUrl = secureKeepInlineUrl;
- const store = mockStore(initialState);
-
- // when
- const wrapper = mount(<Provider store={store}>
- <CollectionFileViewerAction />
- </Provider>);
-
- // then
- expect(wrapper).not.toBeUndefined();
-
- // and
- expect(wrapper.find("a").prop("href"))
- .toEqual(sanitizeToken(getInlineFileUrl(fileUrl,
- initialState.auth.config.keepWebServiceUrl,
- initialState.auth.config.keepWebInlineServiceUrl))
- );
- });
-});