@friggframework/devtools 2.0.0-next.45 → 2.0.0-next.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/infrastructure/ARCHITECTURE.md +487 -0
- package/infrastructure/HEALTH.md +468 -0
- package/infrastructure/README.md +51 -0
- package/infrastructure/__tests__/postgres-config.test.js +914 -0
- package/infrastructure/__tests__/template-generation.test.js +687 -0
- package/infrastructure/create-frigg-infrastructure.js +1 -1
- package/infrastructure/docs/POSTGRES-CONFIGURATION.md +630 -0
- package/infrastructure/{DEPLOYMENT-INSTRUCTIONS.md → docs/deployment-instructions.md} +3 -3
- package/infrastructure/{IAM-POLICY-TEMPLATES.md → docs/iam-policy-templates.md} +9 -10
- package/infrastructure/domains/database/aurora-builder.js +809 -0
- package/infrastructure/domains/database/aurora-builder.test.js +950 -0
- package/infrastructure/domains/database/aurora-discovery.js +87 -0
- package/infrastructure/domains/database/aurora-discovery.test.js +188 -0
- package/infrastructure/domains/database/aurora-resolver.js +210 -0
- package/infrastructure/domains/database/aurora-resolver.test.js +347 -0
- package/infrastructure/domains/database/migration-builder.js +633 -0
- package/infrastructure/domains/database/migration-builder.test.js +294 -0
- package/infrastructure/domains/database/migration-resolver.js +163 -0
- package/infrastructure/domains/database/migration-resolver.test.js +337 -0
- package/infrastructure/domains/health/application/ports/IPropertyReconciler.js +164 -0
- package/infrastructure/domains/health/application/ports/IResourceDetector.js +129 -0
- package/infrastructure/domains/health/application/ports/IResourceImporter.js +142 -0
- package/infrastructure/domains/health/application/ports/IStackRepository.js +131 -0
- package/infrastructure/domains/health/application/ports/index.js +26 -0
- package/infrastructure/domains/health/application/use-cases/__tests__/execute-resource-import-use-case.test.js +679 -0
- package/infrastructure/domains/health/application/use-cases/__tests__/mismatch-analyzer-method-name.test.js +167 -0
- package/infrastructure/domains/health/application/use-cases/__tests__/repair-via-import-use-case.test.js +1130 -0
- package/infrastructure/domains/health/application/use-cases/execute-resource-import-use-case.js +221 -0
- package/infrastructure/domains/health/application/use-cases/reconcile-properties-use-case.js +152 -0
- package/infrastructure/domains/health/application/use-cases/reconcile-properties-use-case.test.js +343 -0
- package/infrastructure/domains/health/application/use-cases/repair-via-import-use-case.js +535 -0
- package/infrastructure/domains/health/application/use-cases/repair-via-import-use-case.test.js +376 -0
- package/infrastructure/domains/health/application/use-cases/run-health-check-use-case.js +213 -0
- package/infrastructure/domains/health/application/use-cases/run-health-check-use-case.test.js +441 -0
- package/infrastructure/domains/health/docs/ACME-DEV-DRIFT-ANALYSIS.md +267 -0
- package/infrastructure/domains/health/docs/BUILD-VS-DEPLOYED-TEMPLATE-ANALYSIS.md +324 -0
- package/infrastructure/domains/health/docs/ORPHAN-DETECTION-ANALYSIS.md +386 -0
- package/infrastructure/domains/health/docs/SPEC-CLEANUP-COMMAND.md +1419 -0
- package/infrastructure/domains/health/docs/TDD-IMPLEMENTATION-SUMMARY.md +391 -0
- package/infrastructure/domains/health/docs/TEMPLATE-COMPARISON-IMPLEMENTATION.md +551 -0
- package/infrastructure/domains/health/domain/entities/issue.js +299 -0
- package/infrastructure/domains/health/domain/entities/issue.test.js +528 -0
- package/infrastructure/domains/health/domain/entities/property-mismatch.js +108 -0
- package/infrastructure/domains/health/domain/entities/property-mismatch.test.js +275 -0
- package/infrastructure/domains/health/domain/entities/resource.js +159 -0
- package/infrastructure/domains/health/domain/entities/resource.test.js +432 -0
- package/infrastructure/domains/health/domain/entities/stack-health-report.js +306 -0
- package/infrastructure/domains/health/domain/entities/stack-health-report.test.js +601 -0
- package/infrastructure/domains/health/domain/services/__tests__/health-score-percentage-based.test.js +380 -0
- package/infrastructure/domains/health/domain/services/__tests__/import-progress-monitor.test.js +971 -0
- package/infrastructure/domains/health/domain/services/__tests__/import-template-generator.test.js +1150 -0
- package/infrastructure/domains/health/domain/services/__tests__/logical-id-mapper.test.js +672 -0
- package/infrastructure/domains/health/domain/services/__tests__/template-parser.test.js +496 -0
- package/infrastructure/domains/health/domain/services/__tests__/update-progress-monitor.test.js +419 -0
- package/infrastructure/domains/health/domain/services/health-score-calculator.js +248 -0
- package/infrastructure/domains/health/domain/services/health-score-calculator.test.js +504 -0
- package/infrastructure/domains/health/domain/services/import-progress-monitor.js +195 -0
- package/infrastructure/domains/health/domain/services/import-template-generator.js +435 -0
- package/infrastructure/domains/health/domain/services/logical-id-mapper.js +345 -0
- package/infrastructure/domains/health/domain/services/mismatch-analyzer.js +234 -0
- package/infrastructure/domains/health/domain/services/mismatch-analyzer.test.js +431 -0
- package/infrastructure/domains/health/domain/services/property-mutability-config.js +382 -0
- package/infrastructure/domains/health/domain/services/template-parser.js +245 -0
- package/infrastructure/domains/health/domain/services/update-progress-monitor.js +192 -0
- package/infrastructure/domains/health/domain/value-objects/health-score.js +138 -0
- package/infrastructure/domains/health/domain/value-objects/health-score.test.js +267 -0
- package/infrastructure/domains/health/domain/value-objects/property-mutability.js +161 -0
- package/infrastructure/domains/health/domain/value-objects/property-mutability.test.js +198 -0
- package/infrastructure/domains/health/domain/value-objects/resource-state.js +167 -0
- package/infrastructure/domains/health/domain/value-objects/resource-state.test.js +196 -0
- package/infrastructure/domains/health/domain/value-objects/stack-identifier.js +192 -0
- package/infrastructure/domains/health/domain/value-objects/stack-identifier.test.js +262 -0
- package/infrastructure/domains/health/infrastructure/adapters/__tests__/orphan-detection-cfn-tagged.test.js +312 -0
- package/infrastructure/domains/health/infrastructure/adapters/__tests__/orphan-detection-multi-stack.test.js +367 -0
- package/infrastructure/domains/health/infrastructure/adapters/__tests__/orphan-detection-relationship-analysis.test.js +432 -0
- package/infrastructure/domains/health/infrastructure/adapters/aws-property-reconciler.js +784 -0
- package/infrastructure/domains/health/infrastructure/adapters/aws-property-reconciler.test.js +1133 -0
- package/infrastructure/domains/health/infrastructure/adapters/aws-resource-detector.js +565 -0
- package/infrastructure/domains/health/infrastructure/adapters/aws-resource-detector.test.js +554 -0
- package/infrastructure/domains/health/infrastructure/adapters/aws-resource-importer.js +318 -0
- package/infrastructure/domains/health/infrastructure/adapters/aws-resource-importer.test.js +398 -0
- package/infrastructure/domains/health/infrastructure/adapters/aws-stack-repository.js +777 -0
- package/infrastructure/domains/health/infrastructure/adapters/aws-stack-repository.test.js +580 -0
- package/infrastructure/domains/integration/integration-builder.js +397 -0
- package/infrastructure/domains/integration/integration-builder.test.js +593 -0
- package/infrastructure/domains/integration/integration-resolver.js +170 -0
- package/infrastructure/domains/integration/integration-resolver.test.js +369 -0
- package/infrastructure/domains/integration/websocket-builder.js +69 -0
- package/infrastructure/domains/integration/websocket-builder.test.js +195 -0
- package/infrastructure/domains/networking/vpc-builder.js +1829 -0
- package/infrastructure/domains/networking/vpc-builder.test.js +1262 -0
- package/infrastructure/domains/networking/vpc-discovery.js +177 -0
- package/infrastructure/domains/networking/vpc-discovery.test.js +350 -0
- package/infrastructure/domains/networking/vpc-resolver.js +324 -0
- package/infrastructure/domains/networking/vpc-resolver.test.js +501 -0
- package/infrastructure/domains/parameters/ssm-builder.js +79 -0
- package/infrastructure/domains/parameters/ssm-builder.test.js +189 -0
- package/infrastructure/domains/parameters/ssm-discovery.js +84 -0
- package/infrastructure/domains/parameters/ssm-discovery.test.js +210 -0
- package/infrastructure/{iam-generator.js → domains/security/iam-generator.js} +2 -2
- package/infrastructure/domains/security/kms-builder.js +366 -0
- package/infrastructure/domains/security/kms-builder.test.js +374 -0
- package/infrastructure/domains/security/kms-discovery.js +80 -0
- package/infrastructure/domains/security/kms-discovery.test.js +177 -0
- package/infrastructure/domains/security/kms-resolver.js +96 -0
- package/infrastructure/domains/security/kms-resolver.test.js +216 -0
- package/infrastructure/domains/shared/base-builder.js +112 -0
- package/infrastructure/domains/shared/base-resolver.js +186 -0
- package/infrastructure/domains/shared/base-resolver.test.js +305 -0
- package/infrastructure/domains/shared/builder-orchestrator.js +212 -0
- package/infrastructure/domains/shared/builder-orchestrator.test.js +213 -0
- package/infrastructure/domains/shared/cloudformation-discovery-v2.js +334 -0
- package/infrastructure/domains/shared/cloudformation-discovery.js +375 -0
- package/infrastructure/domains/shared/cloudformation-discovery.test.js +590 -0
- package/infrastructure/domains/shared/environment-builder.js +119 -0
- package/infrastructure/domains/shared/environment-builder.test.js +247 -0
- package/infrastructure/domains/shared/providers/aws-provider-adapter.js +544 -0
- package/infrastructure/domains/shared/providers/aws-provider-adapter.test.js +377 -0
- package/infrastructure/domains/shared/providers/azure-provider-adapter.stub.js +93 -0
- package/infrastructure/domains/shared/providers/cloud-provider-adapter.js +136 -0
- package/infrastructure/domains/shared/providers/gcp-provider-adapter.stub.js +82 -0
- package/infrastructure/domains/shared/providers/provider-factory.js +108 -0
- package/infrastructure/domains/shared/providers/provider-factory.test.js +170 -0
- package/infrastructure/domains/shared/resource-discovery.js +192 -0
- package/infrastructure/domains/shared/resource-discovery.test.js +552 -0
- package/infrastructure/domains/shared/types/app-definition.js +205 -0
- package/infrastructure/domains/shared/types/discovery-result.js +106 -0
- package/infrastructure/domains/shared/types/discovery-result.test.js +258 -0
- package/infrastructure/domains/shared/types/index.js +46 -0
- package/infrastructure/domains/shared/types/resource-ownership.js +108 -0
- package/infrastructure/domains/shared/types/resource-ownership.test.js +101 -0
- package/infrastructure/domains/shared/utilities/base-definition-factory.js +380 -0
- package/infrastructure/domains/shared/utilities/base-definition-factory.js.bak +338 -0
- package/infrastructure/domains/shared/utilities/base-definition-factory.test.js +248 -0
- package/infrastructure/domains/shared/utilities/handler-path-resolver.js +134 -0
- package/infrastructure/domains/shared/utilities/handler-path-resolver.test.js +268 -0
- package/infrastructure/domains/shared/utilities/prisma-layer-manager.js +55 -0
- package/infrastructure/domains/shared/utilities/prisma-layer-manager.test.js +138 -0
- package/infrastructure/{env-validator.js → domains/shared/validation/env-validator.js} +2 -1
- package/infrastructure/domains/shared/validation/env-validator.test.js +173 -0
- package/infrastructure/esbuild.config.js +53 -0
- package/infrastructure/infrastructure-composer.js +87 -0
- package/infrastructure/{serverless-template.test.js → infrastructure-composer.test.js} +115 -24
- package/infrastructure/scripts/build-prisma-layer.js +553 -0
- package/infrastructure/scripts/build-prisma-layer.test.js +102 -0
- package/infrastructure/{build-time-discovery.js → scripts/build-time-discovery.js} +80 -48
- package/infrastructure/{build-time-discovery.test.js → scripts/build-time-discovery.test.js} +5 -4
- package/layers/prisma/nodejs/package.json +8 -0
- package/management-ui/server/utils/cliIntegration.js +1 -1
- package/management-ui/server/utils/environment/awsParameterStore.js +29 -18
- package/package.json +11 -11
- package/frigg-cli/.eslintrc.js +0 -141
- package/frigg-cli/__tests__/unit/commands/build.test.js +0 -251
- package/frigg-cli/__tests__/unit/commands/db-setup.test.js +0 -548
- package/frigg-cli/__tests__/unit/commands/install.test.js +0 -400
- package/frigg-cli/__tests__/unit/commands/ui.test.js +0 -346
- package/frigg-cli/__tests__/unit/utils/database-validator.test.js +0 -366
- package/frigg-cli/__tests__/unit/utils/error-messages.test.js +0 -304
- package/frigg-cli/__tests__/unit/utils/prisma-runner.test.js +0 -486
- package/frigg-cli/__tests__/utils/mock-factory.js +0 -270
- package/frigg-cli/__tests__/utils/prisma-mock.js +0 -194
- package/frigg-cli/__tests__/utils/test-fixtures.js +0 -463
- package/frigg-cli/__tests__/utils/test-setup.js +0 -287
- package/frigg-cli/build-command/index.js +0 -65
- package/frigg-cli/db-setup-command/index.js +0 -193
- package/frigg-cli/deploy-command/index.js +0 -175
- package/frigg-cli/generate-command/__tests__/generate-command.test.js +0 -301
- package/frigg-cli/generate-command/azure-generator.js +0 -43
- package/frigg-cli/generate-command/gcp-generator.js +0 -47
- package/frigg-cli/generate-command/index.js +0 -332
- package/frigg-cli/generate-command/terraform-generator.js +0 -555
- package/frigg-cli/generate-iam-command.js +0 -118
- package/frigg-cli/index.js +0 -75
- package/frigg-cli/index.test.js +0 -158
- package/frigg-cli/init-command/backend-first-handler.js +0 -756
- package/frigg-cli/init-command/index.js +0 -93
- package/frigg-cli/init-command/template-handler.js +0 -143
- package/frigg-cli/install-command/backend-js.js +0 -33
- package/frigg-cli/install-command/commit-changes.js +0 -16
- package/frigg-cli/install-command/environment-variables.js +0 -127
- package/frigg-cli/install-command/environment-variables.test.js +0 -136
- package/frigg-cli/install-command/index.js +0 -54
- package/frigg-cli/install-command/install-package.js +0 -13
- package/frigg-cli/install-command/integration-file.js +0 -30
- package/frigg-cli/install-command/logger.js +0 -12
- package/frigg-cli/install-command/template.js +0 -90
- package/frigg-cli/install-command/validate-package.js +0 -75
- package/frigg-cli/jest.config.js +0 -124
- package/frigg-cli/package.json +0 -54
- package/frigg-cli/start-command/index.js +0 -149
- package/frigg-cli/start-command/start-command.test.js +0 -297
- package/frigg-cli/test/init-command.test.js +0 -180
- package/frigg-cli/test/npm-registry.test.js +0 -319
- package/frigg-cli/ui-command/index.js +0 -154
- package/frigg-cli/utils/app-resolver.js +0 -319
- package/frigg-cli/utils/backend-path.js +0 -25
- package/frigg-cli/utils/database-validator.js +0 -161
- package/frigg-cli/utils/error-messages.js +0 -257
- package/frigg-cli/utils/npm-registry.js +0 -167
- package/frigg-cli/utils/prisma-runner.js +0 -280
- package/frigg-cli/utils/process-manager.js +0 -199
- package/frigg-cli/utils/repo-detection.js +0 -405
- package/infrastructure/aws-discovery.js +0 -1176
- package/infrastructure/aws-discovery.test.js +0 -1220
- package/infrastructure/serverless-template.js +0 -2094
- /package/infrastructure/{WEBSOCKET-CONFIGURATION.md → docs/WEBSOCKET-CONFIGURATION.md} +0 -0
- /package/infrastructure/{GENERATE-IAM-DOCS.md → docs/generate-iam-command.md} +0 -0
- /package/infrastructure/{iam-generator.test.js → domains/security/iam-generator.test.js} +0 -0
- /package/infrastructure/{frigg-deployment-iam-stack.yaml → domains/security/templates/frigg-deployment-iam-stack.yaml} +0 -0
- /package/infrastructure/{iam-policy-basic.json → domains/security/templates/iam-policy-basic.json} +0 -0
- /package/infrastructure/{iam-policy-full.json → domains/security/templates/iam-policy-full.json} +0 -0
- /package/infrastructure/{run-discovery.js → scripts/run-discovery.js} +0 -0
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MockFactory - Factory for creating standardized mocks
|
|
3
|
-
* Provides consistent mock implementations across all CLI tests
|
|
4
|
-
*/
|
|
5
|
-
class MockFactory {
|
|
6
|
-
/**
|
|
7
|
-
* Create a file system mock
|
|
8
|
-
* @returns {object} - Mock fs implementation
|
|
9
|
-
*/
|
|
10
|
-
static createFileSystem() {
|
|
11
|
-
return {
|
|
12
|
-
existsSync: jest.fn().mockReturnValue(true),
|
|
13
|
-
readFileSync: jest.fn().mockReturnValue('{}'),
|
|
14
|
-
writeFileSync: jest.fn(),
|
|
15
|
-
mkdirSync: jest.fn(),
|
|
16
|
-
readdirSync: jest.fn().mockReturnValue([]),
|
|
17
|
-
statSync: jest.fn().mockReturnValue({
|
|
18
|
-
isDirectory: () => false,
|
|
19
|
-
isFile: () => true
|
|
20
|
-
}),
|
|
21
|
-
copyFileSync: jest.fn(),
|
|
22
|
-
unlinkSync: jest.fn(),
|
|
23
|
-
rmdirSync: jest.fn(),
|
|
24
|
-
constants: {
|
|
25
|
-
F_OK: 0,
|
|
26
|
-
R_OK: 4,
|
|
27
|
-
W_OK: 2,
|
|
28
|
-
X_OK: 1
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Create a logger mock
|
|
35
|
-
* @returns {object} - Mock logger implementation
|
|
36
|
-
*/
|
|
37
|
-
static createLogger() {
|
|
38
|
-
return {
|
|
39
|
-
info: jest.fn(),
|
|
40
|
-
error: jest.fn(),
|
|
41
|
-
debug: jest.fn(),
|
|
42
|
-
warn: jest.fn(),
|
|
43
|
-
logInfo: jest.fn(),
|
|
44
|
-
logError: jest.fn(),
|
|
45
|
-
logDebug: jest.fn(),
|
|
46
|
-
logWarn: jest.fn()
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Create a package manager mock
|
|
52
|
-
* @returns {object} - Mock package manager implementation
|
|
53
|
-
*/
|
|
54
|
-
static createPackageManager() {
|
|
55
|
-
return {
|
|
56
|
-
install: jest.fn().mockResolvedValue({ success: true }),
|
|
57
|
-
list: jest.fn().mockResolvedValue([]),
|
|
58
|
-
exists: jest.fn().mockResolvedValue(true),
|
|
59
|
-
getInfo: jest.fn().mockResolvedValue({
|
|
60
|
-
name: 'test-package',
|
|
61
|
-
version: '1.0.0'
|
|
62
|
-
}),
|
|
63
|
-
search: jest.fn().mockResolvedValue([])
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Create a child process mock
|
|
69
|
-
* @returns {object} - Mock child_process implementation
|
|
70
|
-
*/
|
|
71
|
-
static createChildProcess() {
|
|
72
|
-
return {
|
|
73
|
-
execSync: jest.fn().mockReturnValue(''),
|
|
74
|
-
exec: jest.fn(),
|
|
75
|
-
spawn: jest.fn().mockReturnValue({
|
|
76
|
-
stdout: { on: jest.fn() },
|
|
77
|
-
stderr: { on: jest.fn() },
|
|
78
|
-
on: jest.fn((event, callback) => {
|
|
79
|
-
if (event === 'close') {
|
|
80
|
-
callback(0);
|
|
81
|
-
}
|
|
82
|
-
})
|
|
83
|
-
}),
|
|
84
|
-
fork: jest.fn()
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Create a git mock
|
|
90
|
-
* @returns {object} - Mock git implementation
|
|
91
|
-
*/
|
|
92
|
-
static createGit() {
|
|
93
|
-
return {
|
|
94
|
-
init: jest.fn(),
|
|
95
|
-
add: jest.fn(),
|
|
96
|
-
commit: jest.fn(),
|
|
97
|
-
status: jest.fn().mockReturnValue({
|
|
98
|
-
clean: true,
|
|
99
|
-
files: []
|
|
100
|
-
}),
|
|
101
|
-
branch: jest.fn().mockReturnValue('main'),
|
|
102
|
-
remote: jest.fn().mockReturnValue('origin'),
|
|
103
|
-
isRepo: jest.fn().mockReturnValue(true)
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Create a config loader mock
|
|
109
|
-
* @returns {object} - Mock config loader implementation
|
|
110
|
-
*/
|
|
111
|
-
static createConfigLoader() {
|
|
112
|
-
return {
|
|
113
|
-
load: jest.fn().mockReturnValue({
|
|
114
|
-
stage: 'dev',
|
|
115
|
-
region: 'us-east-1',
|
|
116
|
-
profile: 'default'
|
|
117
|
-
}),
|
|
118
|
-
validate: jest.fn().mockReturnValue(true),
|
|
119
|
-
save: jest.fn(),
|
|
120
|
-
merge: jest.fn()
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Create an app resolver mock
|
|
126
|
-
* @returns {object} - Mock app resolver implementation
|
|
127
|
-
*/
|
|
128
|
-
static createAppResolver() {
|
|
129
|
-
return {
|
|
130
|
-
resolveAppPath: jest.fn().mockReturnValue('/mock/app/path'),
|
|
131
|
-
findNearestBackendPackageJson: jest.fn().mockReturnValue('/mock/backend/package.json'),
|
|
132
|
-
validateBackendPath: jest.fn().mockReturnValue(true),
|
|
133
|
-
getProjectRoot: jest.fn().mockReturnValue('/mock/project'),
|
|
134
|
-
findConfigFile: jest.fn().mockReturnValue('/mock/config.json')
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Create a network mock
|
|
140
|
-
* @returns {object} - Mock network implementation
|
|
141
|
-
*/
|
|
142
|
-
static createNetwork() {
|
|
143
|
-
return {
|
|
144
|
-
get: jest.fn().mockResolvedValue({
|
|
145
|
-
status: 200,
|
|
146
|
-
data: {}
|
|
147
|
-
}),
|
|
148
|
-
post: jest.fn().mockResolvedValue({
|
|
149
|
-
status: 200,
|
|
150
|
-
data: {}
|
|
151
|
-
}),
|
|
152
|
-
put: jest.fn().mockResolvedValue({
|
|
153
|
-
status: 200,
|
|
154
|
-
data: {}
|
|
155
|
-
}),
|
|
156
|
-
delete: jest.fn().mockResolvedValue({
|
|
157
|
-
status: 200,
|
|
158
|
-
data: {}
|
|
159
|
-
})
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Create a comprehensive mock environment
|
|
165
|
-
* @returns {object} - Complete mock environment
|
|
166
|
-
*/
|
|
167
|
-
static createMockEnvironment() {
|
|
168
|
-
return {
|
|
169
|
-
fs: this.createFileSystem(),
|
|
170
|
-
logger: this.createLogger(),
|
|
171
|
-
packageManager: this.createPackageManager(),
|
|
172
|
-
childProcess: this.createChildProcess(),
|
|
173
|
-
git: this.createGit(),
|
|
174
|
-
config: this.createConfigLoader(),
|
|
175
|
-
appResolver: this.createAppResolver(),
|
|
176
|
-
network: this.createNetwork()
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Create a mock for process.env
|
|
182
|
-
* @param {object} customEnv - Custom environment variables
|
|
183
|
-
* @returns {object} - Mock environment
|
|
184
|
-
*/
|
|
185
|
-
static createProcessEnv(customEnv = {}) {
|
|
186
|
-
return {
|
|
187
|
-
NODE_ENV: 'test',
|
|
188
|
-
HOME: '/mock/home',
|
|
189
|
-
PATH: '/mock/path',
|
|
190
|
-
...customEnv
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Create success response mock
|
|
196
|
-
* @param {any} data - Response data
|
|
197
|
-
* @returns {object} - Success response
|
|
198
|
-
*/
|
|
199
|
-
static createSuccessResponse(data = {}) {
|
|
200
|
-
return {
|
|
201
|
-
success: true,
|
|
202
|
-
data,
|
|
203
|
-
message: 'Operation completed successfully'
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Create error response mock
|
|
209
|
-
* @param {string} message - Error message
|
|
210
|
-
* @param {string} code - Error code
|
|
211
|
-
* @returns {object} - Error response
|
|
212
|
-
*/
|
|
213
|
-
static createErrorResponse(message = 'An error occurred', code = 'GENERIC_ERROR') {
|
|
214
|
-
return {
|
|
215
|
-
success: false,
|
|
216
|
-
error: {
|
|
217
|
-
message,
|
|
218
|
-
code,
|
|
219
|
-
stack: 'Mock stack trace'
|
|
220
|
-
}
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Create package.json mock
|
|
226
|
-
* @param {object} overrides - Custom package.json properties
|
|
227
|
-
* @returns {object} - Mock package.json
|
|
228
|
-
*/
|
|
229
|
-
static createPackageJson(overrides = {}) {
|
|
230
|
-
return {
|
|
231
|
-
name: 'test-package',
|
|
232
|
-
version: '1.0.0',
|
|
233
|
-
description: 'Test package',
|
|
234
|
-
main: 'index.js',
|
|
235
|
-
scripts: {
|
|
236
|
-
test: 'jest',
|
|
237
|
-
start: 'node index.js'
|
|
238
|
-
},
|
|
239
|
-
dependencies: {},
|
|
240
|
-
devDependencies: {},
|
|
241
|
-
...overrides
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* Create frigg config mock
|
|
247
|
-
* @param {object} overrides - Custom config properties
|
|
248
|
-
* @returns {object} - Mock frigg config
|
|
249
|
-
*/
|
|
250
|
-
static createFriggConfig(overrides = {}) {
|
|
251
|
-
return {
|
|
252
|
-
stage: 'dev',
|
|
253
|
-
region: 'us-east-1',
|
|
254
|
-
profile: 'default',
|
|
255
|
-
backend: {
|
|
256
|
-
runtime: 'nodejs18.x',
|
|
257
|
-
timeout: 30,
|
|
258
|
-
memory: 128
|
|
259
|
-
},
|
|
260
|
-
frontend: {
|
|
261
|
-
framework: 'react',
|
|
262
|
-
buildCommand: 'npm run build',
|
|
263
|
-
outputDir: 'dist'
|
|
264
|
-
},
|
|
265
|
-
...overrides
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
module.exports = { MockFactory };
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prisma Mock Utilities
|
|
3
|
-
* Standardized mocking for Prisma Client in CLI tests
|
|
4
|
-
* Following official Prisma testing patterns with jest-mock-extended
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Creates a mock Prisma client with common operations
|
|
9
|
-
* @returns {object} Mock Prisma client
|
|
10
|
-
*/
|
|
11
|
-
function createMockPrismaClient() {
|
|
12
|
-
return {
|
|
13
|
-
$connect: jest.fn().mockResolvedValue(undefined),
|
|
14
|
-
$disconnect: jest.fn().mockResolvedValue(undefined),
|
|
15
|
-
$queryRaw: jest.fn().mockResolvedValue([{ result: 1 }]),
|
|
16
|
-
$executeRaw: jest.fn().mockResolvedValue(1),
|
|
17
|
-
$runCommandRaw: jest.fn().mockResolvedValue({ ok: 1 }), // MongoDB command support
|
|
18
|
-
$transaction: jest.fn().mockImplementation(async (fn) => fn(createMockPrismaClient())),
|
|
19
|
-
// Common model operations
|
|
20
|
-
user: {
|
|
21
|
-
findMany: jest.fn().mockResolvedValue([]),
|
|
22
|
-
findUnique: jest.fn().mockResolvedValue(null),
|
|
23
|
-
create: jest.fn().mockResolvedValue({}),
|
|
24
|
-
update: jest.fn().mockResolvedValue({}),
|
|
25
|
-
delete: jest.fn().mockResolvedValue({}),
|
|
26
|
-
},
|
|
27
|
-
credential: {
|
|
28
|
-
findMany: jest.fn().mockResolvedValue([]),
|
|
29
|
-
findUnique: jest.fn().mockResolvedValue(null),
|
|
30
|
-
create: jest.fn().mockResolvedValue({}),
|
|
31
|
-
update: jest.fn().mockResolvedValue({}),
|
|
32
|
-
delete: jest.fn().mockResolvedValue({}),
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Creates a mock for successful Prisma connection
|
|
39
|
-
* @param {object} mockClient - Optional pre-configured mock client
|
|
40
|
-
* @returns {jest.Mock} Mock connectPrisma function
|
|
41
|
-
*/
|
|
42
|
-
function createMockConnectPrisma(mockClient = null) {
|
|
43
|
-
const client = mockClient || createMockPrismaClient();
|
|
44
|
-
return jest.fn().mockResolvedValue(client);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Creates a mock for successful Prisma disconnection
|
|
49
|
-
* @returns {jest.Mock} Mock disconnectPrisma function
|
|
50
|
-
*/
|
|
51
|
-
function createMockDisconnectPrisma() {
|
|
52
|
-
return jest.fn().mockResolvedValue(undefined);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Creates a mock for Prisma connection that fails
|
|
57
|
-
* @param {string} errorMessage - Error message to throw
|
|
58
|
-
* @returns {jest.Mock} Mock connectPrisma that throws error
|
|
59
|
-
*/
|
|
60
|
-
function createMockConnectPrismaWithError(errorMessage = 'Connection failed') {
|
|
61
|
-
return jest.fn().mockRejectedValue(new Error(errorMessage));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Creates a mock for Prisma query that times out
|
|
66
|
-
* @param {number} timeout - Timeout in milliseconds
|
|
67
|
-
* @returns {jest.Mock} Mock that times out
|
|
68
|
-
*/
|
|
69
|
-
function createMockPrismaTimeout(timeout = 5000) {
|
|
70
|
-
return jest.fn().mockImplementation(() =>
|
|
71
|
-
new Promise((_, reject) =>
|
|
72
|
-
setTimeout(() => reject(new Error('Connection timeout')), timeout)
|
|
73
|
-
)
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Common Prisma error types for testing
|
|
79
|
-
*/
|
|
80
|
-
const PrismaErrors = {
|
|
81
|
-
/**
|
|
82
|
-
* Connection error (P1001)
|
|
83
|
-
*/
|
|
84
|
-
CONNECTION_ERROR: {
|
|
85
|
-
code: 'P1001',
|
|
86
|
-
message: 'Can\'t reach database server',
|
|
87
|
-
clientVersion: '5.0.0',
|
|
88
|
-
},
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Authentication error (P1002)
|
|
92
|
-
*/
|
|
93
|
-
AUTH_ERROR: {
|
|
94
|
-
code: 'P1002',
|
|
95
|
-
message: 'The database server was reached but timed out',
|
|
96
|
-
clientVersion: '5.0.0',
|
|
97
|
-
},
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Database not found error (P1003)
|
|
101
|
-
*/
|
|
102
|
-
DATABASE_NOT_FOUND: {
|
|
103
|
-
code: 'P1003',
|
|
104
|
-
message: 'Database does not exist',
|
|
105
|
-
clientVersion: '5.0.0',
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Connection timeout (P1008)
|
|
110
|
-
*/
|
|
111
|
-
TIMEOUT_ERROR: {
|
|
112
|
-
code: 'P1008',
|
|
113
|
-
message: 'Operations timed out',
|
|
114
|
-
clientVersion: '5.0.0',
|
|
115
|
-
},
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Invalid credentials
|
|
119
|
-
*/
|
|
120
|
-
INVALID_CREDENTIALS: {
|
|
121
|
-
code: 'P1000',
|
|
122
|
-
message: 'Authentication failed against database server',
|
|
123
|
-
clientVersion: '5.0.0',
|
|
124
|
-
},
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Creates a Prisma error object
|
|
129
|
-
* @param {string} errorType - Error type from PrismaErrors
|
|
130
|
-
* @param {object} customFields - Additional custom fields
|
|
131
|
-
* @returns {Error} Prisma-style error object
|
|
132
|
-
*/
|
|
133
|
-
function createPrismaError(errorType = 'CONNECTION_ERROR', customFields = {}) {
|
|
134
|
-
const baseError = PrismaErrors[errorType] || PrismaErrors.CONNECTION_ERROR;
|
|
135
|
-
const error = new Error(baseError.message);
|
|
136
|
-
error.code = baseError.code;
|
|
137
|
-
error.clientVersion = baseError.clientVersion;
|
|
138
|
-
Object.assign(error, customFields);
|
|
139
|
-
return error;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Creates a mock for database validator functions
|
|
144
|
-
* @param {object} overrides - Override specific mock behaviors
|
|
145
|
-
* @returns {object} Mock database validator
|
|
146
|
-
*/
|
|
147
|
-
function createMockDatabaseValidator(overrides = {}) {
|
|
148
|
-
return {
|
|
149
|
-
validateDatabaseUrl: jest.fn().mockReturnValue({
|
|
150
|
-
valid: true,
|
|
151
|
-
url: 'mongodb://localhost:27017/test'
|
|
152
|
-
}),
|
|
153
|
-
getDatabaseType: jest.fn().mockReturnValue({
|
|
154
|
-
dbType: 'mongodb'
|
|
155
|
-
}),
|
|
156
|
-
testDatabaseConnection: jest.fn().mockResolvedValue({
|
|
157
|
-
connected: true
|
|
158
|
-
}),
|
|
159
|
-
checkPrismaClientGenerated: jest.fn().mockReturnValue({
|
|
160
|
-
generated: true,
|
|
161
|
-
path: '/mock/path'
|
|
162
|
-
}),
|
|
163
|
-
...overrides,
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Creates a mock for Prisma runner functions
|
|
169
|
-
* @param {object} overrides - Override specific mock behaviors
|
|
170
|
-
* @returns {object} Mock Prisma runner
|
|
171
|
-
*/
|
|
172
|
-
function createMockPrismaRunner(overrides = {}) {
|
|
173
|
-
return {
|
|
174
|
-
getPrismaSchemaPath: jest.fn().mockReturnValue('/mock/schema.prisma'),
|
|
175
|
-
runPrismaGenerate: jest.fn().mockResolvedValue({ success: true }),
|
|
176
|
-
checkDatabaseState: jest.fn().mockResolvedValue({ upToDate: true }),
|
|
177
|
-
runPrismaMigrate: jest.fn().mockResolvedValue({ success: true }),
|
|
178
|
-
runPrismaDbPush: jest.fn().mockResolvedValue({ success: true }),
|
|
179
|
-
getMigrationCommand: jest.fn().mockReturnValue('dev'),
|
|
180
|
-
...overrides,
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
module.exports = {
|
|
185
|
-
createMockPrismaClient,
|
|
186
|
-
createMockConnectPrisma,
|
|
187
|
-
createMockDisconnectPrisma,
|
|
188
|
-
createMockConnectPrismaWithError,
|
|
189
|
-
createMockPrismaTimeout,
|
|
190
|
-
createPrismaError,
|
|
191
|
-
PrismaErrors,
|
|
192
|
-
createMockDatabaseValidator,
|
|
193
|
-
createMockPrismaRunner,
|
|
194
|
-
};
|