chore: synchronize repository state after template group sample split
- Staged deletion of 'docs/sample_import_template_groups_mutation.graphql'. - Added untracked 'docs/sample_import_host_template_groups_mutation.graphql'. - Committed updates to 'src/test/template_integration.test.ts'.
This commit is contained in:
parent
b3f84b9cd3
commit
59815636ea
2 changed files with 39 additions and 15 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
### Mutation
|
### Mutation
|
||||||
Use this mutation to import template groups.
|
Use this mutation to import template groups for hosts and templates.
|
||||||
|
|
||||||
```graphql
|
```graphql
|
||||||
mutation ImportTemplateGroups($templateGroups: [CreateTemplateGroup!]!) {
|
mutation ImportTemplateGroups($templateGroups: [CreateTemplateGroup!]!) {
|
||||||
|
|
@ -17,15 +17,11 @@ mutation ImportTemplateGroups($templateGroups: [CreateTemplateGroup!]!) {
|
||||||
```
|
```
|
||||||
|
|
||||||
### Variables
|
### Variables
|
||||||
This sample data is based on the `template_groups` from `src/testdata/templates/zbx_default_templates_vcr.yaml`.
|
This sample data is based on the `template_groups` from `src/testdata/templates/zbx_default_templates_vcr.yaml`, excluding the permission groups.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"templateGroups": [
|
"templateGroups": [
|
||||||
{
|
|
||||||
"uuid": "43aab460fe444f18886b19948413b7e3",
|
|
||||||
"groupName": "Permissions/ConstructionSite"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"uuid": "376524057e094c07aaa0cf7f524849dc",
|
"uuid": "376524057e094c07aaa0cf7f524849dc",
|
||||||
"groupName": "Templates/Roadwork/Controller"
|
"groupName": "Templates/Roadwork/Controller"
|
||||||
|
|
@ -136,12 +136,12 @@ describe("Template Integration Tests", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Import and Export template groups comparison", async () => {
|
test("Import and Export template groups comparison", async () => {
|
||||||
// 1. Import
|
// 1. Import (Host Template Groups)
|
||||||
const importSample = readFileSync(join(process.cwd(), 'docs', 'sample_import_template_groups_mutation.graphql'), 'utf-8').replace(/\r\n/g, '\n');
|
const importSample = readFileSync(join(process.cwd(), 'docs', 'sample_import_host_template_groups_mutation.graphql'), 'utf-8').replace(/\r\n/g, '\n');
|
||||||
const importMutation = importSample.match(/```graphql\n([\s\S]*?)\n```/)![1];
|
const importMutation = importSample.match(/```graphql\n([\s\S]*?)\n```/)![1];
|
||||||
const importVariables = JSON.parse(importSample.match(/```json\n([\s\S]*?)\n```/)![1]);
|
const importVariables = JSON.parse(importSample.match(/```json\n([\s\S]*?)\n```/)![1]);
|
||||||
|
|
||||||
// Mock for import (8 groups in sample)
|
// Mock for import
|
||||||
for (const group of importVariables.templateGroups) {
|
for (const group of importVariables.templateGroups) {
|
||||||
// Mock lookup (not found)
|
// Mock lookup (not found)
|
||||||
(zabbixAPI.post as jest.Mock).mockResolvedValueOnce([]);
|
(zabbixAPI.post as jest.Mock).mockResolvedValueOnce([]);
|
||||||
|
|
@ -163,13 +163,41 @@ describe("Template Integration Tests", () => {
|
||||||
expect(importResult.errors).toBeUndefined();
|
expect(importResult.errors).toBeUndefined();
|
||||||
expect(importResult.data.importTemplateGroups).toHaveLength(importVariables.templateGroups.length);
|
expect(importResult.data.importTemplateGroups).toHaveLength(importVariables.templateGroups.length);
|
||||||
|
|
||||||
// 2. Export (Query)
|
// 2. Import (Permissions Template Groups)
|
||||||
|
const permImportSample = readFileSync(join(process.cwd(), 'docs', 'sample_import_permissions_template_groups_mutation.graphql'), 'utf-8').replace(/\r\n/g, '\n');
|
||||||
|
const permImportMutation = permImportSample.match(/```graphql\n([\s\S]*?)\n```/)![1];
|
||||||
|
const permImportVariables = JSON.parse(permImportSample.match(/```json\n([\s\S]*?)\n```/)![1]);
|
||||||
|
|
||||||
|
// Mock for import
|
||||||
|
for (const group of permImportVariables.templateGroups) {
|
||||||
|
(zabbixAPI.post as jest.Mock).mockResolvedValueOnce([]);
|
||||||
|
const mockGroupId = Math.floor(Math.random() * 1000).toString();
|
||||||
|
(zabbixAPI.post as jest.Mock).mockResolvedValueOnce({ groupids: [mockGroupId] });
|
||||||
|
}
|
||||||
|
|
||||||
|
const permImportResponse = await server.executeOperation({
|
||||||
|
query: permImportMutation,
|
||||||
|
variables: permImportVariables,
|
||||||
|
}, {
|
||||||
|
contextValue: { zabbixAuthToken: 'test-token' }
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(permImportResponse.body.kind).toBe('single');
|
||||||
|
// @ts-ignore
|
||||||
|
const permImportResult = permImportResponse.body.singleResult;
|
||||||
|
expect(permImportResult.errors).toBeUndefined();
|
||||||
|
expect(permImportResult.data.importTemplateGroups).toHaveLength(permImportVariables.templateGroups.length);
|
||||||
|
|
||||||
|
// 3. Export (Query)
|
||||||
const querySample = readFileSync(join(process.cwd(), 'docs', 'sample_all_template_groups_query.graphql'), 'utf-8').replace(/\r\n/g, '\n');
|
const querySample = readFileSync(join(process.cwd(), 'docs', 'sample_all_template_groups_query.graphql'), 'utf-8').replace(/\r\n/g, '\n');
|
||||||
const query = querySample.match(/```graphql\n([\s\S]*?)\n```/)![1];
|
const query = querySample.match(/```graphql\n([\s\S]*?)\n```/)![1];
|
||||||
const queryVariables = JSON.parse(querySample.match(/```json\n([\s\S]*?)\n```/)![1]);
|
const queryVariables = JSON.parse(querySample.match(/```json\n([\s\S]*?)\n```/)![1]);
|
||||||
|
|
||||||
|
// Combine all groups for mock query response
|
||||||
|
const allGroups = [...importVariables.templateGroups, ...permImportVariables.templateGroups];
|
||||||
|
|
||||||
// Mock for query
|
// Mock for query
|
||||||
const mockGroupsResponse = importVariables.templateGroups.map((g: any, index: number) => ({
|
const mockGroupsResponse = allGroups.map((g: any, index: number) => ({
|
||||||
groupid: (index + 1000).toString(),
|
groupid: (index + 1000).toString(),
|
||||||
name: g.groupName
|
name: g.groupName
|
||||||
}));
|
}));
|
||||||
|
|
@ -186,14 +214,14 @@ describe("Template Integration Tests", () => {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const queryResult = queryResponse.body.singleResult;
|
const queryResult = queryResponse.body.singleResult;
|
||||||
expect(queryResult.errors).toBeUndefined();
|
expect(queryResult.errors).toBeUndefined();
|
||||||
expect(queryResult.data.allTemplateGroups).toHaveLength(importVariables.templateGroups.length);
|
expect(queryResult.data.allTemplateGroups).toHaveLength(allGroups.length);
|
||||||
|
|
||||||
// Verify names match
|
// Verify names match
|
||||||
const importedNames = importVariables.templateGroups.map((g: any) => g.groupName).sort();
|
const importedNames = allGroups.map((g: any) => g.groupName).sort();
|
||||||
const exportedNames = queryResult.data.allTemplateGroups.map((g: any) => g.name).sort();
|
const exportedNames = queryResult.data.allTemplateGroups.map((g: any) => g.name).sort();
|
||||||
expect(exportedNames).toEqual(importedNames);
|
expect(exportedNames).toEqual(importedNames);
|
||||||
|
|
||||||
// 3. Delete Template Groups
|
// 4. Delete Template Groups
|
||||||
const groupidsToDelete = queryResult.data.allTemplateGroups.map((g: any) => parseInt(g.groupid));
|
const groupidsToDelete = queryResult.data.allTemplateGroups.map((g: any) => parseInt(g.groupid));
|
||||||
// Mock for query (for name_pattern)
|
// Mock for query (for name_pattern)
|
||||||
(zabbixAPI.post as jest.Mock).mockResolvedValueOnce(queryResult.data.allTemplateGroups.map((g: any) => ({ groupid: g.groupid, name: g.name })));
|
(zabbixAPI.post as jest.Mock).mockResolvedValueOnce(queryResult.data.allTemplateGroups.map((g: any) => ({ groupid: g.groupid, name: g.name })));
|
||||||
|
|
@ -214,7 +242,7 @@ describe("Template Integration Tests", () => {
|
||||||
|
|
||||||
const deleteResponse = await server.executeOperation({
|
const deleteResponse = await server.executeOperation({
|
||||||
query: deleteMutation,
|
query: deleteMutation,
|
||||||
variables: { name_pattern: "Templates/Roadwork/%" },
|
variables: { name_pattern: "%" },
|
||||||
}, {
|
}, {
|
||||||
contextValue: { zabbixAuthToken: 'test-token' }
|
contextValue: { zabbixAuthToken: 'test-token' }
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue