Skip to content

Commit

Permalink
Merge branch '2.x' into backport/backport-2072-to-2.x
Browse files Browse the repository at this point in the history
  • Loading branch information
derek-ho committed Aug 19, 2024
2 parents 83111af + ca257a3 commit 39b3119
Show file tree
Hide file tree
Showing 8 changed files with 92 additions and 28 deletions.
4 changes: 2 additions & 2 deletions opensearch_dashboards.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "securityDashboards",
"version": "2.16.0.0",
"opensearchDashboardsVersion": "2.16.0",
"version": "2.17.0.0",
"opensearchDashboardsVersion": "2.17.0",
"configPath": [
"opensearch_security"
],
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"name": "opensearch-security-dashboards",
"version": "2.16.0.0",
"version": "2.17.0.0",
"main": "target/plugins/opensearch_security_dashboards",
"opensearchDashboards": {
"version": "2.16.0",
"templateVersion": "2.16.0"
"version": "2.17.0",
"templateVersion": "2.17.0"
},
"license": "Apache-2.0",
"homepage": "https://github.com/opensearch-project/security-dashboards-plugin",
Expand Down
7 changes: 4 additions & 3 deletions public/apps/account/account-app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,10 @@ export async function setupTopNavButton(coreStart: CoreStart, config: ClientConf

setShouldShowTenantPopup(shouldShowTenantPopup);

coreStart.chrome.navControls.registerRight({
// Pin to rightmost, since newsfeed plugin is using 1000, here needs a number > 1000
order: 2000,
const isPlacedInLeftNav = coreStart.uiSettings.get('home:useNewHomePage');

coreStart.chrome.navControls[isPlacedInLeftNav ? 'registerLeftBottom' : 'registerRight']({
order: isPlacedInLeftNav ? 10000 : 2000,
mount: (element: HTMLElement) => {
ReactDOM.render(
<AccountNavButton
Expand Down
9 changes: 9 additions & 0 deletions public/apps/account/account-nav-button.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

// stylelint-disable-next-line @osd/stylelint/no_modifying_global_selectors
.euiButtonEmpty.accountNavButton {
border: 0;
}
36 changes: 32 additions & 4 deletions public/apps/account/account-nav-button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import { LogoutButton } from './log-out-button';
import { resolveTenantName } from '../configuration/utils/tenant-utils';
import { getShouldShowTenantPopup, setShouldShowTenantPopup } from '../../utils/storage-utils';
import { getDashboardsInfo } from '../../utils/dashboards-info-utils';
import './account-nav-button.scss';

export function AccountNavButton(props: {
coreStart: CoreStart;
Expand Down Expand Up @@ -73,7 +74,7 @@ export function AccountNavButton(props: {
const fetchData = async () => {
try {
setIsMultiTenancyEnabled(
(await getDashboardsInfo(props.coreStart.http)).multitenancy_enabled
Boolean((await getDashboardsInfo(props.coreStart.http)).multitenancy_enabled)
);
} catch (e) {
// TODO: switch to better error display.
Expand Down Expand Up @@ -167,12 +168,31 @@ export function AccountNavButton(props: {
/>
</div>
);
return (
<EuiHeaderSectionItemButton id="user-icon-btn">

const isPlacedInLeftNav = props.coreStart.uiSettings.get('home:useNewHomePage');

// ToDo: Add aria-label and tooltip when isPlacedInLeftNav is true
const innerElement = isPlacedInLeftNav ? (
<EuiButtonEmpty
size="xs"
flush="both"
className="accountNavButton"
aria-expanded={isPopoverOpen}
aria-haspopup="true"
>
<EuiAvatar name={username} size="s" />
</EuiButtonEmpty>
) : (
<EuiAvatar name={username} size="m" />
);

const popover = (
<>
<EuiPopover
data-test-subj="account-popover"
id="actionsMenu"
button={<EuiAvatar name={username} />}
anchorPosition={isPlacedInLeftNav ? 'rightDown' : undefined}
button={innerElement}
isOpen={isPopoverOpen}
closePopover={() => {
setPopoverOpen(false);
Expand All @@ -185,6 +205,14 @@ export function AccountNavButton(props: {
<EuiContextMenuPanel>{contextMenuPanel}</EuiContextMenuPanel>
</EuiPopover>
{modal}
</>
);

return isPlacedInLeftNav ? (
popover
) : (
<EuiHeaderSectionItemButton id="user-icon-btn" size="l">
{popover}
</EuiHeaderSectionItemButton>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
exports[`Account navigation button renders 1`] = `
<EuiHeaderSectionItemButton
id="user-icon-btn"
size="l"
>
<EuiPopover
anchorPosition="downCenter"
button={
<EuiAvatar
name="user1"
size="m"
/>
}
closePopover={[Function]}
Expand Down Expand Up @@ -111,7 +113,34 @@ exports[`Account navigation button renders 1`] = `
margin="xs"
/>
}
http={1}
http={
Object {
"addLoadingCountSource": [MockFunction],
"anonymousPaths": Object {
"isAnonymous": [MockFunction],
"register": [MockFunction],
},
"basePath": BasePath {
"basePath": "",
"clientBasePath": "",
"get": [Function],
"getBasePath": [Function],
"prepend": [Function],
"remove": [Function],
"serverBasePath": "",
},
"delete": [MockFunction],
"fetch": [MockFunction],
"get": [MockFunction],
"getLoadingCount$": [MockFunction],
"head": [MockFunction],
"intercept": [MockFunction],
"options": [MockFunction],
"patch": [MockFunction],
"post": [MockFunction],
"put": [MockFunction],
}
}
/>
</div>
</EuiContextMenuPanel>
Expand Down
10 changes: 3 additions & 7 deletions public/apps/account/test/account-app.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import { fetchAccountInfoSafe } from '../utils';
import { fetchCurrentAuthType } from '../../../utils/logout-utils';
import { fetchCurrentTenant } from '../../configuration/utils/tenant-utils';
import { getDashboardsInfoSafe } from '../../../utils/dashboards-info-utils';
import { CoreStart } from 'opensearch-dashboards/public';
import { coreMock } from '../../../../../../src/core/public/mocks';

jest.mock('../../../utils/storage-utils', () => ({
getShouldShowTenantPopup: jest.fn(),
Expand All @@ -44,13 +46,7 @@ jest.mock('../../configuration/utils/tenant-utils', () => ({
}));

describe('Account app', () => {
const mockCoreStart = {
chrome: {
navControls: {
registerRight: jest.fn(),
},
},
};
const mockCoreStart: CoreStart = coreMock.createStart();

const mockConfig = {
multitenancy: {
Expand Down
17 changes: 9 additions & 8 deletions public/apps/account/test/account-nav-button.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import { AccountNavButton, reloadAfterTenantSwitch } from '../account-nav-button
import { getShouldShowTenantPopup } from '../../../utils/storage-utils';
import { getDashboardsInfo } from '../../../utils/dashboards-info-utils';
import { render, fireEvent } from '@testing-library/react';
import { coreMock } from '../../../../../../src/core/public/mocks';
import { CoreStart } from 'opensearch-dashboards/public';

jest.mock('../../../utils/storage-utils', () => ({
getShouldShowTenantPopup: jest.fn(),
Expand All @@ -38,9 +40,7 @@ const mockDashboardsInfo = {
};

describe('Account navigation button', () => {
const mockCoreStart = {
http: 1,
};
const mockCoreStart: CoreStart = coreMock.createStart();

const config = {
multitenancy: {
Expand All @@ -66,6 +66,7 @@ describe('Account navigation button', () => {
(getDashboardsInfo as jest.Mock).mockImplementation(() => {
return mockDashboardsInfo;
});

component = shallow(
<AccountNavButton
coreStart={mockCoreStart}
Expand Down Expand Up @@ -133,9 +134,7 @@ describe('Account navigation button', () => {
});

describe('Account navigation button, multitenancy disabled', () => {
const mockCoreStart = {
http: 1,
};
const mockCoreStart: CoreStart = coreMock.createStart();

const config = {
multitenancy: {
Expand Down Expand Up @@ -178,9 +177,11 @@ describe('Account navigation button, multitenancy disabled', () => {
});

describe('Shows tenant info when multitenancy enabled, and hides it if disabled', () => {
const mockCoreStart: CoreStart = coreMock.createStart();

test('Renders "switch-tenants" and "tenant-name" when multi-tenancy is enabled', () => {
const props = {
coreStart: {},
coreStart: mockCoreStart,
isInternalUser: true,
username: 'example_user',
tenant: 'example_tenant',
Expand Down Expand Up @@ -213,7 +214,7 @@ describe('Shows tenant info when multitenancy enabled, and hides it if disabled'

test('Does not render "switch-tenants" and "tenant-name" when multi-tenancy is disabled', () => {
const props = {
coreStart: {},
coreStart: mockCoreStart,
isInternalUser: true,
username: 'example_user',
tenant: 'example_tenant',
Expand Down

0 comments on commit 39b3119

Please sign in to comment.