Skip to content

Commit

Permalink
chore: add test
Browse files Browse the repository at this point in the history
  • Loading branch information
Maed223 committed Jan 3, 2024
1 parent ffd2b73 commit af560e6
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 15 deletions.
69 changes: 55 additions & 14 deletions packages/@cdktf/provider-generator/lib/__tests__/provider.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,29 @@ function directorySnapshot(root: string) {
return output;
}

function resourceTypesPresentInSnapshot(
snapshot: SynthOutput,
providerNameInPath: string
) {
const resources: string[] = [];
const files = Object.keys(snapshot);
for (const file of files) {
const match = file.match(
`/providers\/${providerNameInPath}\/(.*?)\/index\.ts/`
);
// avoids any not resources from being pushed
if (
match &&
!match[1].includes("/") &&
!match[1].includes("data-") &&
!match[1].includes("provider")
) {
resources.push(match[1]);
}
}
return resources;
}

describe("Provider", () => {
it("generates a provider", async () => {
const constraint = new TerraformProviderConstraint(
Expand Down Expand Up @@ -76,20 +99,9 @@ describe("Provider", () => {
await maker.generate([constraint]);
const snapshot = directorySnapshot(workdir);

const terraformResourceTypesPresent: string[] = [];
const files = Object.keys(snapshot);
for (const file of files) {
const match = file.match(/providers\/datadog\/(.*?)\/index\.ts/);
// avoids any not resources from being pushed
if (
match &&
!match[1].includes("/") &&
!match[1].includes("data-") &&
!match[1].includes("provider")
) {
terraformResourceTypesPresent.push(match[1]);
}
}
const terraformResourceTypesPresent: string[] =
resourceTypesPresentInSnapshot(snapshot, "datadog");

terraformResourceTypesPresent.forEach((resource) => {
let terraformResourceType = resource.replace(/-/g, "_");
if (!terraformResourceType.includes("datadog")) {
Expand All @@ -104,4 +116,33 @@ describe("Provider", () => {
});
});
}, 600_000);
it("has name in constraint that does not match resolved name in fqpn", async () => {
const constraint = new TerraformProviderConstraint({
name: "dockerr",
source: "registry.terraform.io/kreuzwerker/docker",
version: "3.0.2",
});
return await mkdtemp(async (workdir) => {
const jsiiPath = path.join(workdir, ".jsii");
const maker = new ConstructsMaker(
{
codeMakerOutput: workdir,
outputJsii: jsiiPath,
targetLanguage: Language.TYPESCRIPT,
},
process.env.CDKTF_EXPERIMENTAL_PROVIDER_SCHEMA_CACHE_PATH
);
await maker.generate([constraint]);
const snapshot = directorySnapshot(workdir);

const terraformResourceTypesPresent: string[] =
resourceTypesPresentInSnapshot(snapshot, "dockerr");

terraformResourceTypesPresent.forEach((resource) => {
expect(
snapshot[`providers/dockerr/${resource}/index.ts`]
).toBeDefined();
});
});
}, 600_000);
});
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,9 @@ class Parser {
): ResourceModel {
let baseName = type;

const providerNameFromConstraint = constraint?.name as ProviderName;
const providerNameFromConstraint = constraint
? (constraint.name as ProviderName)
: undefined;
const providerNameFromFQPN = parseFQPN(fqpn).name;

if (baseName.startsWith(`${providerNameFromFQPN}_`)) {
Expand Down

0 comments on commit af560e6

Please sign in to comment.