Skip to content

Commit 275876a

Browse files
authored
test(codegen): add unit tests for recent changes to integrations (#2534)
1 parent 8ee8c95 commit 275876a

File tree

8 files changed

+565
-24
lines changed

8 files changed

+565
-24
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
package software.amazon.smithy.aws.typescript.codegen;
2+
3+
import static org.hamcrest.MatcherAssert.assertThat;
4+
import static org.hamcrest.Matchers.containsString;
5+
import static org.hamcrest.Matchers.not;
6+
7+
import org.junit.jupiter.api.Test;
8+
import software.amazon.smithy.build.MockManifest;
9+
import software.amazon.smithy.build.PluginContext;
10+
import software.amazon.smithy.model.Model;
11+
import software.amazon.smithy.model.node.Node;
12+
import software.amazon.smithy.typescript.codegen.TypeScriptCodegenPlugin;
13+
14+
public class AddAwsAuthPluginTest {
15+
@Test
16+
public void awsClient() {
17+
Model model = Model.assembler()
18+
.addImport(getClass().getResource("NotSame.smithy"))
19+
.discoverModels()
20+
.assemble()
21+
.unwrap();
22+
MockManifest manifest = new MockManifest();
23+
PluginContext context = PluginContext.builder()
24+
.pluginClassLoader(getClass().getClassLoader())
25+
.model(model)
26+
.fileManifest(manifest)
27+
.settings(Node.objectNodeBuilder()
28+
.withMember("service", Node.from("smithy.example#OriginalName"))
29+
.withMember("package", Node.from("example"))
30+
.withMember("packageVersion", Node.from("1.0.0"))
31+
.build())
32+
.build();
33+
new TypeScriptCodegenPlugin().execute(context);
34+
35+
// Check dependencies
36+
assertThat(manifest.getFileString("package.json").get(),
37+
containsString(AwsDependency.CREDENTIAL_PROVIDER_NODE.packageName));
38+
39+
// Check config interface fields
40+
assertThat(manifest.getFileString("NotSameClient.ts").get(), containsString("credentialDefaultProvider?"));
41+
assertThat(manifest.getFileString("NotSameClient.ts").get(), not(containsString("signingName")));
42+
43+
// Check config files
44+
assertThat(manifest.getFileString("runtimeConfig.ts").get(),
45+
containsString("credentialDefaultProvider: decorateDefaultCredentialProvider"));
46+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("Credential is missing"));
47+
assertThat(manifest.getFileString("runtimeConfig.shared.ts").get(), not(containsString("signingName:")));
48+
49+
// Check the config resolution and middleware plugin
50+
assertThat(manifest.getFileString("NotSameClient.ts").get(), containsString("resolveAwsAuthConfig"));
51+
assertThat(manifest.getFileString("NotSameClient.ts").get(), containsString("getAwsAuthPlugin"));
52+
}
53+
54+
@Test
55+
public void sigV4GenericClient() {
56+
Model model = Model.assembler()
57+
.addImport(getClass().getResource("SsdkExampleSigV4.smithy"))
58+
.discoverModels()
59+
.assemble()
60+
.unwrap();
61+
MockManifest manifest = new MockManifest();
62+
PluginContext context = PluginContext.builder()
63+
.pluginClassLoader(getClass().getClassLoader())
64+
.model(model)
65+
.fileManifest(manifest)
66+
.settings(Node.objectNodeBuilder()
67+
.withMember("service", Node.from("smithy.example#SsdkExampleSigV4"))
68+
.withMember("package", Node.from("example"))
69+
.withMember("packageVersion", Node.from("1.0.0"))
70+
.build())
71+
.build();
72+
new TypeScriptCodegenPlugin().execute(context);
73+
74+
// Check dependencies
75+
assertThat(manifest.getFileString("package.json").get(),
76+
containsString(AwsDependency.CREDENTIAL_PROVIDER_NODE.packageName));
77+
78+
// Check config interface fields
79+
assertThat(manifest.getFileString("SsdkExampleSigV4Client.ts").get(), containsString("credentialDefaultProvider?"));
80+
assertThat(manifest.getFileString("SsdkExampleSigV4Client.ts").get(), containsString("signingName?"));
81+
82+
// Check config files
83+
assertThat(manifest.getFileString("runtimeConfig.ts").get(),
84+
containsString("credentialDefaultProvider: decorateDefaultCredentialProvider"));
85+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("Credential is missing"));
86+
assertThat(manifest.getFileString("runtimeConfig.shared.ts").get(), containsString("signingName:"));
87+
88+
// Check the config resolution and middleware plugin
89+
assertThat(manifest.getFileString("SsdkExampleSigV4Client.ts").get(), containsString("resolveSigV4AuthConfig"));
90+
assertThat(manifest.getFileString("SsdkExampleSigV4Client.ts").get(), containsString("getSigV4AuthPlugin"));
91+
}
92+
93+
@Test
94+
public void notSigV4GenericClient() {
95+
Model model = Model.assembler()
96+
.addImport(getClass().getResource("SsdkExample.smithy"))
97+
.discoverModels()
98+
.assemble()
99+
.unwrap();
100+
MockManifest manifest = new MockManifest();
101+
PluginContext context = PluginContext.builder()
102+
.pluginClassLoader(getClass().getClassLoader())
103+
.model(model)
104+
.fileManifest(manifest)
105+
.settings(Node.objectNodeBuilder()
106+
.withMember("service", Node.from("smithy.example#SsdkExample"))
107+
.withMember("package", Node.from("example"))
108+
.withMember("packageVersion", Node.from("1.0.0"))
109+
.build())
110+
.build();
111+
new TypeScriptCodegenPlugin().execute(context);
112+
113+
// Check dependencies
114+
assertThat(manifest.getFileString("package.json").get(),
115+
not(containsString(AwsDependency.CREDENTIAL_PROVIDER_NODE.packageName)));
116+
117+
// Check config interface fields
118+
assertThat(manifest.getFileString("SsdkExampleClient.ts").get(), not(containsString("credentialDefaultProvider?")));
119+
assertThat(manifest.getFileString("SsdkExampleClient.ts").get(), not(containsString("signingName?")));
120+
121+
// Check config files
122+
assertThat(manifest.getFileString("runtimeConfig.ts").get(),
123+
not(containsString("credentialDefaultProvider: decorateDefaultCredentialProvider")));
124+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), not(containsString("Credential is missing")));
125+
assertThat(manifest.getFileString("runtimeConfig.shared.ts").get(), not(containsString("signingName:")));
126+
127+
// Check the config resolution and middleware plugin
128+
assertThat(manifest.getFileString("SsdkExampleClient.ts").get(), not(containsString("resolveSigV4AuthConfig")));
129+
assertThat(manifest.getFileString("SsdkExampleClient.ts").get(), not(containsString("resolveAwsV4AuthConfig")));
130+
}
131+
}

