diff --git a/apps/dokploy/__test__/deploy/application.real.test.ts b/apps/dokploy/__test__/deploy/application.real.test.ts index c5dfe7caa..0c7929b2e 100644 --- a/apps/dokploy/__test__/deploy/application.real.test.ts +++ b/apps/dokploy/__test__/deploy/application.real.test.ts @@ -84,15 +84,6 @@ vi.mock("@dokploy/server/services/rollbacks", () => ({ createRollback: vi.fn(), })); -vi.mock("@dokploy/server/services/patch", async (importOriginal) => { - const actual = - await importOriginal(); - return { - ...actual, - findPatchesByEntityId: vi.fn().mockResolvedValue([]), - }; -}); - // NOT mocked (executed for real): // - execAsync // - cloneGitRepository @@ -104,9 +95,6 @@ import * as adminService from "@dokploy/server/services/admin"; import * as applicationService from "@dokploy/server/services/application"; import { deployApplication } from "@dokploy/server/services/application"; import * as deploymentService from "@dokploy/server/services/deployment"; -import { mkdtemp, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; -import { join } from "node:path"; const createMockApplication = ( overrides: Partial = {}, @@ -503,101 +491,6 @@ describe( }, REAL_TEST_TIMEOUT, ); - it( - "should REALLY apply patches from database during deployment", - async () => { - // 1. Setup local temporary git repo - const tempRepo = await mkdtemp(join(tmpdir(), "real-patch-repo-")); - // Helper for local git commands - const execLocal = async (cmd: string) => - execAsync(cmd, { cwd: tempRepo }); - - await execLocal("git init"); - await execLocal("git config user.email 'test@dokploy.com'"); - await execLocal("git config user.name 'Dokploy Test'"); - - // Create a simple Dockerfile and server script - // We use a simple python server to verify output - await writeFile(join(tempRepo, "app.py"), "print('Original App')\n"); - await writeFile( - join(tempRepo, "Dockerfile"), - 'FROM python:3.9-slim\nCOPY app.py .\nCMD ["python", "app.py"]\n', - ); - - await execLocal("git add ."); - await execLocal("git commit -m 'Initial commit'"); - // Ensure master/main branch exists (git init might create master or main depending on config) - // We force create a branch named 'main' to be consistent - await execLocal("git checkout -b main || git checkout main"); - - // 2. Mock Application to use this local repo - const patchAppName = `real-patch-app-${Date.now()}`; - const patchApp = createMockApplication({ - appName: patchAppName, - buildType: "dockerfile", - customGitUrl: `file://${tempRepo}`, - customGitBranch: "main", - dockerfile: "Dockerfile", - }); - currentAppName = patchAppName; - allTestAppNames.push(patchAppName); - - // Setup standard mocks - vi.mocked(db.query.applications.findFirst).mockResolvedValue( - patchApp as any, - ); - vi.mocked(applicationService.findApplicationById).mockResolvedValue( - patchApp as any, - ); - - // 3. Patch content is the raw file content (not a diff) - const newContent = "print('Patched App')\n"; - - // 4. Mock db.query.patch.findMany - generateApplyPatchesCommand uses this via findPatchesByEntityId - vi.mocked(db.query.patch.findMany).mockResolvedValue([ - { - patchId: "test-patch-1", - applicationId: "test-app-id", - composeId: null, - filePath: "app.py", - content: newContent, - enabled: true, - type: "update", - createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), - } as any, - ]); - - console.log(`\nšŸš€ Testing deployment with patch: ${currentAppName}`); - - // 5. Deploy - const result = await deployApplication({ - applicationId: "test-app-id", - titleLog: "Real Patch Test", - descriptionLog: "Testing patch application", - }); - - expect(result).toBe(true); - - // 6. Verify Log contains "Applying patch" - const { stdout: logContent } = await execAsync( - `cat ${currentDeployment.logPath}`, - ); - // The implementation logs "Applying patch: ..." - expect(logContent).toContain("Applying patch"); - expect(logContent).toContain("app.py"); - console.log("āœ… Verified patch execution logs"); - - // 7. Verify the deployed image contains the patched code - // We run the image and check output - const { stdout: runOutput } = await execAsync( - `docker run --rm ${patchAppName}`, - ); - expect(runOutput.trim()).toBe("Patched App"); - console.log("āœ… Verified patched output:", runOutput.trim()); - }, - REAL_TEST_TIMEOUT, - ); }, REAL_TEST_TIMEOUT, );