adding a real test Method for API gateway
This commit is contained in:
@@ -13,6 +13,7 @@ import {
|
||||
PutIntegrationResponseCommand,
|
||||
PutMethodCommand,
|
||||
PutMethodResponseCommand,
|
||||
TestInvokeMethodCommand,
|
||||
type APIGatewayClient,
|
||||
type Integration,
|
||||
type IntegrationResponse,
|
||||
@@ -24,7 +25,7 @@ import {apiGateway as defaultApiGateway, defaultAccountId, lambda as defaultLamb
|
||||
import {awsApiGatewaySchema} from '../cloud-spi/apigatewaySchema'
|
||||
import {ValidationError} from '../cloud-spi/errors'
|
||||
import {awsEndpoint} from '../service/runtimeProbe'
|
||||
import type {ApiGatewayCorsInput, ApiGatewayCorsResult, ApiGatewayDeleteRouteInput, ApiGatewayLambdaRouteInput, ApiGatewayLambdaRouteResult, ApiGatewayRouteOverview, ApiGatewayRoutesResult, ApiGatewayTestRouteInput, ApiGatewayTestRouteResult, CloudResource, CloudServiceAdapter, CreateResourceInput, ResourceQuery, ServiceSchema} from '../cloud-spi/types'
|
||||
import type {ApiGatewayCorsInput, ApiGatewayCorsResult, ApiGatewayDeleteRouteInput, ApiGatewayLambdaRouteInput, ApiGatewayLambdaRouteResult, ApiGatewayMethodTestInput, ApiGatewayMethodTestResult, ApiGatewayRouteOverview, ApiGatewayRoutesResult, ApiGatewayTestRouteInput, ApiGatewayTestRouteResult, CloudResource, CloudServiceAdapter, CreateResourceInput, ResourceQuery, ServiceSchema} from '../cloud-spi/types'
|
||||
|
||||
export class AwsApiGatewayAdapter implements CloudServiceAdapter {
|
||||
readonly cloud = 'aws' as const
|
||||
@@ -173,6 +174,38 @@ export class AwsApiGatewayAdapter implements CloudServiceAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
async testApiGatewayMethod(apiId: string, input: ApiGatewayMethodTestInput): Promise<ApiGatewayMethodTestResult> {
|
||||
const resourceId = stringValue(input.resourceId)
|
||||
const httpMethod = input.httpMethod.toUpperCase()
|
||||
const pathWithQueryString = stringValue(input.pathWithQueryString)
|
||||
if (!resourceId) throw new ValidationError('resourceId is required')
|
||||
if (!['GET', 'POST', 'PUT', 'DELETE'].includes(httpMethod)) {
|
||||
throw new ValidationError('httpMethod must be GET, POST, PUT, or DELETE')
|
||||
}
|
||||
if (!pathWithQueryString.startsWith('/')) {
|
||||
throw new ValidationError('pathWithQueryString must start with /')
|
||||
}
|
||||
|
||||
const result = await this.apiGateway.send(new TestInvokeMethodCommand({
|
||||
restApiId: apiId,
|
||||
resourceId,
|
||||
httpMethod,
|
||||
pathWithQueryString,
|
||||
body: input.body,
|
||||
headers: input.headers,
|
||||
multiValueHeaders: input.multiValueHeaders,
|
||||
stageVariables: input.stageVariables,
|
||||
}))
|
||||
return {
|
||||
statusCode: result.status ?? 0,
|
||||
body: result.body ?? '',
|
||||
headers: result.headers ?? {},
|
||||
multiValueHeaders: result.multiValueHeaders ?? {},
|
||||
log: result.log ?? null,
|
||||
latency: result.latency ?? null,
|
||||
}
|
||||
}
|
||||
|
||||
async listApiGatewayRoutes(apiId: string): Promise<ApiGatewayRoutesResult> {
|
||||
const resources = []
|
||||
let position: string | undefined
|
||||
|
||||
Reference in New Issue
Block a user