codegen/smithy-aws-typescript-codegen/src/test/java/software/amazon/smithy/aws/typescript/codegen/AddAwsRuntimeConfigTest.java

Lines changed: 122 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@
22

33
import static org.hamcrest.MatcherAssert.assertThat;
44
import static org.hamcrest.Matchers.containsString;
5+
import static org.hamcrest.Matchers.not;
56

67
import org.junit.jupiter.api.Test;
78
import software.amazon.smithy.build.MockManifest;
89
import software.amazon.smithy.build.PluginContext;
910
import software.amazon.smithy.model.Model;
1011
import software.amazon.smithy.model.node.Node;
1112
import software.amazon.smithy.typescript.codegen.TypeScriptCodegenPlugin;
13+
import software.amazon.smithy.typescript.codegen.TypeScriptDependency;
1214

1315
public class AddAwsRuntimeConfigTest {
1416
@Test
15-
public void addsAwsRuntimeConfigSettings() {
17+
public void awsClient() {
1618
Model model = Model.assembler()
1719
.addImport(getClass().getResource("NotSame.smithy"))
1820
.discoverModels()
@@ -31,15 +33,127 @@ public void addsAwsRuntimeConfigSettings() {
3133
.build();
3234
new TypeScriptCodegenPlugin().execute(context);
3335

34-
// Check that one of the many dependencies was added.
36+
// Check dependencies
3537
assertThat(manifest.getFileString("package.json").get(),
36-
containsString(AwsDependency.CREDENTIAL_PROVIDER_NODE.packageName));
38+
containsString(AwsDependency.NODE_CONFIG_PROVIDER.packageName));
39+
assertThat(manifest.getFileString("package.json").get(),
40+
containsString(TypeScriptDependency.CONFIG_RESOLVER.packageName));
41+
assertThat(manifest.getFileString("package.json").get(),
42+
containsString(TypeScriptDependency.MIDDLEWARE_RETRY.packageName));
43+
44+
// Check config interface fields
45+
assertThat(manifest.getFileString("NotSameClient.ts").get(), containsString("serviceId?:"));
46+
assertThat(manifest.getFileString("NotSameClient.ts").get(), containsString("region?:"));
47+
assertThat(manifest.getFileString("NotSameClient.ts").get(), containsString("maxAttempts?:"));
48+
assertThat(manifest.getFileString("NotSameClient.ts").get(), containsString("retryModeProvider?:"));
49+
assertThat(manifest.getFileString("NotSameClient.ts").get(), containsString("logger?:"));
50+
51+
// Check config files
52+
assertThat(manifest.getFileString("runtimeConfig.shared.ts").get(), containsString("serviceId: \"Not Same\""));
53+
assertThat(manifest.getFileString("runtimeConfig.shared.ts").get(), containsString("logger:"));
54+
55+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("region: invalidProvider"));
56+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("maxAttempts:"));
57+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("retryModeProvider:"));
58+
59+
assertThat(manifest.getFileString("runtimeConfig.ts").get(), containsString("region: loadNodeConfig"));
60+
assertThat(manifest.getFileString("runtimeConfig.ts").get(), containsString("maxAttempts:"));
61+
assertThat(manifest.getFileString("runtimeConfig.ts").get(), containsString("retryModeProvider:"));
62+
}
63+
64+
@Test
65+
public void sigV4GenericClient() {
66+
Model model = Model.assembler()
67+
.addImport(getClass().getResource("SsdkExampleSigV4.smithy"))
68+
.discoverModels()
69+
.assemble()
70+
.unwrap();
71+
MockManifest manifest = new MockManifest();
72+
PluginContext context = PluginContext.builder()
73+
.pluginClassLoader(getClass().getClassLoader())
74+
.model(model)
75+
.fileManifest(manifest)
76+
.settings(Node.objectNodeBuilder()
77+
.withMember("service", Node.from("smithy.example#SsdkExampleSigV4"))
78+
.withMember("package", Node.from("example"))
79+
.withMember("packageVersion", Node.from("1.0.0"))
80+
.build())
81+
.build();
82+
new TypeScriptCodegenPlugin().execute(context);
83+
84+
// Check dependencies
85+
assertThat(manifest.getFileString("package.json").get(),
86+
containsString(AwsDependency.NODE_CONFIG_PROVIDER.packageName));
87+
assertThat(manifest.getFileString("package.json").get(),
88+
containsString(TypeScriptDependency.CONFIG_RESOLVER.packageName));
89+
assertThat(manifest.getFileString("package.json").get(),
90+
containsString(TypeScriptDependency.MIDDLEWARE_RETRY.packageName));
91+
92+
// Check config interface fields
93+
assertThat(manifest.getFileString("SsdkExampleSigV4Client.ts").get(), not(containsString("serviceId?:")));
94+
assertThat(manifest.getFileString("SsdkExampleSigV4Client.ts").get(), containsString("region?:"));
95+
assertThat(manifest.getFileString("SsdkExampleSigV4Client.ts").get(), containsString("maxAttempts?:"));
96+
assertThat(manifest.getFileString("SsdkExampleSigV4Client.ts").get(), containsString("retryModeProvider?:"));
97+
assertThat(manifest.getFileString("SsdkExampleSigV4Client.ts").get(), containsString("logger?:"));
98+
99+
// Check config files
100+
assertThat(manifest.getFileString("runtimeConfig.shared.ts").get(), not(containsString("serviceId:")));
101+
assertThat(manifest.getFileString("runtimeConfig.shared.ts").get(), containsString("logger:"));
102+
103+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("region: invalidProvider"));
104+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("maxAttempts:"));
105+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("retryModeProvider:"));
106+
107+
assertThat(manifest.getFileString("runtimeConfig.ts").get(), containsString("region: loadNodeConfig"));
108+
assertThat(manifest.getFileString("runtimeConfig.ts").get(), containsString("maxAttempts:"));
109+
assertThat(manifest.getFileString("runtimeConfig.ts").get(), containsString("retryModeProvider:"));
110+
}
111+
112+
@Test
113+
public void notSigV4GenericClient() {
114+
Model model = Model.assembler()
115+
.addImport(getClass().getResource("SsdkExample.smithy"))
116+
.discoverModels()
117+
.assemble()
118+
.unwrap();
119+
MockManifest manifest = new MockManifest();
120+
PluginContext context = PluginContext.builder()
121+
.pluginClassLoader(getClass().getClassLoader())
122+
.model(model)
123+
.fileManifest(manifest)
124+
.settings(Node.objectNodeBuilder()
125+
.withMember("service", Node.from("smithy.example#SsdkExample"))
126+
.withMember("package", Node.from("example"))
127+
.withMember("packageVersion", Node.from("1.0.0"))
128+
.build())
129+
.build();
130+
new TypeScriptCodegenPlugin().execute(context);
131+
132+
// Check dependencies
133+
assertThat(manifest.getFileString("package.json").get(),
134+
containsString(AwsDependency.NODE_CONFIG_PROVIDER.packageName));
135+
assertThat(manifest.getFileString("package.json").get(),
136+
containsString(TypeScriptDependency.CONFIG_RESOLVER.packageName));
137+
assertThat(manifest.getFileString("package.json").get(),
138+
containsString(TypeScriptDependency.MIDDLEWARE_RETRY.packageName));
139+
140+
// Check config interface fields
141+
assertThat(manifest.getFileString("SsdkExampleClient.ts").get(), not(containsString("serviceId?:")));
142+
assertThat(manifest.getFileString("SsdkExampleClient.ts").get(), not(containsString("region?:")));
143+
assertThat(manifest.getFileString("SsdkExampleClient.ts").get(), containsString("maxAttempts?:"));
144+
assertThat(manifest.getFileString("SsdkExampleClient.ts").get(), containsString("retryModeProvider?:"));
145+
assertThat(manifest.getFileString("SsdkExampleClient.ts").get(), containsString("logger?:"));
146+
147+
// Check config files
148+
assertThat(manifest.getFileString("runtimeConfig.shared.ts").get(), not(containsString("serviceId:")));
149+
assertThat(manifest.getFileString("runtimeConfig.shared.ts").get(), containsString("logger:"));
37150

38-
// Check that both the config files were updated.
39-
assertThat(manifest.getFileString("runtimeConfig.ts").get(), containsString("credentialDefaultProvider"));
40-
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("invalidProvider"));
151+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), not(containsString("region:")));
152+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("maxAttempts:"));
153+
assertThat(manifest.getFileString("runtimeConfig.browser.ts").get(), containsString("retryModeProvider:"));
41154

42-
// Check that the dependency interface was updated.
43-
assertThat(manifest.getFileString("NotSameClient.ts").get(), containsString("credentialDefaultProvider?"));
155+
assertThat(manifest.getFileString("runtimeConfig.ts").get(), not(containsString("region:")));
156+
assertThat(manifest.getFileString("runtimeConfig.ts").get(), containsString("maxAttempts:"));
157+
assertThat(manifest.getFileString("runtimeConfig.ts").get(), containsString("retryModeProvider:"));
44158
}
45159
}

0 commit comments

Comments
 (0)