diff --git a/src/test/SecurityPanel/StoreJmxCredentials.test.tsx b/src/test/SecurityPanel/StoreJmxCredentials.test.tsx
index 1b81283ff..5a0ee19a3 100644
--- a/src/test/SecurityPanel/StoreJmxCredentials.test.tsx
+++ b/src/test/SecurityPanel/StoreJmxCredentials.test.tsx
@@ -39,15 +39,15 @@ import * as React from 'react';
import userEvent from '@testing-library/user-event';
import renderer, { act } from 'react-test-renderer';
import { render, screen } from '@testing-library/react';
-import { of } from 'rxjs';
-import { Target } from '@app/Shared/Services/Target.service';
+import { of, throwError } from 'rxjs';
+import { StoredCredential } from '@app/Shared/Services/Api.service';
import '@testing-library/jest-dom';
import { Modal, ModalVariant } from '@patternfly/react-core';
import { NotificationMessage } from '@app/Shared/Services/NotificationChannel.service';
-const mockTarget: Target = { connectUrl: 'service:jmx:rmi://someUrl', alias: 'fooTarget' };
-const mockAnotherTarget: Target = { connectUrl: 'service:jmx:rmi://anotherUrl', alias: 'anotherTarget' };
+const mockCredential: StoredCredential = { matchExpression: 'target.connectUrl == "service:jmx:rmi://someUrl"', targets: [{ connectUrl: 'service:jmx:rmi://someUrl', alias: 'fooTarget' }] };
+const mockAnotherCredential: StoredCredential = { matchExpression: 'target.connectUrl == "service:jmx:rmi://anotherUrl"', targets: [{ connectUrl: 'service:jmx:rmi://anotherUrl', alias: 'anotherTarget' }] };
jest.mock('@app/SecurityPanel/CreateJmxCredentialModal', () => {
return {
@@ -68,7 +68,7 @@ jest.mock('@app/SecurityPanel/CreateJmxCredentialModal', () => {
});
jest.mock('@app/Shared/Services/NotificationChannel.service', () => {
- const mockNotification = { message: { target: 'service:jmx:rmi://someUrl' } } as NotificationMessage;
+ const mockNotification = { message: { target: 'target.connectUrl == "service:jmx:rmi://someUrl"' } } as NotificationMessage;
return {
...jest.requireActual('@app/Shared/Services/NotificationChannel.service'),
NotificationChannel: jest.fn(() => {
@@ -80,16 +80,16 @@ jest.mock('@app/Shared/Services/NotificationChannel.service', () => {
.mockReturnValueOnce(of())
.mockReturnValueOnce(of()) // 'adds the correct table entry when a stored notification is received'
- .mockReturnValueOnce(of())
.mockReturnValueOnce(of(mockNotification))
+ .mockReturnValueOnce(of())
.mockReturnValueOnce(of()) // 'removes the correct table entry when a deletion notification is received'
- .mockReturnValueOnce(of(mockNotification))
.mockReturnValueOnce(of())
+ .mockReturnValueOnce(of(mockNotification))
.mockReturnValueOnce(of()) // 'renders an empty table after receiving deletion notifications for all credentials'
- .mockReturnValueOnce(of(mockNotification))
.mockReturnValueOnce(of())
+ .mockReturnValueOnce(of(mockNotification))
.mockReturnValue(of()), // all other tests
};
@@ -112,16 +112,24 @@ jest.mock('@app/Shared/Services/Api.service', () => {
return {
ApiService: jest.fn(() => {
return {
- getTargetsWithStoredJmxCredentials: jest
+ getStoredJmxCredentials: jest
.fn()
- .mockReturnValueOnce(of([mockTarget]))
- .mockReturnValueOnce(of([]))
- .mockReturnValueOnce(of([mockTarget, mockAnotherTarget]))
- .mockReturnValueOnce(of([mockTarget]))
- .mockReturnValueOnce(of([]))
- .mockReturnValueOnce(of([]))
- .mockReturnValueOnce(of([mockTarget, mockAnotherTarget]))
- .mockReturnValueOnce(of([mockTarget, mockAnotherTarget])),
+ .mockReturnValueOnce(of([mockCredential])) // 'renders correectly'
+
+ .mockReturnValueOnce(of([mockCredential])) // 'adds the correct table entry when a stored notification is received'
+ .mockReturnValueOnce(of([mockCredential]))
+
+ .mockReturnValueOnce(of([mockCredential, mockAnotherCredential])) // 'removes the correct table entry when a deletion notification is received'
+
+ .mockReturnValueOnce(of([mockCredential])) // 'renders an empty table after receiving deletion notifications for all credentials'
+
+ .mockReturnValueOnce(of([])) // 'opens the JMX auth modal when Add is clicked'
+
+ .mockReturnValueOnce(of([mockCredential, mockAnotherCredential])) // 'makes a delete request when deleting one credential'
+
+ .mockReturnValueOnce(of([mockCredential, mockAnotherCredential])) // 'makes multiple delete requests when all credentials are deleted at once'
+
+ .mockReturnValue(throwError(() => new Error('Too many calls'))),
deleteTargetCredentials: jest.fn(() => {
return of(true);
}),
@@ -130,18 +138,6 @@ jest.mock('@app/Shared/Services/Api.service', () => {
};
});
-jest.mock('@app/Shared/Services/Targets.service', () => {
- return {
- TargetsService: jest.fn(() => {
- return {
- targets: jest.fn(() => {
- return of([mockTarget, mockAnotherTarget]);
- }),
- };
- }),
- };
-});
-
import { StoreJmxCredentials } from '@app/SecurityPanel/StoreJmxCredentials';
import { ServiceContext, defaultServices } from '@app/Shared/Services/Services';
@@ -190,16 +186,6 @@ describe('', () => {
expect(screen.getByText('No Stored Credentials')).toBeInTheDocument();
});
- it('displays empty state text when the table is empty', () => {
- render(
-
-
-
- );
-
- expect(screen.getByText('No Stored Credentials')).toBeInTheDocument();
- });
-
it('opens the JMX auth modal when Add is clicked', () => {
render(
@@ -229,7 +215,7 @@ describe('', () => {
const deleteRequestSpy = jest.spyOn(defaultServices.api, 'deleteTargetCredentials');
expect(deleteRequestSpy).toHaveBeenCalledTimes(1);
- expect(deleteRequestSpy).toHaveBeenCalledWith(mockTarget);
+ expect(deleteRequestSpy).toHaveBeenCalledWith(mockCredential.targets[0].connectUrl);
});
it('makes multiple delete requests when all credentials are deleted at once', () => {
@@ -250,7 +236,7 @@ describe('', () => {
const deleteRequestSpy = jest.spyOn(defaultServices.api, 'deleteTargetCredentials');
expect(deleteRequestSpy).toHaveBeenCalledTimes(2);
- expect(deleteRequestSpy).nthCalledWith(1, mockTarget);
- expect(deleteRequestSpy).nthCalledWith(2, mockAnotherTarget);
+ expect(deleteRequestSpy).nthCalledWith(1, mockCredential.targets[0].connectUrl);
+ expect(deleteRequestSpy).nthCalledWith(2, mockAnotherCredential.targets[0].connectUrl);
});
});