in codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/integration/HttpProtocolUnitTestRequestGenerator.java [114:208]
protected void generateTestCaseValues(GoWriter writer, HttpRequestTestCase testCase) {
writeStructField(writer, "Params", inputShape, testCase.getParams());
writeStructField(writer, "ExpectMethod", "$S", testCase.getMethod());
writeStructField(writer, "ExpectURIPath", "$S", testCase.getUri());
writeQueryItemsStructField(writer, "ExpectQuery", testCase.getQueryParams());
writeStringSliceStructField(writer, "RequireQuery", testCase.getRequireQueryParams());
writeStringSliceStructField(writer, "ForbidQuery", testCase.getForbidQueryParams());
writeHeaderStructField(writer, "ExpectHeader", testCase.getHeaders());
writeStringSliceStructField(writer, "RequireHeader", testCase.getRequireHeaders());
writeStringSliceStructField(writer, "ForbidHeader", testCase.getForbidHeaders());
if (testCase.getHost().isPresent()) {
writeStructField(writer, "Host", (w) -> {
var hostValue = testCase.getHost()
.orElse("");
if (hostValue.length() == 0) {
w.write("nil,");
return;
}
if (hostValue.split("://", 2).length == 1) {
hostValue = "https://" + hostValue;
}
w.pushState();
w.putContext("url", SymbolUtils.createPointableSymbolBuilder("URL",
SmithyGoDependency.NET_URL).build());
w.putContext("parse", SymbolUtils.createPointableSymbolBuilder("Parse",
SmithyGoDependency.NET_URL).build());
w.putContext("host", hostValue);
w.write("""
func () $url:P {
host := $host:S
if len(host) == 0 {
return nil
}
u, err := $parse:T(host)
if err != nil {
panic(err)
}
return u
}(),""");
w.popState();
});
}
String bodyMediaType = "";
if (testCase.getBodyMediaType().isPresent()) {
bodyMediaType = testCase.getBodyMediaType().get();
writeStructField(writer, "BodyMediaType", "$S", bodyMediaType);
}
if (testCase.getBody().isPresent()) {
String body = testCase.getBody().get();
writer.addUseImports(SmithyGoDependency.SMITHY_TESTING);
writer.addUseImports(SmithyGoDependency.IO);
if (body.length() == 0) {
writeStructField(writer, "BodyAssert", "func(actual io.Reader) error {\n"
+ " return smithytesting.CompareReaderEmpty(actual)\n"
+ "}");
} else {
String compareFunc = "";
switch (bodyMediaType.toLowerCase()) {
case "application/json":
compareFunc = String.format(
"return smithytesting.CompareJSONReaderBytes(actual, []byte(`%s`))",
body);
break;
case "application/xml":
compareFunc = String.format(
"return smithytesting.CompareXMLReaderBytes(actual, []byte(`%s`))",
body);
break;
case "application/x-www-form-urlencoded":
compareFunc = String.format(
"return smithytesting.CompareURLFormReaderBytes(actual, []byte(`%s`))",
body);
break;
case "application/cbor":
compareFunc = String.format(
"return smithytesting.CompareCBOR(actual, `%s`)",
body);
break;
default:
compareFunc = String.format(
"return smithytesting.CompareReaderBytes(actual, []byte(`%s`))",
body);
break;
}
writeStructField(writer, "BodyAssert", "func(actual io.Reader) error {\n $L \n}", compareFunc);
}
}
}