Skip to content

Commit

Permalink
feat(deployment): improves sequelize error logging
Browse files Browse the repository at this point in the history
also mocks Lease in deployment settings spec to avoid errors related to missing chain db migrations

refs #714
  • Loading branch information
ygrishajev committed Feb 4, 2025
1 parent 30c4261 commit 42510a8
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import type { Event } from "@sentry/types";
import type { Context, Env } from "hono";
import { isHttpError } from "http-errors";
import omit from "lodash/omit";
import { DatabaseError } from "sequelize";
import { singleton } from "tsyringe";
import { ZodError } from "zod";

Expand All @@ -26,7 +27,7 @@ export class HonoErrorHandlerService {
}

async handle<E extends Env = any>(error: Error, c: Context<E>): Promise<Response> {

Check warning on line 29 in apps/api/src/core/services/hono-error-handler/hono-error-handler.service.ts

View workflow job for this annotation

GitHub Actions / validate-n-build

Unexpected any. Specify a different type
this.logger.error(error);
this.logger.error(this.sequelizeErrorToObj(error));

if (isHttpError(error)) {
const { name } = error.constructor;
Expand Down Expand Up @@ -112,4 +113,17 @@ export class HonoErrorHandlerService {
return undefined;
}
}

private sequelizeErrorToObj(error: unknown) {
if (error instanceof DatabaseError) {
return {
name: error.name,
message: error.message,
sql: error.sql,
stack: error.stack
};
}

return error;
}
}
14 changes: 13 additions & 1 deletion apps/api/test/functional/deployment-setting.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ import { container } from "tsyringe";

import { app } from "@src/app";
import { DeploymentSettingRepository } from "@src/deployment/repositories/deployment-setting/deployment-setting.repository";
import { LeaseRepository } from "@src/deployment/repositories/lease/lease.repository";

import { DrainingDeploymentSeeder } from "@test/seeders/draining-deployment.seeder";
import { DbTestingService } from "@test/services/db-testing.service";
import { WalletTestingService } from "@test/services/wallet-testing.service";

Expand All @@ -13,9 +15,15 @@ describe("Deployment Settings", () => {
const dbService = container.resolve(DbTestingService);
const walletService = new WalletTestingService(app);
const deploymentSettingRepository = container.resolve(DeploymentSettingRepository);
const leaseRepository = container.resolve(LeaseRepository);

beforeEach(async () => {
beforeEach(() => {
jest.spyOn(leaseRepository, "findOneByDseqAndOwner").mockResolvedValue(DrainingDeploymentSeeder.create());
});

afterEach(async () => {
await dbService.cleanAll();
jest.restoreAllMocks();
});

describe("GET /v1/deployment-settings/{userId}/{dseq}", () => {
Expand Down Expand Up @@ -94,6 +102,7 @@ describe("Deployment Settings", () => {
topUpFrequencyMs: expect.any(Number)
}
});
expect(leaseRepository.findOneByDseqAndOwner).toHaveBeenCalledWith(dseq, user.id);
});
});

Expand Down Expand Up @@ -177,6 +186,7 @@ describe("Deployment Settings", () => {
dseq,
autoTopUpEnabled: true
});
expect(leaseRepository.findOneByDseqAndOwner).toHaveBeenCalledWith(dseq, user.id);
});
});

Expand Down Expand Up @@ -229,6 +239,7 @@ describe("Deployment Settings", () => {
dseq,
autoTopUpEnabled: true
});
expect(leaseRepository.findOneByDseqAndOwner).toHaveBeenCalledWith(dseq, user.id);
});

it("should return 404 when updating other user's deployment settings", async () => {
Expand Down Expand Up @@ -301,6 +312,7 @@ describe("Deployment Settings", () => {
dseq,
autoTopUpEnabled: true
});
expect(leaseRepository.findOneByDseqAndOwner).toHaveBeenCalledWith(dseq, user.id);
});
});
});

0 comments on commit 42510a8

Please sign in to comment.