nexo/apps/mattermost/app/actions/remote/license.test.ts

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);
});
});
});