Skip to content

Commit

Permalink
fix(database-list): hidden upload file button if no permission (#21216)
Browse files Browse the repository at this point in the history
  • Loading branch information
stephenLYZ committed Aug 30, 2022
1 parent 8772e2c commit 0c43190
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ fetchMock.get(
const useSelectorMock = jest.spyOn(reactRedux, 'useSelector');
const userSelectorMock = jest.spyOn(reactRedux, 'useSelector');

describe('DatabaseList', () => {
describe('Admin DatabaseList', () => {
useSelectorMock.mockReturnValue({
CSV_EXTENSIONS: ['csv'],
EXCEL_EXTENSIONS: ['xls', 'xlsx'],
Expand Down Expand Up @@ -212,4 +212,30 @@ describe('DatabaseList', () => {
`"http://localhost/api/v1/database/?q=(filters:!((col:expose_in_sqllab,opr:eq,value:!t),(col:allow_run_async,opr:eq,value:!f),(col:database_name,opr:ct,value:fooo)),order_column:changed_on_delta_humanized,order_direction:desc,page:0,page_size:25)"`,
);
});

it('should not render dropdown menu button if user is not admin', () => {
userSelectorMock.mockReturnValue({
createdOn: '2021-05-27T18:12:38.952304',
email: 'alpha@gmail.com',
firstName: 'alpha',
isActive: true,
lastName: 'alpha',
permissions: {},
roles: {
Alpha: [
['can_sqllab', 'Superset'],
['can_write', 'Dashboard'],
['can_write', 'Chart'],
],
},
userId: 2,
username: 'alpha',
});
const newWrapper = mount(
<Provider store={store}>
<DatabaseList />
</Provider>,
);
expect(newWrapper.find('.dropdown-menu-links')).not.toExist();
});
});
11 changes: 7 additions & 4 deletions superset-frontend/src/views/CRUD/data/database/DatabaseList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import { commonMenuData } from 'src/views/CRUD/data/common';
import handleResourceExport from 'src/utils/export';
import { ExtentionConfigs } from 'src/views/components/types';
import { UserWithPermissionsAndRoles } from 'src/types/bootstrapTypes';
import type { MenuObjectProps } from 'src/views/components/Menu';
import DatabaseModal from './DatabaseModal';

import { DatabaseObject } from './types';
Expand Down Expand Up @@ -235,11 +236,13 @@ function DatabaseList({ addDangerToast, addSuccessToast }: DatabaseListProps) {

useEffect(() => hasFileUploadEnabled(), [databaseModalOpen]);

const filteredDropDown = uploadDropdownMenu.map(link => {
const filteredDropDown = uploadDropdownMenu.reduce((prev, cur) => {
// eslint-disable-next-line no-param-reassign
link.childs = link.childs.filter(item => item.perm);
return link;
});
cur.childs = cur.childs.filter(item => item.perm);
if (!cur.childs.length) return prev;
prev.push(cur);
return prev;
}, [] as MenuObjectProps[]);

const menuData: SubMenuProps = {
activeChild: 'Databases',
Expand Down

0 comments on commit 0c43190

Please sign in to comment.