grafana/public/app/features/api-keys/state/selectors.test.ts
Ashley Harrison 80b55f09ad
Configuration: You can now see your expired API keys if you have no active ones (#42452)
* Configuration: Always display expired API keys

* Use exclamation-triangle instead

* Reintroduce toggle, move logic into store and call both endpoints

* Handle apiKeys without TTL

* Remove backend changes and make checks in frontend instead
2021-12-16 11:46:09 +00:00

141 lines
4.4 KiB
TypeScript

import { getApiKeys, getApiKeysCount, getIncludeExpired, getIncludeExpiredDisabled } from './selectors';
import { getMultipleMockKeys } from '../__mocks__/apiKeysMock';
import { ApiKeysState } from 'app/types';
describe('API Keys selectors', () => {
const mockKeys = getMultipleMockKeys(5);
const mockKeysIncludingExpired = getMultipleMockKeys(8);
describe('getApiKeysCount', () => {
it('returns the correct count when includeExpired is false', () => {
const mockState: ApiKeysState = {
keys: mockKeys,
keysIncludingExpired: mockKeysIncludingExpired,
searchQuery: '',
hasFetched: true,
includeExpired: false,
};
const keyCount = getApiKeysCount(mockState);
expect(keyCount).toBe(5);
});
it('returns the correct count when includeExpired is true', () => {
const mockState: ApiKeysState = {
keys: mockKeys,
keysIncludingExpired: mockKeysIncludingExpired,
searchQuery: '',
hasFetched: true,
includeExpired: true,
};
const keyCount = getApiKeysCount(mockState);
expect(keyCount).toBe(8);
});
});
describe('getApiKeys', () => {
describe('when includeExpired is false', () => {
it('should return all keys if no search query', () => {
const mockState: ApiKeysState = {
keys: mockKeys,
keysIncludingExpired: mockKeysIncludingExpired,
searchQuery: '',
hasFetched: true,
includeExpired: false,
};
const keys = getApiKeys(mockState);
expect(keys).toEqual(mockKeys);
});
it('should filter keys if search query exists', () => {
const mockState: ApiKeysState = {
keys: mockKeys,
keysIncludingExpired: mockKeysIncludingExpired,
searchQuery: '5',
hasFetched: true,
includeExpired: false,
};
const keys = getApiKeys(mockState);
expect(keys.length).toEqual(1);
});
});
describe('when includeExpired is true', () => {
it('should return all keys if no search query', () => {
const mockState: ApiKeysState = {
keys: mockKeys,
keysIncludingExpired: mockKeysIncludingExpired,
searchQuery: '',
hasFetched: true,
includeExpired: true,
};
const keys = getApiKeys(mockState);
expect(keys).toEqual(mockKeysIncludingExpired);
});
it('should filter keys if search query exists', () => {
const mockState: ApiKeysState = {
keys: mockKeys,
keysIncludingExpired: mockKeysIncludingExpired,
searchQuery: '5',
hasFetched: true,
includeExpired: true,
};
const keys = getApiKeys(mockState);
expect(keys.length).toEqual(1);
});
});
});
describe('getIncludeExpired', () => {
it('returns true if includeExpired is true', () => {
const mockState: ApiKeysState = {
keys: mockKeys,
keysIncludingExpired: mockKeysIncludingExpired,
searchQuery: '',
hasFetched: true,
includeExpired: true,
};
const includeExpired = getIncludeExpired(mockState);
expect(includeExpired).toBe(true);
});
it('returns false if includeExpired is false', () => {
const mockState: ApiKeysState = {
keys: mockKeys,
keysIncludingExpired: mockKeysIncludingExpired,
searchQuery: '',
hasFetched: true,
includeExpired: false,
};
const includeExpired = getIncludeExpired(mockState);
expect(includeExpired).toBe(false);
});
});
describe('getIncludeExpiredDisabled', () => {
it('returns true if there are no active keys but there are expired keys', () => {
const mockState: ApiKeysState = {
keys: [],
keysIncludingExpired: mockKeysIncludingExpired,
searchQuery: '',
hasFetched: true,
includeExpired: true,
};
const includeExpiredDisabled = getIncludeExpiredDisabled(mockState);
expect(includeExpiredDisabled).toBe(true);
});
it('returns false otherwise', () => {
const mockState: ApiKeysState = {
keys: mockKeys,
keysIncludingExpired: mockKeysIncludingExpired,
searchQuery: '',
hasFetched: true,
includeExpired: false,
};
const includeExpiredDisabled = getIncludeExpired(mockState);
expect(includeExpiredDisabled).toBe(false);
});
});
});