@friggframework/devtools 2.0.0-next.4 → 2.0.0-next.41
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/frigg-cli/.eslintrc.js +141 -0
- package/frigg-cli/__tests__/jest.config.js +102 -0
- package/frigg-cli/__tests__/unit/commands/build.test.js +483 -0
- package/frigg-cli/__tests__/unit/commands/install.test.js +418 -0
- package/frigg-cli/__tests__/unit/commands/ui.test.js +592 -0
- package/frigg-cli/__tests__/utils/command-tester.js +170 -0
- package/frigg-cli/__tests__/utils/mock-factory.js +270 -0
- package/frigg-cli/__tests__/utils/test-fixtures.js +463 -0
- package/frigg-cli/__tests__/utils/test-setup.js +286 -0
- package/frigg-cli/build-command/index.js +54 -0
- package/frigg-cli/deploy-command/index.js +175 -0
- package/frigg-cli/generate-command/__tests__/generate-command.test.js +312 -0
- package/frigg-cli/generate-command/azure-generator.js +43 -0
- package/frigg-cli/generate-command/gcp-generator.js +47 -0
- package/frigg-cli/generate-command/index.js +332 -0
- package/frigg-cli/generate-command/terraform-generator.js +555 -0
- package/frigg-cli/generate-iam-command.js +115 -0
- package/frigg-cli/index.js +47 -1
- package/frigg-cli/index.test.js +1 -4
- package/frigg-cli/init-command/backend-first-handler.js +756 -0
- package/frigg-cli/init-command/index.js +93 -0
- package/frigg-cli/init-command/template-handler.js +143 -0
- package/frigg-cli/install-command/index.js +1 -4
- package/frigg-cli/package.json +51 -0
- package/frigg-cli/start-command/index.js +30 -4
- package/frigg-cli/start-command/start-command.test.js +155 -0
- package/frigg-cli/test/init-command.test.js +180 -0
- package/frigg-cli/test/npm-registry.test.js +319 -0
- package/frigg-cli/ui-command/index.js +154 -0
- package/frigg-cli/utils/app-resolver.js +319 -0
- package/frigg-cli/utils/backend-path.js +16 -17
- package/frigg-cli/utils/npm-registry.js +167 -0
- package/frigg-cli/utils/process-manager.js +199 -0
- package/frigg-cli/utils/repo-detection.js +405 -0
- package/infrastructure/DEPLOYMENT-INSTRUCTIONS.md +268 -0
- package/infrastructure/GENERATE-IAM-DOCS.md +278 -0
- package/infrastructure/IAM-POLICY-TEMPLATES.md +176 -0
- package/infrastructure/README.md +443 -0
- package/infrastructure/WEBSOCKET-CONFIGURATION.md +105 -0
- package/infrastructure/__tests__/fixtures/mock-aws-resources.js +391 -0
- package/infrastructure/__tests__/helpers/test-utils.js +277 -0
- package/infrastructure/aws-discovery.js +1176 -0
- package/infrastructure/aws-discovery.test.js +1220 -0
- package/infrastructure/build-time-discovery.js +206 -0
- package/infrastructure/build-time-discovery.test.js +378 -0
- package/infrastructure/create-frigg-infrastructure.js +3 -5
- package/infrastructure/env-validator.js +77 -0
- package/infrastructure/frigg-deployment-iam-stack.yaml +401 -0
- package/infrastructure/iam-generator.js +836 -0
- package/infrastructure/iam-generator.test.js +172 -0
- package/infrastructure/iam-policy-basic.json +218 -0
- package/infrastructure/iam-policy-full.json +288 -0
- package/infrastructure/integration.test.js +383 -0
- package/infrastructure/run-discovery.js +110 -0
- package/infrastructure/serverless-template.js +1493 -138
- package/infrastructure/serverless-template.test.js +1804 -0
- package/management-ui/.eslintrc.js +22 -0
- package/management-ui/README.md +203 -0
- package/management-ui/components.json +21 -0
- package/management-ui/docs/phase2-integration-guide.md +320 -0
- package/management-ui/index.html +13 -0
- package/management-ui/package-lock.json +16517 -0
- package/management-ui/package.json +76 -0
- package/management-ui/packages/devtools/frigg-cli/ui-command/index.js +302 -0
- package/management-ui/postcss.config.js +6 -0
- package/management-ui/server/api/backend.js +256 -0
- package/management-ui/server/api/cli.js +315 -0
- package/management-ui/server/api/codegen.js +663 -0
- package/management-ui/server/api/connections.js +857 -0
- package/management-ui/server/api/discovery.js +185 -0
- package/management-ui/server/api/environment/index.js +1 -0
- package/management-ui/server/api/environment/router.js +378 -0
- package/management-ui/server/api/environment.js +328 -0
- package/management-ui/server/api/integrations.js +876 -0
- package/management-ui/server/api/logs.js +248 -0
- package/management-ui/server/api/monitoring.js +282 -0
- package/management-ui/server/api/open-ide.js +31 -0
- package/management-ui/server/api/project.js +1029 -0
- package/management-ui/server/api/users/sessions.js +371 -0
- package/management-ui/server/api/users/simulation.js +254 -0
- package/management-ui/server/api/users.js +362 -0
- package/management-ui/server/api-contract.md +275 -0
- package/management-ui/server/index.js +873 -0
- package/management-ui/server/middleware/errorHandler.js +93 -0
- package/management-ui/server/middleware/security.js +32 -0
- package/management-ui/server/processManager.js +296 -0
- package/management-ui/server/server.js +346 -0
- package/management-ui/server/services/aws-monitor.js +413 -0
- package/management-ui/server/services/npm-registry.js +347 -0
- package/management-ui/server/services/template-engine.js +538 -0
- package/management-ui/server/utils/cliIntegration.js +220 -0
- package/management-ui/server/utils/environment/auditLogger.js +471 -0
- package/management-ui/server/utils/environment/awsParameterStore.js +264 -0
- package/management-ui/server/utils/environment/encryption.js +278 -0
- package/management-ui/server/utils/environment/envFileManager.js +286 -0
- package/management-ui/server/utils/import-commonjs.js +28 -0
- package/management-ui/server/utils/response.js +83 -0
- package/management-ui/server/websocket/handler.js +325 -0
- package/management-ui/src/App.jsx +109 -0
- package/management-ui/src/assets/FriggLogo.svg +1 -0
- package/management-ui/src/components/AppRouter.jsx +65 -0
- package/management-ui/src/components/Button.jsx +70 -0
- package/management-ui/src/components/Card.jsx +97 -0
- package/management-ui/src/components/EnvironmentCompare.jsx +400 -0
- package/management-ui/src/components/EnvironmentEditor.jsx +372 -0
- package/management-ui/src/components/EnvironmentImportExport.jsx +469 -0
- package/management-ui/src/components/EnvironmentSchema.jsx +491 -0
- package/management-ui/src/components/EnvironmentSecurity.jsx +463 -0
- package/management-ui/src/components/ErrorBoundary.jsx +73 -0
- package/management-ui/src/components/IntegrationCard.jsx +481 -0
- package/management-ui/src/components/IntegrationCardEnhanced.jsx +770 -0
- package/management-ui/src/components/IntegrationExplorer.jsx +379 -0
- package/management-ui/src/components/IntegrationStatus.jsx +336 -0
- package/management-ui/src/components/Layout.jsx +716 -0
- package/management-ui/src/components/LoadingSpinner.jsx +113 -0
- package/management-ui/src/components/RepositoryPicker.jsx +248 -0
- package/management-ui/src/components/SessionMonitor.jsx +350 -0
- package/management-ui/src/components/StatusBadge.jsx +208 -0
- package/management-ui/src/components/UserContextSwitcher.jsx +212 -0
- package/management-ui/src/components/UserSimulation.jsx +327 -0
- package/management-ui/src/components/Welcome.jsx +434 -0
- package/management-ui/src/components/codegen/APIEndpointGenerator.jsx +637 -0
- package/management-ui/src/components/codegen/APIModuleSelector.jsx +227 -0
- package/management-ui/src/components/codegen/CodeGenerationWizard.jsx +247 -0
- package/management-ui/src/components/codegen/CodePreviewEditor.jsx +316 -0
- package/management-ui/src/components/codegen/DynamicModuleForm.jsx +271 -0
- package/management-ui/src/components/codegen/FormBuilder.jsx +737 -0
- package/management-ui/src/components/codegen/IntegrationGenerator.jsx +855 -0
- package/management-ui/src/components/codegen/ProjectScaffoldWizard.jsx +797 -0
- package/management-ui/src/components/codegen/SchemaBuilder.jsx +303 -0
- package/management-ui/src/components/codegen/TemplateSelector.jsx +586 -0
- package/management-ui/src/components/codegen/index.js +10 -0
- package/management-ui/src/components/connections/ConnectionConfigForm.jsx +362 -0
- package/management-ui/src/components/connections/ConnectionHealthMonitor.jsx +182 -0
- package/management-ui/src/components/connections/ConnectionTester.jsx +200 -0
- package/management-ui/src/components/connections/EntityRelationshipMapper.jsx +292 -0
- package/management-ui/src/components/connections/OAuthFlow.jsx +204 -0
- package/management-ui/src/components/connections/index.js +5 -0
- package/management-ui/src/components/index.js +21 -0
- package/management-ui/src/components/monitoring/APIGatewayMetrics.jsx +222 -0
- package/management-ui/src/components/monitoring/LambdaMetrics.jsx +169 -0
- package/management-ui/src/components/monitoring/MetricsChart.jsx +197 -0
- package/management-ui/src/components/monitoring/MonitoringDashboard.jsx +393 -0
- package/management-ui/src/components/monitoring/SQSMetrics.jsx +246 -0
- package/management-ui/src/components/monitoring/index.js +6 -0
- package/management-ui/src/components/monitoring/monitoring.css +218 -0
- package/management-ui/src/components/theme-provider.jsx +52 -0
- package/management-ui/src/components/theme-toggle.jsx +39 -0
- package/management-ui/src/components/ui/badge.tsx +36 -0
- package/management-ui/src/components/ui/button.test.jsx +56 -0
- package/management-ui/src/components/ui/button.tsx +57 -0
- package/management-ui/src/components/ui/card.tsx +76 -0
- package/management-ui/src/components/ui/dropdown-menu.tsx +199 -0
- package/management-ui/src/components/ui/select.tsx +157 -0
- package/management-ui/src/components/ui/skeleton.jsx +15 -0
- package/management-ui/src/hooks/useFrigg.jsx +601 -0
- package/management-ui/src/hooks/useSocket.jsx +58 -0
- package/management-ui/src/index.css +193 -0
- package/management-ui/src/lib/utils.ts +6 -0
- package/management-ui/src/main.jsx +10 -0
- package/management-ui/src/pages/CodeGeneration.jsx +14 -0
- package/management-ui/src/pages/Connections.jsx +252 -0
- package/management-ui/src/pages/ConnectionsEnhanced.jsx +633 -0
- package/management-ui/src/pages/Dashboard.jsx +311 -0
- package/management-ui/src/pages/Environment.jsx +314 -0
- package/management-ui/src/pages/IntegrationConfigure.jsx +669 -0
- package/management-ui/src/pages/IntegrationDiscovery.jsx +567 -0
- package/management-ui/src/pages/IntegrationTest.jsx +742 -0
- package/management-ui/src/pages/Integrations.jsx +253 -0
- package/management-ui/src/pages/Monitoring.jsx +17 -0
- package/management-ui/src/pages/Simulation.jsx +155 -0
- package/management-ui/src/pages/Users.jsx +492 -0
- package/management-ui/src/services/api.js +41 -0
- package/management-ui/src/services/apiModuleService.js +193 -0
- package/management-ui/src/services/websocket-handlers.js +120 -0
- package/management-ui/src/test/api/project.test.js +273 -0
- package/management-ui/src/test/components/Welcome.test.jsx +378 -0
- package/management-ui/src/test/mocks/server.js +178 -0
- package/management-ui/src/test/setup.js +61 -0
- package/management-ui/src/test/utils/test-utils.jsx +134 -0
- package/management-ui/src/utils/repository.js +98 -0
- package/management-ui/src/utils/repository.test.js +118 -0
- package/management-ui/src/workflows/phase2-integration-workflows.js +884 -0
- package/management-ui/tailwind.config.js +63 -0
- package/management-ui/tsconfig.json +37 -0
- package/management-ui/tsconfig.node.json +10 -0
- package/management-ui/vite.config.js +26 -0
- package/management-ui/vitest.config.js +38 -0
- package/package.json +20 -9
- package/infrastructure/app-handler-helpers.js +0 -57
- package/infrastructure/backend-utils.js +0 -90
- package/infrastructure/routers/auth.js +0 -26
- package/infrastructure/routers/integration-defined-routers.js +0 -37
- package/infrastructure/routers/middleware/loadUser.js +0 -15
- package/infrastructure/routers/middleware/requireLoggedInUser.js +0 -12
- package/infrastructure/routers/user.js +0 -41
- package/infrastructure/routers/websocket.js +0 -55
- package/infrastructure/workers/integration-defined-workers.js +0 -24
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test utilities for VPC/KMS/SSM testing
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const { mockEnvironmentVariables, mockFallbackEnvironmentVariables } = require('../fixtures/mock-aws-resources');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Set up environment variables for testing
|
|
9
|
+
* @param {Object} envVars - Environment variables to set
|
|
10
|
+
*/
|
|
11
|
+
function setTestEnvironmentVariables(envVars = mockEnvironmentVariables) {
|
|
12
|
+
Object.keys(envVars).forEach(key => {
|
|
13
|
+
process.env[key] = envVars[key];
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Clean up environment variables after testing
|
|
19
|
+
* @param {Object} envVars - Environment variables to clean up
|
|
20
|
+
*/
|
|
21
|
+
function cleanupTestEnvironmentVariables(envVars = mockEnvironmentVariables) {
|
|
22
|
+
Object.keys(envVars).forEach(key => {
|
|
23
|
+
delete process.env[key];
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Set up fallback environment variables for error testing
|
|
29
|
+
*/
|
|
30
|
+
function setFallbackEnvironmentVariables() {
|
|
31
|
+
setTestEnvironmentVariables(mockFallbackEnvironmentVariables);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Create a mock AWS SDK client send function
|
|
36
|
+
* @param {Array} responses - Array of responses to return in order
|
|
37
|
+
* @returns {Function} Mock send function
|
|
38
|
+
*/
|
|
39
|
+
function createMockSendFunction(responses) {
|
|
40
|
+
let callCount = 0;
|
|
41
|
+
return jest.fn().mockImplementation(() => {
|
|
42
|
+
const response = responses[callCount] || responses[responses.length - 1];
|
|
43
|
+
callCount++;
|
|
44
|
+
return Promise.resolve(response);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Create a mock serverless object for plugin testing
|
|
50
|
+
* @param {Object} serviceConfig - Serverless service configuration
|
|
51
|
+
* @param {Array} commands - Commands in processedInput
|
|
52
|
+
* @returns {Object} Mock serverless object
|
|
53
|
+
*/
|
|
54
|
+
function createMockServerless(serviceConfig = {}, commands = []) {
|
|
55
|
+
return {
|
|
56
|
+
cli: {
|
|
57
|
+
log: jest.fn()
|
|
58
|
+
},
|
|
59
|
+
service: {
|
|
60
|
+
provider: {
|
|
61
|
+
name: 'aws',
|
|
62
|
+
region: 'us-east-1',
|
|
63
|
+
...serviceConfig.provider
|
|
64
|
+
},
|
|
65
|
+
plugins: serviceConfig.plugins || [],
|
|
66
|
+
custom: serviceConfig.custom || {},
|
|
67
|
+
functions: serviceConfig.functions || {},
|
|
68
|
+
...serviceConfig
|
|
69
|
+
},
|
|
70
|
+
processedInput: {
|
|
71
|
+
commands: commands
|
|
72
|
+
},
|
|
73
|
+
getProvider: jest.fn(() => ({})),
|
|
74
|
+
extendConfiguration: jest.fn()
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Verify that environment variables are set correctly
|
|
80
|
+
* @param {Object} expectedVars - Expected environment variables
|
|
81
|
+
*/
|
|
82
|
+
function verifyEnvironmentVariables(expectedVars) {
|
|
83
|
+
Object.keys(expectedVars).forEach(key => {
|
|
84
|
+
expect(process.env[key]).toBe(expectedVars[key]);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Create a mock integration definition
|
|
90
|
+
* @param {string} name - Integration name
|
|
91
|
+
* @returns {Object} Mock integration
|
|
92
|
+
*/
|
|
93
|
+
function createMockIntegration(name = 'testIntegration') {
|
|
94
|
+
return {
|
|
95
|
+
Definition: {
|
|
96
|
+
name: name
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Create a mock app definition with specified features
|
|
103
|
+
* @param {Object} features - Features to enable (vpc, kms, ssm)
|
|
104
|
+
* @param {Array} integrations - Integration definitions
|
|
105
|
+
* @returns {Object} Mock app definition
|
|
106
|
+
*/
|
|
107
|
+
function createMockAppDefinition(features = {}, integrations = []) {
|
|
108
|
+
const appDefinition = {
|
|
109
|
+
name: 'test-app',
|
|
110
|
+
integrations: integrations
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
if (features.vpc) {
|
|
114
|
+
appDefinition.vpc = { enable: true };
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (features.kms) {
|
|
118
|
+
appDefinition.encryption = { fieldLevelEncryptionMethod: 'kms' };
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (features.ssm) {
|
|
122
|
+
appDefinition.ssm = { enable: true };
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return appDefinition;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Verify serverless configuration contains expected VPC settings
|
|
130
|
+
* @param {Object} config - Serverless configuration
|
|
131
|
+
*/
|
|
132
|
+
function verifyVpcConfiguration(config) {
|
|
133
|
+
expect(config.provider.vpc).toBe('${self:custom.vpc.${self:provider.stage}}');
|
|
134
|
+
expect(config.custom.vpc).toEqual({
|
|
135
|
+
'${self:provider.stage}': {
|
|
136
|
+
securityGroupIds: ['${env:AWS_DISCOVERY_SECURITY_GROUP_ID}'],
|
|
137
|
+
subnetIds: [
|
|
138
|
+
'${env:AWS_DISCOVERY_SUBNET_ID_1}',
|
|
139
|
+
'${env:AWS_DISCOVERY_SUBNET_ID_2}'
|
|
140
|
+
]
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
expect(config.resources.Resources.VPCEndpointS3).toBeDefined();
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Verify serverless configuration contains expected KMS settings
|
|
148
|
+
* @param {Object} config - Serverless configuration
|
|
149
|
+
*/
|
|
150
|
+
function verifyKmsConfiguration(config) {
|
|
151
|
+
expect(config.plugins).toContain('serverless-kms-grants');
|
|
152
|
+
expect(config.provider.environment.KMS_KEY_ARN).toBe('${self:custom.kmsGrants.kmsKeyId}');
|
|
153
|
+
expect(config.custom.kmsGrants).toEqual({
|
|
154
|
+
kmsKeyId: '${env:AWS_DISCOVERY_KMS_KEY_ID}'
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Verify KMS IAM permissions
|
|
158
|
+
const kmsPermission = config.provider.iamRoleStatements.find(
|
|
159
|
+
statement => statement.Action.includes('kms:GenerateDataKey')
|
|
160
|
+
);
|
|
161
|
+
expect(kmsPermission).toBeDefined();
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Verify serverless configuration contains expected SSM settings
|
|
166
|
+
* @param {Object} config - Serverless configuration
|
|
167
|
+
*/
|
|
168
|
+
function verifySsmConfiguration(config) {
|
|
169
|
+
expect(config.provider.layers).toEqual([
|
|
170
|
+
'arn:aws:lambda:${self:provider.region}:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11'
|
|
171
|
+
]);
|
|
172
|
+
expect(config.provider.environment.SSM_PARAMETER_PREFIX).toBe('/${self:service}/${self:provider.stage}');
|
|
173
|
+
|
|
174
|
+
// Verify SSM IAM permissions
|
|
175
|
+
const ssmPermission = config.provider.iamRoleStatements.find(
|
|
176
|
+
statement => statement.Action.includes('ssm:GetParameter')
|
|
177
|
+
);
|
|
178
|
+
expect(ssmPermission).toBeDefined();
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Verify integration-specific resources are created
|
|
183
|
+
* @param {Object} config - Serverless configuration
|
|
184
|
+
* @param {string} integrationName - Name of the integration
|
|
185
|
+
*/
|
|
186
|
+
function verifyIntegrationConfiguration(config, integrationName) {
|
|
187
|
+
const capitalizedName = integrationName.charAt(0).toUpperCase() + integrationName.slice(1);
|
|
188
|
+
|
|
189
|
+
// Verify integration function
|
|
190
|
+
expect(config.functions[integrationName]).toBeDefined();
|
|
191
|
+
|
|
192
|
+
// Verify queue worker function
|
|
193
|
+
expect(config.functions[`${integrationName}QueueWorker`]).toBeDefined();
|
|
194
|
+
|
|
195
|
+
// Verify SQS queue resource
|
|
196
|
+
expect(config.resources.Resources[`${capitalizedName}Queue`]).toBeDefined();
|
|
197
|
+
|
|
198
|
+
// Verify environment variable
|
|
199
|
+
expect(config.provider.environment[`${integrationName.toUpperCase()}_QUEUE_URL`]).toBeDefined();
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Wait for async operations to complete
|
|
204
|
+
* @param {number} ms - Milliseconds to wait
|
|
205
|
+
*/
|
|
206
|
+
function wait(ms = 0) {
|
|
207
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Capture console output for testing
|
|
212
|
+
*/
|
|
213
|
+
function captureConsoleOutput() {
|
|
214
|
+
const originalLog = console.log;
|
|
215
|
+
const originalError = console.error;
|
|
216
|
+
const originalWarn = console.warn;
|
|
217
|
+
|
|
218
|
+
const logs = [];
|
|
219
|
+
const errors = [];
|
|
220
|
+
const warnings = [];
|
|
221
|
+
|
|
222
|
+
console.log = (...args) => {
|
|
223
|
+
logs.push(args.join(' '));
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
console.error = (...args) => {
|
|
227
|
+
errors.push(args.join(' '));
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
console.warn = (...args) => {
|
|
231
|
+
warnings.push(args.join(' '));
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
return {
|
|
235
|
+
logs,
|
|
236
|
+
errors,
|
|
237
|
+
warnings,
|
|
238
|
+
restore: () => {
|
|
239
|
+
console.log = originalLog;
|
|
240
|
+
console.error = originalError;
|
|
241
|
+
console.warn = originalWarn;
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Mock process.argv for testing
|
|
248
|
+
* @param {Array} argv - Arguments to set
|
|
249
|
+
*/
|
|
250
|
+
function mockProcessArgv(argv = ['node', 'test']) {
|
|
251
|
+
const originalArgv = process.argv;
|
|
252
|
+
jest.spyOn(process, 'argv', 'get').mockReturnValue(argv);
|
|
253
|
+
|
|
254
|
+
return {
|
|
255
|
+
restore: () => {
|
|
256
|
+
process.argv = originalArgv;
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
module.exports = {
|
|
262
|
+
setTestEnvironmentVariables,
|
|
263
|
+
cleanupTestEnvironmentVariables,
|
|
264
|
+
setFallbackEnvironmentVariables,
|
|
265
|
+
createMockSendFunction,
|
|
266
|
+
createMockServerless,
|
|
267
|
+
verifyEnvironmentVariables,
|
|
268
|
+
createMockIntegration,
|
|
269
|
+
createMockAppDefinition,
|
|
270
|
+
verifyVpcConfiguration,
|
|
271
|
+
verifyKmsConfiguration,
|
|
272
|
+
verifySsmConfiguration,
|
|
273
|
+
verifyIntegrationConfiguration,
|
|
274
|
+
wait,
|
|
275
|
+
captureConsoleOutput,
|
|
276
|
+
mockProcessArgv
|
|
277
|
+
};
|