Adds API client to destroy queries (#784)

This commit is contained in:
Mike Stone 2017-01-06 15:26:58 -05:00 committed by GitHub
parent 8647d9c669
commit a9cfd5b641
4 changed files with 80 additions and 53 deletions

View file

@ -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}`;

View file

@ -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 = {

View file

@ -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,

View file

@ -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,