⚝
One Hat Cyber Team
⚝
Your IP:
216.73.217.4
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
plugins
/
View File Name :
pluginSettings.test.ts
import { getBackendSrv } from '@grafana/runtime'; import { getPluginSettings, clearPluginSettingsCache } from './pluginSettings'; jest.mock('@grafana/runtime', () => ({ getBackendSrv: jest.fn().mockReturnValue({ get: jest.fn(), }), })); describe('PluginSettings', () => { beforeEach(() => { jest.clearAllMocks(); clearPluginSettingsCache(); }); it('should fetch settings when cache is empty', async () => { // arrange const testPluginResponse = { name: 'TestPlugin', type: 'datasource', id: 'test-plugin', enabled: true, }; getBackendSrv().get = jest.fn().mockResolvedValue(testPluginResponse); const getRequestSpy = jest.spyOn(getBackendSrv(), 'get'); // act const response = await getPluginSettings('test'); // assert expect(response).toEqual(testPluginResponse); expect(getRequestSpy).toHaveBeenCalledTimes(1); expect(getRequestSpy).toHaveBeenCalledWith('/api/plugins/test/settings', undefined, undefined, undefined); }); it('should fetch settings from cache when it has a hit', async () => { // arrange const testPluginResponse = { name: 'TestPlugin', type: 'datasource', id: 'test-plugin', enabled: true, }; getBackendSrv().get = jest.fn().mockResolvedValue(testPluginResponse); const getRequestSpy = jest.spyOn(getBackendSrv(), 'get'); // act const response1 = await getPluginSettings('test'); const response2 = await getPluginSettings('test'); // assert expect(response1).toEqual(testPluginResponse); expect(response2).toEqual(testPluginResponse); expect(getRequestSpy).toHaveBeenCalledTimes(1); }); it('should refetch from backend when cache is cleared', async () => { // arrange const testPluginResponse = { name: 'TestPlugin', type: 'datasource', id: 'test-plugin', enabled: true, }; getBackendSrv().get = jest.fn().mockResolvedValue(testPluginResponse); const getRequestSpy = jest.spyOn(getBackendSrv(), 'get'); // act const response1 = await getPluginSettings('test'); await clearPluginSettingsCache('test'); const response2 = await getPluginSettings('test'); // assert expect(response1).toEqual(testPluginResponse); expect(response2).toEqual(testPluginResponse); expect(getRequestSpy).toHaveBeenCalledTimes(2); }); it('should fetch from cache when it is cleared for another plugin setting', async () => { // arrange const testPluginResponse = { name: 'TestPlugin', type: 'datasource', id: 'test-plugin', enabled: true, }; getBackendSrv().get = jest.fn().mockResolvedValue(testPluginResponse); const getRequestSpy = jest.spyOn(getBackendSrv(), 'get'); // act const response1 = await getPluginSettings('test'); await clearPluginSettingsCache('another-test'); const response2 = await getPluginSettings('test'); // assert expect(response1).toEqual(testPluginResponse); expect(response2).toEqual(testPluginResponse); expect(getRequestSpy).toHaveBeenCalledTimes(1); }); it('should clear all cache when no plugin id is provided to the clear function', async () => { // arrange const testPluginResponse = { name: 'TestPlugin', type: 'datasource', id: 'test-plugin', enabled: true, }; getBackendSrv().get = jest.fn().mockResolvedValue(testPluginResponse); const getRequestSpy = jest.spyOn(getBackendSrv(), 'get'); // act const response1 = await getPluginSettings('test'); await clearPluginSettingsCache(); const response2 = await getPluginSettings('test'); // assert expect(response1).toEqual(testPluginResponse); expect(response2).toEqual(testPluginResponse); expect(getRequestSpy).toHaveBeenCalledTimes(2); }); });