diff --git a/frontend/kolide/index.js b/frontend/kolide/index.js index 015a312c4f..11bce56e8f 100644 --- a/frontend/kolide/index.js +++ b/frontend/kolide/index.js @@ -64,6 +64,13 @@ class Kolide extends Base { .then(response => response.scheduled); } + destroyQuery = ({ id }) => { + const { QUERIES } = endpoints; + const endpoint = `${this.endpoint(QUERIES)}/${id}`; + + return this.authenticatedDelete(endpoint); + } + destroyPack = ({ id }) => { const { PACKS } = endpoints; const endpoint = `${this.endpoint(PACKS)}/${id}`; diff --git a/frontend/kolide/index.tests.js b/frontend/kolide/index.tests.js index 8eea91ff77..8906086682 100644 --- a/frontend/kolide/index.tests.js +++ b/frontend/kolide/index.tests.js @@ -4,7 +4,7 @@ import nock from 'nock'; import Kolide from 'kolide'; import helpers from 'kolide/helpers'; import mocks from 'test/mocks'; -import { userStub } from 'test/stubs'; +import { queryStub, userStub } from 'test/stubs'; const { invalidForgotPasswordRequest, @@ -13,6 +13,7 @@ const { validCreatePackRequest, validCreateQueryRequest, validCreateScheduledQueryRequest, + validDestroyQueryRequest, validDestroyPackRequest, validDestroyScheduledQueryRequest, validForgotPasswordRequest, @@ -117,8 +118,8 @@ describe('Kolide - API client', () => { }); }); - describe('#createQuery', () => { - it('calls the appropriate endpoint with the correct parameters', (done) => { + describe('queries', () => { + it('#createQuery', (done) => { const bearerToken = 'valid-bearer-token'; const description = 'query description'; const name = 'query name'; @@ -135,6 +136,60 @@ describe('Kolide - API client', () => { }) .catch(done); }); + + it('#destroyQuery', (done) => { + const bearerToken = 'valid-bearer-token'; + const request = validDestroyQueryRequest(bearerToken, queryStub); + + Kolide.setBearerToken(bearerToken); + Kolide.destroyQuery(queryStub) + .then(() => { + expect(request.isDone()).toEqual(true); + done(); + }) + .catch(done); + }); + + it('getQueries', (done) => { + const bearerToken = 'valid-bearer-token'; + const request = validGetQueriesRequest(bearerToken); + + Kolide.setBearerToken(bearerToken); + Kolide.getQueries() + .then(() => { + expect(request.isDone()).toEqual(true); + done(); + }) + .catch(done); + }); + + it('#getQuery', (done) => { + const bearerToken = 'valid-bearer-token'; + const queryID = 10; + const request = validGetQueryRequest(bearerToken, queryID); + + Kolide.setBearerToken(bearerToken); + Kolide.getQuery(queryID) + .then(() => { + expect(request.isDone()).toEqual(true); + done(); + }) + .catch(done); + }); + + it('#runQuery', (done) => { + const bearerToken = 'valid-bearer-token'; + const data = { query: 'select * from users', selected: { hosts: [], labels: [] } }; + const request = validRunQueryRequest(bearerToken, data); + + Kolide.setBearerToken(bearerToken); + Kolide.runQuery(data) + .then(() => { + expect(request.isDone()).toEqual(true); + done(); + }) + .catch(done); + }); }); describe('#getConfig', () => { @@ -181,37 +236,6 @@ describe('Kolide - API client', () => { }); }); - describe('#getQueries', () => { - it('calls the appropriate endpoint with the correct parameters', (done) => { - const bearerToken = 'valid-bearer-token'; - const request = validGetQueriesRequest(bearerToken); - - Kolide.setBearerToken(bearerToken); - Kolide.getQueries() - .then(() => { - expect(request.isDone()).toEqual(true); - done(); - }) - .catch(done); - }); - }); - - describe('#getQuery', () => { - it('calls the appropriate endpoint with the correct parameters', (done) => { - const bearerToken = 'valid-bearer-token'; - const queryID = 10; - const request = validGetQueryRequest(bearerToken, queryID); - - Kolide.setBearerToken(bearerToken); - Kolide.getQuery(queryID) - .then(() => { - expect(request.isDone()).toEqual(true); - done(); - }) - .catch(done); - }); - }); - describe('#createScheduledQuery', () => { it('calls the appropriate endpoint with the correct parameters', (done) => { const bearerToken = 'valid-bearer-token'; @@ -456,22 +480,6 @@ describe('Kolide - API client', () => { }); }); - describe('#runQuery', () => { - it('calls the appropriate endpoint with the correct parameters', (done) => { - const bearerToken = 'valid-bearer-token'; - const data = { query: 'select * from users', selected: { hosts: [], labels: [] } }; - const request = validRunQueryRequest(bearerToken, data); - - Kolide.setBearerToken(bearerToken); - Kolide.runQuery(data) - .then(() => { - expect(request.isDone()).toEqual(true); - done(); - }) - .catch(done); - }); - }); - describe('#setup', () => { it('calls the appropriate endpoint with the correct parameters', (done) => { const formData = { diff --git a/frontend/redux/nodes/entities/queries/config.js b/frontend/redux/nodes/entities/queries/config.js index 41a4b74081..0ae9203910 100644 --- a/frontend/redux/nodes/entities/queries/config.js +++ b/frontend/redux/nodes/entities/queries/config.js @@ -1,11 +1,12 @@ -import Kolide from '../../../../kolide'; -import reduxConfig from '../base/reduxConfig'; -import schemas from '../base/schemas'; +import Kolide from 'kolide'; +import reduxConfig from 'redux/nodes/entities/base/reduxConfig'; +import schemas from 'redux/nodes/entities/base/schemas'; const { QUERIES: schema } = schemas; export default reduxConfig({ createFunc: Kolide.createQuery, + destroyFunc: Kolide.destroyQuery, entityName: 'queries', loadAllFunc: Kolide.getQueries, loadFunc: Kolide.getQuery, diff --git a/frontend/test/mocks.js b/frontend/test/mocks.js index 8a23b622ac..2b78754d4e 100644 --- a/frontend/test/mocks.js +++ b/frontend/test/mocks.js @@ -64,6 +64,16 @@ export const validCreateScheduledQueryRequest = (bearerToken, formData) => { .reply(201, { scheduled_query: scheduledQueryStub }); }; +export const validDestroyQueryRequest = (bearerToken, query) => { + return nock('http://localhost:8080', { + reqHeaders: { + Authorization: `Bearer ${bearerToken}`, + }, + }) + .delete(`/api/v1/kolide/queries/${query.id}`) + .reply(200, {}); +}; + export const validDestroyPackRequest = (bearerToken, pack) => { return nock('http://localhost:8080', { reqHeaders: { @@ -358,6 +368,7 @@ export default { validCreatePackRequest, validCreateQueryRequest, validCreateScheduledQueryRequest, + validDestroyQueryRequest, validDestroyPackRequest, validDestroyScheduledQueryRequest, validForgotPasswordRequest,