|
|
@@ -0,0 +1,98 @@
|
|
|
+import LokiDatasource from './datasource';
|
|
|
+
|
|
|
+describe('LokiDatasource', () => {
|
|
|
+ const instanceSettings = {
|
|
|
+ url: 'myloggingurl',
|
|
|
+ };
|
|
|
+
|
|
|
+ describe('when performing testDataSource', () => {
|
|
|
+ let ds;
|
|
|
+ let result;
|
|
|
+
|
|
|
+ describe('and call succeeds', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ const backendSrv = {
|
|
|
+ async datasourceRequest() {
|
|
|
+ return Promise.resolve({
|
|
|
+ status: 200,
|
|
|
+ data: {
|
|
|
+ values: ['avalue'],
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ };
|
|
|
+ ds = new LokiDatasource(instanceSettings, backendSrv, {});
|
|
|
+ result = await ds.testDatasource();
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return successfully', () => {
|
|
|
+ expect(result.status).toBe('success');
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ describe('and call fails with 401 error', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ const backendSrv = {
|
|
|
+ async datasourceRequest() {
|
|
|
+ return Promise.reject({
|
|
|
+ statusText: 'Unauthorized',
|
|
|
+ status: 401,
|
|
|
+ data: {
|
|
|
+ message: 'Unauthorized',
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ };
|
|
|
+ ds = new LokiDatasource(instanceSettings, backendSrv, {});
|
|
|
+ result = await ds.testDatasource();
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return error status and a detailed error message', () => {
|
|
|
+ expect(result.status).toEqual('error');
|
|
|
+ expect(result.message).toBe('Loki: Unauthorized. 401. Unauthorized');
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ describe('and call fails with 404 error', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ const backendSrv = {
|
|
|
+ async datasourceRequest() {
|
|
|
+ return Promise.reject({
|
|
|
+ statusText: 'Not found',
|
|
|
+ status: 404,
|
|
|
+ data: '404 page not found',
|
|
|
+ });
|
|
|
+ },
|
|
|
+ };
|
|
|
+ ds = new LokiDatasource(instanceSettings, backendSrv, {});
|
|
|
+ result = await ds.testDatasource();
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return error status and a detailed error message', () => {
|
|
|
+ expect(result.status).toEqual('error');
|
|
|
+ expect(result.message).toBe('Loki: Not found. 404. 404 page not found');
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ describe('and call fails with 502 error', () => {
|
|
|
+ beforeEach(async () => {
|
|
|
+ const backendSrv = {
|
|
|
+ async datasourceRequest() {
|
|
|
+ return Promise.reject({
|
|
|
+ statusText: 'Bad Gateway',
|
|
|
+ status: 502,
|
|
|
+ data: '',
|
|
|
+ });
|
|
|
+ },
|
|
|
+ };
|
|
|
+ ds = new LokiDatasource(instanceSettings, backendSrv, {});
|
|
|
+ result = await ds.testDatasource();
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return error status and a detailed error message', () => {
|
|
|
+ expect(result.status).toEqual('error');
|
|
|
+ expect(result.message).toBe('Loki: Bad Gateway. 502');
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+});
|