Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IMN-891 supertest in catalog-process #1181

Open
wants to merge 4 commits into
base: IMN-896_Supertest-tenant
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion packages/catalog-process/src/routers/EServiceRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,6 @@ const eservicesRouter = (
authorizationMiddleware([ADMIN_ROLE, API_ROLE]),
async (req, res) => {
const ctx = fromAppContext(req.ctx);

try {
const clonedEserviceByDescriptor =
await catalogService.cloneDescriptor(
Expand Down
1 change: 1 addition & 0 deletions packages/catalog-process/src/services/catalogService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1325,6 +1325,7 @@ export function catalogServiceBuilder(
const descriptor = retrieveDescriptor(descriptorId, eservice);

const clonedInterfaceId = generateId<EServiceDocumentId>();

const clonedInterfacePath =
descriptor.interface !== undefined
? await fileManager.copy(
Expand Down
15 changes: 9 additions & 6 deletions packages/catalog-process/test/activateDescriptor.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
/* eslint-disable @typescript-eslint/no-floating-promises */
import { genericLogger } from "pagopa-interop-commons";
import { decodeProtobufPayload } from "pagopa-interop-commons-test/index.js";
import {
decodeProtobufPayload,
getMockAuthData,
} from "pagopa-interop-commons-test";
import {
Descriptor,
descriptorState,
Expand All @@ -19,12 +22,12 @@ import {
import {
addOneEService,
catalogService,
getMockAuthData,
readLastEserviceEvent,
getMockEService,
getMockDescriptor,
getMockDocument,
} from "./utils.js";
import { mockEserviceRouterRequest } from "./supertestSetup.js";

describe("activate descriptor", () => {
const mockEService = getMockEService();
Expand All @@ -41,11 +44,11 @@ describe("activate descriptor", () => {
descriptors: [descriptor],
};
await addOneEService(eservice);
await catalogService.activateDescriptor(eservice.id, descriptor.id, {

await mockEserviceRouterRequest.post({
path: "/eservices/:eServiceId/descriptors/:descriptorId/activate",
pathParams: { eServiceId: eservice.id, descriptorId: descriptor.id },
authData: getMockAuthData(eservice.producerId),
correlationId: generateId(),
serviceName: "",
logger: genericLogger,
});

const updatedDescriptor = {
Expand Down
22 changes: 14 additions & 8 deletions packages/catalog-process/test/archiveDescriptor.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion */
/* eslint-disable @typescript-eslint/no-floating-promises */
import { genericLogger } from "pagopa-interop-commons";
import { decodeProtobufPayload } from "pagopa-interop-commons-test/index.js";
import { genericLogger, userRoles } from "pagopa-interop-commons";
import {
decodeProtobufPayload,
getMockAuthData,
} from "pagopa-interop-commons-test";
import {
Descriptor,
descriptorState,
Expand All @@ -19,12 +22,12 @@ import {
import {
addOneEService,
catalogService,
getMockAuthData,
getMockDescriptor,
getMockDocument,
getMockEService,
readLastEserviceEvent,
} from "./utils.js";
import { mockEserviceRouterRequest } from "./supertestSetup.js";

describe("archive descriptor", () => {
const mockEService = getMockEService();
Expand All @@ -41,11 +44,14 @@ describe("archive descriptor", () => {
descriptors: [descriptor],
};
await addOneEService(eservice);
await catalogService.archiveDescriptor(eservice.id, descriptor.id, {
authData: getMockAuthData(eservice.producerId),
correlationId: generateId(),
serviceName: "",
logger: genericLogger,

await mockEserviceRouterRequest.post({
path: "/eservices/:eServiceId/descriptors/:descriptorId/archive",
pathParams: { eServiceId: eservice.id, descriptorId: descriptor.id },
authData: {
...getMockAuthData(eservice.producerId),
userRoles: [userRoles.INTERNAL_ROLE],
},
});

const writtenEvent = await readLastEserviceEvent(eservice.id);
Expand Down
56 changes: 33 additions & 23 deletions packages/catalog-process/test/cloneDescriptor.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion */
/* eslint-disable @typescript-eslint/no-floating-promises */
import { genericLogger, FileManagerError } from "pagopa-interop-commons";
import { decodeProtobufPayload } from "pagopa-interop-commons-test/index.js";
import {
decodeProtobufPayload,
getMockAuthData,
} from "pagopa-interop-commons-test";
import {
Descriptor,
descriptorState,
Expand All @@ -12,6 +15,7 @@ import {
toEServiceV2,
generateId,
operationForbidden,
fromEServiceV2,
} from "pagopa-interop-models";
import { beforeAll, vi, afterAll, expect, describe, it } from "vitest";
import { formatDateddMMyyyyHHmmss } from "pagopa-interop-commons";
Expand All @@ -21,16 +25,17 @@ import {
eServiceDescriptorNotFound,
} from "../src/model/domain/errors.js";
import { config } from "../src/config/config.js";
import { eServiceToApiEService } from "../src/model/domain/apiConverter.js";
import {
fileManager,
addOneEService,
catalogService,
getMockAuthData,
readLastEserviceEvent,
getMockEService,
getMockDescriptor,
getMockDocument,
} from "./utils.js";
import { mockEserviceRouterRequest } from "./supertestSetup.js";

describe("clone descriptor", () => {
const mockEService = getMockEService();
Expand All @@ -46,6 +51,11 @@ describe("clone descriptor", () => {
it("should write on event-store for the cloning of a descriptor, and clone the descriptor docs and interface files", async () => {
vi.spyOn(fileManager, "copy");

const interfaceDocument = {
...mockDocument,
name: `${mockDocument.name}_interface`,
path: `${config.eserviceDocumentsPath}/${mockDocument.id}/${mockDocument.name}_interface`,
};
const document1 = {
...mockDocument,
name: `${mockDocument.name}_1`,
Expand All @@ -56,11 +66,6 @@ describe("clone descriptor", () => {
name: `${mockDocument.name}_2`,
path: `${config.eserviceDocumentsPath}/${mockDocument.id}/${mockDocument.name}_2`,
};
const interfaceDocument = {
...mockDocument,
name: `${mockDocument.name}_interface`,
path: `${config.eserviceDocumentsPath}/${mockDocument.id}/${mockDocument.name}_interface`,
};

const descriptor: Descriptor = {
...mockDescriptor,
Expand Down Expand Up @@ -117,18 +122,16 @@ describe("clone descriptor", () => {
).toContain(document2.path);

const cloneTimestamp = new Date();
const newEService = await catalogService.cloneDescriptor(
eservice.id,
descriptor.id,
{
authData: getMockAuthData(eservice.producerId),
correlationId: generateId(),
serviceName: "",
logger: genericLogger,
}
);

const writtenEvent = await readLastEserviceEvent(newEService.id);
const newEService = await mockEserviceRouterRequest.post({
path: "/eservices/:eServiceId/descriptors/:descriptorId/clone",
pathParams: { eServiceId: eservice.id, descriptorId: descriptor.id },
authData: getMockAuthData(eservice.producerId),
});

const writtenEvent = await readLastEserviceEvent(
unsafeBrandId(newEService.id)
);
expect(writtenEvent.stream_id).toBe(newEService.id);
expect(writtenEvent.version).toBe("0");
expect(writtenEvent.type).toBe("EServiceCloned");
Expand All @@ -146,6 +149,7 @@ describe("clone descriptor", () => {
),
path: writtenPayload.eservice!.descriptors[0].interface!.path,
};

const expectedDocument1: Document = {
...document1,
id: unsafeBrandId(writtenPayload.eservice!.descriptors[0].docs[0].id),
Expand Down Expand Up @@ -183,33 +187,34 @@ describe("clone descriptor", () => {
descriptors: [expectedDescriptor],
createdAt: new Date(Number(writtenPayload.eservice?.createdAt)),
};
expect(writtenPayload.eservice).toEqual(toEServiceV2(expectedEService));
expect(writtenPayload.eservice).toEqual(toEServiceV2(newEService));

expect(fileManager.copy).toHaveBeenCalledWith(
config.s3Bucket,
interfaceDocument.path,
config.eserviceDocumentsPath,
expectedInterface.id,
expectedInterface.name,
genericLogger
expect.anything()
);

expect(fileManager.copy).toHaveBeenCalledWith(
config.s3Bucket,
document1.path,
config.eserviceDocumentsPath,
expectedDocument1.id,
expectedDocument1.name,
genericLogger
expect.anything()
);

expect(fileManager.copy).toHaveBeenCalledWith(
config.s3Bucket,
document2.path,
config.eserviceDocumentsPath,
expectedDocument2.id,
expectedDocument2.name,
genericLogger
expect.anything()
);

expect(
await fileManager.listFiles(config.s3Bucket, genericLogger)
).toContain(expectedInterface.path);
Expand All @@ -219,6 +224,11 @@ describe("clone descriptor", () => {
expect(
await fileManager.listFiles(config.s3Bucket, genericLogger)
).toContain(expectedDocument2.path);

expect(writtenPayload.eservice).toEqual(toEServiceV2(expectedEService));
expect(
eServiceToApiEService(fromEServiceV2(writtenPayload.eservice!))
).toEqual(newEService);
});
it("should fail if one of the file copy fails", async () => {
const descriptor: Descriptor = {
Expand Down
51 changes: 21 additions & 30 deletions packages/catalog-process/test/createDescriptor.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { genericLogger } from "pagopa-interop-commons";
import {
decodeProtobufPayload,
readEventByStreamIdAndVersion,
getMockAuthData,
} from "pagopa-interop-commons-test";
import {
Attribute,
Expand All @@ -15,6 +16,7 @@ import {
descriptorState,
operationForbidden,
EServiceDescriptorDocumentAddedV2,
unsafeBrandId,
} from "pagopa-interop-models";
import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
import { catalogApi } from "pagopa-interop-api-clients";
Expand All @@ -28,14 +30,14 @@ import {
addOneAttribute,
addOneEService,
catalogService,
getMockAuthData,
readLastEserviceEvent,
getMockDescriptor,
getMockDocument,
getMockEService,
buildCreateDescriptorSeed,
postgresDB,
} from "./utils.js";
import { mockEserviceRouterRequest } from "./supertestSetup.js";

describe("create descriptor", async () => {
beforeAll(() => {
Expand Down Expand Up @@ -73,16 +75,14 @@ describe("create descriptor", async () => {
descriptors: [],
};
await addOneEService(eservice);
const returnedDescriptor = await catalogService.createDescriptor(
eservice.id,
descriptorSeed,
{
authData: getMockAuthData(eservice.producerId),
correlationId: generateId(),
serviceName: "",
logger: genericLogger,
}
);

const returnedDescriptor = await mockEserviceRouterRequest.post({
path: "/eservices/:eServiceId/descriptors",
pathParams: { eServiceId: eservice.id },
body: { ...descriptorSeed },
authData: getMockAuthData(eservice.producerId),
});

const newDescriptorId = returnedDescriptor.id;
const writtenEvent = await readLastEserviceEvent(eservice.id);
expect(writtenEvent).toMatchObject({
Expand All @@ -105,7 +105,7 @@ describe("create descriptor", async () => {
createdAt: new Date(
Number(writtenPayload.eservice!.descriptors[0]!.createdAt)
),
id: newDescriptorId,
id: unsafeBrandId(newDescriptorId),
serverUrls: [],
attributes: {
certified: [],
Expand All @@ -122,13 +122,7 @@ describe("create descriptor", async () => {
descriptorId: newDescriptorId,
eservice: expectedEservice,
});
expect(writtenPayload).toEqual({
descriptorId: newDescriptorId,
eservice: toEServiceV2({
...eservice,
descriptors: [returnedDescriptor],
}),
});
expect(writtenPayload.eservice).toEqual(expectedEservice);
});

it("should write on event-store for the creation of a descriptor (eservice already had one descriptor)", async () => {
Expand Down Expand Up @@ -166,16 +160,13 @@ describe("create descriptor", async () => {
},
};

const returnedDescriptor = await catalogService.createDescriptor(
eservice.id,
descriptorSeed,
{
authData: getMockAuthData(eservice.producerId),
correlationId: generateId(),
serviceName: "",
logger: genericLogger,
}
);
const returnedDescriptor = await mockEserviceRouterRequest.post({
path: "/eservices/:eServiceId/descriptors",
pathParams: { eServiceId: eservice.id },
body: { ...descriptorSeed },
authData: getMockAuthData(eservice.producerId),
});

const newDescriptorId = returnedDescriptor.id;
const descriptorCreationEvent = await readEventByStreamIdAndVersion(
eservice.id,
Expand Down Expand Up @@ -211,7 +202,7 @@ describe("create descriptor", async () => {
...mockDescriptor,
version: "2",
createdAt: new Date(),
id: newDescriptorId,
id: unsafeBrandId(newDescriptorId),
serverUrls: [],
attributes: {
certified: [],
Expand Down
Loading