74 lines
2.9 KiB
TypeScript
74 lines
2.9 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import NetworkManager from '@managers/network_manager';
|
|
|
|
import {getLicenseLoadMetric} from './license';
|
|
import {forceLogoutIfNecessary} from './session';
|
|
|
|
import type {Client} from '@client/rest';
|
|
|
|
jest.mock('@constants/device', () => ({}), {virtual: true});
|
|
jest.mock('@database/manager', () => ({}), {virtual: true});
|
|
|
|
jest.mock('@managers/network_manager');
|
|
jest.mock('./session');
|
|
|
|
describe('Actions.Remote.License', () => {
|
|
const serverUrl = 'https://server.com';
|
|
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
describe('getLicenseLoadMetric', () => {
|
|
it('should return null if not licensed', async () => {
|
|
const result = await getLicenseLoadMetric(serverUrl, '10.8.0', false);
|
|
expect(result).toBeNull();
|
|
expect(NetworkManager.getClient).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('should return null if server version is less than minimum', async () => {
|
|
const result = await getLicenseLoadMetric(serverUrl, '10.7.0', true);
|
|
expect(result).toBeNull();
|
|
expect(NetworkManager.getClient).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('should fetch and return load metric if licensed and minimum version is met', async () => {
|
|
const mockClient = {
|
|
getLicenseLoadMetric: jest.fn().mockResolvedValue({load: 100}),
|
|
};
|
|
jest.mocked(NetworkManager.getClient).mockReturnValue(mockClient as unknown as Client);
|
|
|
|
const result = await getLicenseLoadMetric(serverUrl, '10.8.0', true);
|
|
|
|
expect(NetworkManager.getClient).toHaveBeenCalledWith(serverUrl);
|
|
expect(mockClient.getLicenseLoadMetric).toHaveBeenCalledWith();
|
|
expect(result).toBe(100);
|
|
});
|
|
|
|
it('should return null if response does not contain load or load is 0', async () => {
|
|
const mockClient = {
|
|
getLicenseLoadMetric: jest.fn().mockResolvedValue({load: 0}),
|
|
};
|
|
jest.mocked(NetworkManager.getClient).mockReturnValue(mockClient as unknown as Client);
|
|
|
|
const result = await getLicenseLoadMetric(serverUrl, '10.8.0', true);
|
|
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
it('should return error and call forceLogoutIfNecessary if API call fails', async () => {
|
|
const mockError = new Error('API error');
|
|
const mockClient = {
|
|
getLicenseLoadMetric: jest.fn().mockRejectedValue(mockError),
|
|
};
|
|
jest.mocked(NetworkManager.getClient).mockReturnValue(mockClient as unknown as Client);
|
|
|
|
const result = await getLicenseLoadMetric(serverUrl, '10.8.0', true);
|
|
|
|
expect(result).toEqual({error: mockError});
|
|
expect(forceLogoutIfNecessary).toHaveBeenCalledWith(serverUrl, mockError);
|
|
});
|
|
});
|
|
});
|