Skip to content

Commit

Permalink
[FTR](data views) update common serverless api tests to use api keys (#…
Browse files Browse the repository at this point in the history
…183386)

Use api keys for api calls, to act as the user, within:
`x-pack/test_serverless/api_integration/test_suites/common/data_views/`

Contributes to: #180834

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
  • Loading branch information
wayneseymour and kibanamachine committed May 24, 2024
1 parent e754403 commit 989549c
Show file tree
Hide file tree
Showing 32 changed files with 1,037 additions and 719 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,32 @@
import expect from '@kbn/expect';
import type { FtrProviderContext } from '../../../../../ftr_provider_context';
import { configArray } from '../../constants';
import { InternalRequestHeader, RoleCredentials } from '../../../../../../shared/services';

export default function ({ getService }: FtrProviderContext) {
const supertest = getService('supertest');
const esArchiver = getService('esArchiver');
const svlCommonApi = getService('svlCommonApi');
const svlUserManager = getService('svlUserManager');
const supertestWithoutAuth = getService('supertestWithoutAuth');
let roleAuthc: RoleCredentials;
let internalReqHeader: InternalRequestHeader;

describe('main', () => {
before(async () => {
roleAuthc = await svlUserManager.createApiKeyForRole('admin');
internalReqHeader = svlCommonApi.getInternalRequestHeader();
});
after(async () => {
await svlUserManager.invalidateApiKeyForRole(roleAuthc);
});
configArray.forEach((config) => {
describe(config.name, () => {
it('can create an index_pattern with just a title', async () => {
const title = `foo-${Date.now()}-${Math.random()}*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {
title,
Expand All @@ -33,10 +45,10 @@ export default function ({ getService }: FtrProviderContext) {

it('returns back the created index_pattern object', async () => {
const title = `foo-${Date.now()}-${Math.random()}*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {
title,
Expand All @@ -52,10 +64,10 @@ export default function ({ getService }: FtrProviderContext) {
it('can specify primitive optional attributes when creating an index pattern', async () => {
const title = `foo-${Date.now()}-${Math.random()}*`;
const id = `test-id-${Date.now()}-${Math.random()}*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {
title,
Expand All @@ -74,10 +86,10 @@ export default function ({ getService }: FtrProviderContext) {

it('can specify optional sourceFilters attribute when creating an index pattern', async () => {
const title = `foo-${Date.now()}-${Math.random()}*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {
title,
Expand Down Expand Up @@ -109,10 +121,10 @@ export default function ({ getService }: FtrProviderContext) {

it('can specify optional fields attribute when creating an index pattern', async () => {
const title = `basic_index*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
override: true,
[config.serviceKey]: {
Expand Down Expand Up @@ -140,10 +152,10 @@ export default function ({ getService }: FtrProviderContext) {
// TODO: Scripted fields code dropped since they are not supported in Serverless
it('can add fields created from es index', async () => {
const title = `basic_index*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
override: true,
[config.serviceKey]: {
Expand Down Expand Up @@ -172,10 +184,10 @@ export default function ({ getService }: FtrProviderContext) {

it('can add runtime fields', async () => {
const title = `basic_index*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
override: true,
[config.serviceKey]: {
Expand Down Expand Up @@ -205,10 +217,10 @@ export default function ({ getService }: FtrProviderContext) {

it('can specify optional typeMeta attribute when creating an index pattern', async () => {
const title = `foo-${Date.now()}-${Math.random()}*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {
title,
Expand All @@ -221,10 +233,10 @@ export default function ({ getService }: FtrProviderContext) {

it('can specify optional fieldFormats attribute when creating an index pattern', async () => {
const title = `foo-${Date.now()}-${Math.random()}*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {
title,
Expand All @@ -244,10 +256,10 @@ export default function ({ getService }: FtrProviderContext) {

it('can specify optional fieldFormats attribute when creating an index pattern', async () => {
const title = `foo-${Date.now()}-${Math.random()}*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {
title,
Expand All @@ -268,19 +280,19 @@ export default function ({ getService }: FtrProviderContext) {
describe('when creating index pattern with existing name', () => {
it('returns error, by default', async () => {
const title = `foo-${Date.now()}-${Math.random()}*`;
const response1 = await supertest
const response1 = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {
title,
},
});
const response2 = await supertest
const response2 = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {
title,
Expand All @@ -293,20 +305,20 @@ export default function ({ getService }: FtrProviderContext) {

it('succeeds, override flag is set', async () => {
const title = `foo-${Date.now()}-${Math.random()}*`;
const response1 = await supertest
const response1 = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {
title,
timeFieldName: 'foo',
},
});
const response2 = await supertest
const response2 = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
override: true,
[config.serviceKey]: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,30 @@
import expect from '@kbn/expect';
import type { FtrProviderContext } from '../../../../../ftr_provider_context';
import { configArray } from '../../constants';
import { InternalRequestHeader, RoleCredentials } from '../../../../../../shared/services';

export default function ({ getService }: FtrProviderContext) {
const supertest = getService('supertest');
const svlCommonApi = getService('svlCommonApi');
const svlUserManager = getService('svlUserManager');
const supertestWithoutAuth = getService('supertestWithoutAuth');
let roleAuthc: RoleCredentials;
let internalReqHeader: InternalRequestHeader;

describe('validation', () => {
before(async () => {
roleAuthc = await svlUserManager.createApiKeyForRole('admin');
internalReqHeader = svlCommonApi.getInternalRequestHeader();
});
after(async () => {
await svlUserManager.invalidateApiKeyForRole(roleAuthc);
});
configArray.forEach((config) => {
describe(config.name, () => {
it('returns error when index_pattern object is not provided', async () => {
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader());
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader);

expect(response.status).to.be(400);
expect(response.body.statusCode).to.be(400);
Expand All @@ -30,10 +41,10 @@ export default function ({ getService }: FtrProviderContext) {
});

it('returns error on empty index_pattern object', async () => {
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
[config.serviceKey]: {},
});
Expand All @@ -46,10 +57,10 @@ export default function ({ getService }: FtrProviderContext) {
});

it('returns error when "override" parameter is not a boolean', async () => {
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
override: 123,
[config.serviceKey]: {
Expand All @@ -65,10 +76,10 @@ export default function ({ getService }: FtrProviderContext) {
});

it('returns error when "refresh_fields" parameter is not a boolean', async () => {
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
refresh_fields: 123,
[config.serviceKey]: {
Expand All @@ -85,10 +96,10 @@ export default function ({ getService }: FtrProviderContext) {

it('returns an error when unknown runtime field type', async () => {
const title = `basic_index*`;
const response = await supertest
const response = await supertestWithoutAuth
.post(config.path)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader())
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader)
.send({
override: true,
[config.serviceKey]: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,41 @@
import expect from '@kbn/expect';
import type { FtrProviderContext } from '../../../../../ftr_provider_context';
import { configArray } from '../../constants';
import { InternalRequestHeader, RoleCredentials } from '../../../../../../shared/services';

export default function ({ getService }: FtrProviderContext) {
const supertest = getService('supertest');
const svlCommonApi = getService('svlCommonApi');
const svlUserManager = getService('svlUserManager');
const supertestWithoutAuth = getService('supertestWithoutAuth');
let roleAuthc: RoleCredentials;
let internalReqHeader: InternalRequestHeader;

describe('errors', () => {
before(async () => {
roleAuthc = await svlUserManager.createApiKeyForRole('admin');
internalReqHeader = svlCommonApi.getInternalRequestHeader();
});
after(async () => {
await svlUserManager.invalidateApiKeyForRole(roleAuthc);
});
configArray.forEach((config) => {
describe(config.name, () => {
it('returns 404 error on non-existing index_pattern', async () => {
const id = `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-${Date.now()}`;
const response = await supertest
const response = await supertestWithoutAuth
.delete(`${config.path}/${id}`)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader());
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader);

expect(response.status).to.be(404);
});

it('returns error when ID is too long', async () => {
const id = `xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx`;
const response = await supertest
const response = await supertestWithoutAuth
.delete(`${config.path}/${id}`)
// TODO: API requests in Serverless require internal request headers
.set(svlCommonApi.getInternalRequestHeader());
.set(internalReqHeader)
.set(roleAuthc.apiKeyHeader);

expect(response.status).to.be(400);
expect(response.body.message).to.be(
Expand Down
Loading

0 comments on commit 989549c

Please sign in to comment.