Skip to content

Commit 7aad28f

Browse files
authored
[TFDN-858] Add Tool Version Arch Tests (#1173)
* terraform version tests with archs * sentinel version arch tests * opa version tests, update other missed tests too * update archs with arm, check for nil url/sha on toolversion * lint
1 parent 712bff2 commit 7aad28f

File tree

3 files changed

+261
-0
lines changed

3 files changed

+261
-0
lines changed

admin_opa_version_integration_test.go

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ func TestAdminOPAVersions_List(t *testing.T) {
6161
assert.NotNil(t, item.Beta)
6262
assert.NotNil(t, item.Usage)
6363
assert.NotNil(t, item.CreatedAt)
64+
assert.NotEmpty(t, item.Archs)
6465
}
6566
})
6667

@@ -138,6 +139,13 @@ func TestAdminOPAVersions_CreateDelete(t *testing.T) {
138139
assert.Equal(t, *opts.DeprecatedReason, *ov.DeprecatedReason)
139140
assert.Equal(t, *opts.Enabled, ov.Enabled)
140141
assert.Equal(t, *opts.Beta, ov.Beta)
142+
assert.Equal(t, len(opts.Archs), len(ov.Archs))
143+
for i, arch := range opts.Archs {
144+
assert.Equal(t, arch.URL, ov.Archs[i].URL)
145+
assert.Equal(t, arch.Sha, ov.Archs[i].Sha)
146+
assert.Equal(t, arch.OS, ov.Archs[i].OS)
147+
assert.Equal(t, arch.Arch, ov.Archs[i].Arch)
148+
}
141149
})
142150

143151
t.Run("with valid options including, url, and sha", func(t *testing.T) {
@@ -167,6 +175,11 @@ func TestAdminOPAVersions_CreateDelete(t *testing.T) {
167175
assert.Equal(t, *opts.DeprecatedReason, *ov.DeprecatedReason)
168176
assert.Equal(t, *opts.Enabled, ov.Enabled)
169177
assert.Equal(t, *opts.Beta, ov.Beta)
178+
assert.Equal(t, 1, len(ov.Archs))
179+
assert.Equal(t, opts.URL, ov.Archs[0].URL)
180+
assert.Equal(t, opts.SHA, ov.Archs[0].Sha)
181+
assert.Equal(t, linux, ov.Archs[0].OS)
182+
assert.Equal(t, amd64, ov.Archs[0].Arch)
170183
})
171184

172185
t.Run("with only required options including tool version url and sha", func(t *testing.T) {
@@ -192,6 +205,11 @@ func TestAdminOPAVersions_CreateDelete(t *testing.T) {
192205
assert.Nil(t, ov.DeprecatedReason)
193206
assert.Equal(t, true, ov.Enabled)
194207
assert.Equal(t, false, ov.Beta)
208+
assert.Equal(t, 1, len(ov.Archs))
209+
assert.Equal(t, opts.URL, ov.Archs[0].URL)
210+
assert.Equal(t, opts.SHA, ov.Archs[0].Sha)
211+
assert.Equal(t, linux, ov.Archs[0].OS)
212+
assert.Equal(t, amd64, ov.Archs[0].Arch)
195213
})
196214

197215
t.Run("with only required options including archs", func(t *testing.T) {
@@ -226,6 +244,13 @@ func TestAdminOPAVersions_CreateDelete(t *testing.T) {
226244
assert.Nil(t, ov.DeprecatedReason)
227245
assert.Equal(t, true, ov.Enabled)
228246
assert.Equal(t, false, ov.Beta)
247+
assert.Equal(t, len(opts.Archs), len(ov.Archs))
248+
for i, arch := range opts.Archs {
249+
assert.Equal(t, arch.URL, ov.Archs[i].URL)
250+
assert.Equal(t, arch.Sha, ov.Archs[i].Sha)
251+
assert.Equal(t, arch.OS, ov.Archs[i].OS)
252+
assert.Equal(t, arch.Arch, ov.Archs[i].Arch)
253+
}
229254
})
230255

231256
t.Run("with empty options", func(t *testing.T) {
@@ -279,6 +304,13 @@ func TestAdminOPAVersions_ReadUpdate(t *testing.T) {
279304
assert.Equal(t, *opts.DeprecatedReason, *ov.DeprecatedReason)
280305
assert.Equal(t, *opts.Enabled, ov.Enabled)
281306
assert.Equal(t, *opts.Beta, ov.Beta)
307+
assert.Equal(t, len(opts.Archs), len(ov.Archs))
308+
for i, arch := range opts.Archs {
309+
assert.Equal(t, arch.URL, ov.Archs[i].URL)
310+
assert.Equal(t, arch.Sha, ov.Archs[i].Sha)
311+
assert.Equal(t, arch.OS, ov.Archs[i].OS)
312+
assert.Equal(t, arch.Arch, ov.Archs[i].Arch)
313+
}
282314

283315
updateVersion := createAdminOPAVersion()
284316
updateURL := "https://app.terraform.io/"
@@ -298,6 +330,63 @@ func TestAdminOPAVersions_ReadUpdate(t *testing.T) {
298330
assert.Equal(t, *updateOpts.Deprecated, ov.Deprecated)
299331
assert.Equal(t, *opts.Enabled, ov.Enabled)
300332
assert.Equal(t, *opts.Beta, ov.Beta)
333+
assert.Equal(t, len(opts.Archs), len(ov.Archs))
334+
assert.Equal(t, *updateOpts.URL, ov.Archs[0].URL)
335+
assert.Equal(t, opts.Archs[0].Sha, ov.Archs[0].Sha)
336+
assert.Equal(t, opts.Archs[0].OS, ov.Archs[0].OS)
337+
assert.Equal(t, opts.Archs[0].Arch, ov.Archs[0].Arch)
338+
})
339+
340+
t.Run("update with Archs", func(t *testing.T) {
341+
version := genSafeRandomTerraformVersion()
342+
sha := String(genSha(t))
343+
opts := AdminOPAVersionCreateOptions{
344+
Version: *String(version),
345+
Official: Bool(false),
346+
Deprecated: Bool(true),
347+
DeprecatedReason: String("Test Reason"),
348+
Enabled: Bool(false),
349+
Beta: Bool(false),
350+
Archs: []*ToolVersionArchitecture{{
351+
URL: "https://www.hashicorp.com",
352+
Sha: *sha,
353+
OS: linux,
354+
Arch: amd64,
355+
}},
356+
}
357+
ov, err := client.Admin.OPAVersions.Create(ctx, opts)
358+
require.NoError(t, err)
359+
id := ov.ID
360+
361+
defer func() {
362+
deleteErr := client.Admin.OPAVersions.Delete(ctx, id)
363+
require.NoError(t, deleteErr)
364+
}()
365+
366+
updateArchOpts := AdminOPAVersionUpdateOptions{
367+
Archs: []*ToolVersionArchitecture{{
368+
URL: "https://www.hashicorp.com",
369+
Sha: *sha,
370+
OS: linux,
371+
Arch: arm64,
372+
}},
373+
}
374+
375+
ov, err = client.Admin.OPAVersions.Update(ctx, id, updateArchOpts)
376+
require.NoError(t, err)
377+
378+
assert.Equal(t, opts.Version, ov.Version)
379+
assert.Equal(t, "", ov.URL)
380+
assert.Equal(t, "", ov.SHA)
381+
assert.Equal(t, *opts.Official, ov.Official)
382+
assert.Equal(t, *opts.Deprecated, ov.Deprecated)
383+
assert.Equal(t, *opts.Enabled, ov.Enabled)
384+
assert.Equal(t, *opts.Beta, ov.Beta)
385+
assert.Equal(t, len(ov.Archs), 1)
386+
assert.Equal(t, updateArchOpts.Archs[0].URL, ov.Archs[0].URL)
387+
assert.Equal(t, updateArchOpts.Archs[0].Sha, ov.Archs[0].Sha)
388+
assert.Equal(t, updateArchOpts.Archs[0].OS, ov.Archs[0].OS)
389+
assert.Equal(t, updateArchOpts.Archs[0].Arch, ov.Archs[0].Arch)
301390
})
302391

303392
t.Run("with non-existent OPA version", func(t *testing.T) {

admin_sentinel_version_integration_test.go

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ func TestAdminSentinelVersions_List(t *testing.T) {
6161
assert.NotNil(t, item.Beta)
6262
assert.NotNil(t, item.Usage)
6363
assert.NotNil(t, item.CreatedAt)
64+
assert.NotNil(t, item.Archs)
6465
}
6566
})
6667

@@ -138,6 +139,13 @@ func TestAdminSentinelVersions_CreateDelete(t *testing.T) {
138139
assert.Equal(t, *opts.DeprecatedReason, *sv.DeprecatedReason)
139140
assert.Equal(t, *opts.Enabled, sv.Enabled)
140141
assert.Equal(t, *opts.Beta, sv.Beta)
142+
assert.Equal(t, len(opts.Archs), len(sv.Archs))
143+
for i, arch := range opts.Archs {
144+
assert.Equal(t, arch.URL, sv.Archs[i].URL)
145+
assert.Equal(t, arch.Sha, sv.Archs[i].Sha)
146+
assert.Equal(t, arch.OS, sv.Archs[i].OS)
147+
assert.Equal(t, arch.Arch, sv.Archs[i].Arch)
148+
}
141149
})
142150

143151
t.Run("with valid options including url, and sha", func(t *testing.T) {
@@ -167,6 +175,11 @@ func TestAdminSentinelVersions_CreateDelete(t *testing.T) {
167175
assert.Equal(t, *opts.DeprecatedReason, *sv.DeprecatedReason)
168176
assert.Equal(t, *opts.Enabled, sv.Enabled)
169177
assert.Equal(t, *opts.Beta, sv.Beta)
178+
assert.Equal(t, 1, len(sv.Archs))
179+
assert.Equal(t, opts.URL, sv.Archs[0].URL)
180+
assert.Equal(t, opts.SHA, sv.Archs[0].Sha)
181+
assert.Equal(t, linux, sv.Archs[0].OS)
182+
assert.Equal(t, amd64, sv.Archs[0].Arch)
170183
})
171184

172185
t.Run("with only required options including tool version url and sha", func(t *testing.T) {
@@ -192,6 +205,13 @@ func TestAdminSentinelVersions_CreateDelete(t *testing.T) {
192205
assert.Nil(t, sv.DeprecatedReason)
193206
assert.Equal(t, true, sv.Enabled)
194207
assert.Equal(t, false, sv.Beta)
208+
assert.Equal(t, 1, len(sv.Archs))
209+
for i, arch := range opts.Archs {
210+
assert.Equal(t, arch.URL, sv.Archs[i].URL)
211+
assert.Equal(t, arch.Sha, sv.Archs[i].Sha)
212+
assert.Equal(t, arch.OS, sv.Archs[i].OS)
213+
assert.Equal(t, arch.Arch, sv.Archs[i].Arch)
214+
}
195215
})
196216

197217
t.Run("with only required options including archs", func(t *testing.T) {
@@ -226,6 +246,13 @@ func TestAdminSentinelVersions_CreateDelete(t *testing.T) {
226246
assert.Nil(t, sv.DeprecatedReason)
227247
assert.Equal(t, true, sv.Enabled)
228248
assert.Equal(t, false, sv.Beta)
249+
assert.Equal(t, len(opts.Archs), len(sv.Archs))
250+
for i, arch := range opts.Archs {
251+
assert.Equal(t, arch.URL, sv.Archs[i].URL)
252+
assert.Equal(t, arch.Sha, sv.Archs[i].Sha)
253+
assert.Equal(t, arch.OS, sv.Archs[i].OS)
254+
assert.Equal(t, arch.Arch, sv.Archs[i].Arch)
255+
}
229256
})
230257

231258
t.Run("with empty options", func(t *testing.T) {
@@ -279,6 +306,13 @@ func TestAdminSentinelVersions_ReadUpdate(t *testing.T) {
279306
assert.Equal(t, *opts.DeprecatedReason, *sv.DeprecatedReason)
280307
assert.Equal(t, *opts.Enabled, sv.Enabled)
281308
assert.Equal(t, *opts.Beta, sv.Beta)
309+
assert.Equal(t, len(opts.Archs), len(sv.Archs))
310+
for i, arch := range opts.Archs {
311+
assert.Equal(t, arch.URL, sv.Archs[i].URL)
312+
assert.Equal(t, arch.Sha, sv.Archs[i].Sha)
313+
assert.Equal(t, arch.OS, sv.Archs[i].OS)
314+
assert.Equal(t, arch.Arch, sv.Archs[i].Arch)
315+
}
282316

283317
updateVersion := createAdminSentinelVersion()
284318
updateURL := "https://app.terraform.io/"
@@ -298,6 +332,65 @@ func TestAdminSentinelVersions_ReadUpdate(t *testing.T) {
298332
assert.Equal(t, *updateOpts.Deprecated, sv.Deprecated)
299333
assert.Equal(t, *opts.Enabled, sv.Enabled)
300334
assert.Equal(t, *opts.Beta, sv.Beta)
335+
assert.Equal(t, len(opts.Archs), len(sv.Archs))
336+
assert.Equal(t, updateURL, sv.Archs[0].URL)
337+
assert.Equal(t, opts.SHA, sv.Archs[0].Sha)
338+
assert.Equal(t, opts.Archs[0].OS, sv.Archs[0].OS)
339+
assert.Equal(t, opts.Archs[0].Arch, sv.Archs[0].Arch)
340+
})
341+
342+
t.Run("update with Archs", func(t *testing.T) {
343+
version := createAdminSentinelVersion()
344+
sha := String(genSha(t))
345+
opts := AdminSentinelVersionCreateOptions{
346+
Version: *String(version),
347+
URL: *String("https://www.hashicorp.com"),
348+
SHA: *String(genSha(t)),
349+
Official: Bool(false),
350+
Deprecated: Bool(true),
351+
DeprecatedReason: String("Test Reason"),
352+
Enabled: Bool(false),
353+
Beta: Bool(false),
354+
Archs: []*ToolVersionArchitecture{{
355+
URL: "https://www.hashicorp.com",
356+
Sha: *sha,
357+
OS: linux,
358+
Arch: amd64,
359+
}},
360+
}
361+
sv, err := client.Admin.SentinelVersions.Create(ctx, opts)
362+
require.NoError(t, err)
363+
id := sv.ID
364+
365+
defer func() {
366+
deleteErr := client.Admin.SentinelVersions.Delete(ctx, id)
367+
require.NoError(t, deleteErr)
368+
}()
369+
370+
updateArchOpts := AdminSentinelVersionUpdateOptions{
371+
Archs: []*ToolVersionArchitecture{{
372+
URL: "https://www.hashicorp.com",
373+
Sha: *sha,
374+
OS: linux,
375+
Arch: arm64,
376+
}},
377+
}
378+
379+
sv, err = client.Admin.SentinelVersions.Update(ctx, id, updateArchOpts)
380+
require.NoError(t, err)
381+
382+
assert.Equal(t, opts.Version, sv.Version)
383+
assert.Equal(t, "", sv.URL)
384+
assert.Equal(t, "", sv.SHA)
385+
assert.Equal(t, *opts.Official, sv.Official)
386+
assert.Equal(t, *opts.Deprecated, sv.Deprecated)
387+
assert.Equal(t, *opts.Enabled, sv.Enabled)
388+
assert.Equal(t, *opts.Beta, sv.Beta)
389+
assert.Equal(t, len(sv.Archs), 1)
390+
assert.Equal(t, updateArchOpts.Archs[0].URL, sv.Archs[0].URL)
391+
assert.Equal(t, updateArchOpts.Archs[0].Sha, sv.Archs[0].Sha)
392+
assert.Equal(t, updateArchOpts.Archs[0].OS, sv.Archs[0].OS)
393+
assert.Equal(t, updateArchOpts.Archs[0].Arch, sv.Archs[0].Arch)
301394
})
302395

303396
t.Run("with non-existent Sentinel version", func(t *testing.T) {

admin_terraform_version_integration_test.go

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ func TestAdminTerraformVersions_List(t *testing.T) {
6161
assert.NotNil(t, item.Beta)
6262
assert.NotNil(t, item.Usage)
6363
assert.NotNil(t, item.CreatedAt)
64+
assert.NotNil(t, item.Archs)
6465
}
6566
})
6667

@@ -138,6 +139,13 @@ func TestAdminTerraformVersions_CreateDelete(t *testing.T) {
138139
assert.Equal(t, *opts.DeprecatedReason, *tfv.DeprecatedReason)
139140
assert.Equal(t, *opts.Enabled, tfv.Enabled)
140141
assert.Equal(t, *opts.Beta, tfv.Beta)
142+
assert.Equal(t, len(opts.Archs), len(tfv.Archs))
143+
for i, arch := range opts.Archs {
144+
assert.Equal(t, arch.URL, tfv.Archs[i].URL)
145+
assert.Equal(t, arch.Sha, tfv.Archs[i].Sha)
146+
assert.Equal(t, arch.OS, tfv.Archs[i].OS)
147+
assert.Equal(t, arch.Arch, tfv.Archs[i].Arch)
148+
}
141149
})
142150

143151
t.Run("with valid options, url, and sha", func(t *testing.T) {
@@ -167,6 +175,12 @@ func TestAdminTerraformVersions_CreateDelete(t *testing.T) {
167175
assert.Equal(t, *opts.DeprecatedReason, *tfv.DeprecatedReason)
168176
assert.Equal(t, *opts.Enabled, tfv.Enabled)
169177
assert.Equal(t, *opts.Beta, tfv.Beta)
178+
for i, arch := range opts.Archs {
179+
assert.Equal(t, arch.URL, tfv.Archs[i].URL)
180+
assert.Equal(t, arch.Sha, tfv.Archs[i].Sha)
181+
assert.Equal(t, arch.OS, tfv.Archs[i].OS)
182+
assert.Equal(t, arch.Arch, tfv.Archs[i].Arch)
183+
}
170184
})
171185

172186
t.Run("with only required options including tool version url and sha", func(t *testing.T) {
@@ -192,6 +206,13 @@ func TestAdminTerraformVersions_CreateDelete(t *testing.T) {
192206
assert.Nil(t, tfv.DeprecatedReason)
193207
assert.Equal(t, true, tfv.Enabled)
194208
assert.Equal(t, false, tfv.Beta)
209+
assert.Equal(t, len(opts.Archs), len(tfv.Archs))
210+
for i, arch := range opts.Archs {
211+
assert.Equal(t, arch.URL, tfv.Archs[i].URL)
212+
assert.Equal(t, arch.Sha, tfv.Archs[i].Sha)
213+
assert.Equal(t, arch.OS, tfv.Archs[i].OS)
214+
assert.Equal(t, arch.Arch, tfv.Archs[i].Arch)
215+
}
195216
})
196217

197218
t.Run("with only required options including archs", func(t *testing.T) {
@@ -299,6 +320,64 @@ func TestAdminTerraformVersions_ReadUpdate(t *testing.T) {
299320
assert.Equal(t, *updateOpts.Deprecated, tfv.Deprecated)
300321
assert.Equal(t, *opts.Enabled, tfv.Enabled)
301322
assert.Equal(t, *opts.Beta, tfv.Beta)
323+
assert.Equal(t, updateURL, tfv.Archs[0].URL)
324+
assert.Equal(t, *opts.Sha, tfv.Archs[0].Sha)
325+
assert.Equal(t, amd64, tfv.Archs[0].Arch)
326+
assert.Equal(t, linux, tfv.Archs[0].OS)
327+
})
328+
329+
t.Run("update with Archs", func(t *testing.T) {
330+
version := genSafeRandomTerraformVersion()
331+
sha := String(genSha(t))
332+
opts := AdminTerraformVersionCreateOptions{
333+
Version: String(version),
334+
URL: String("https://www.hashicorp.com"),
335+
Sha: String(genSha(t)),
336+
Official: Bool(false),
337+
Deprecated: Bool(true),
338+
DeprecatedReason: String("Test Reason"),
339+
Enabled: Bool(false),
340+
Beta: Bool(false),
341+
Archs: []*ToolVersionArchitecture{{
342+
URL: "https://www.hashicorp.com",
343+
Sha: *sha,
344+
OS: linux,
345+
Arch: amd64,
346+
}},
347+
}
348+
tfv, err := client.Admin.TerraformVersions.Create(ctx, opts)
349+
require.NoError(t, err)
350+
id := tfv.ID
351+
352+
defer func() {
353+
deleteErr := client.Admin.TerraformVersions.Delete(ctx, id)
354+
require.NoError(t, deleteErr)
355+
}()
356+
357+
updateArchOpts := AdminTerraformVersionUpdateOptions{
358+
Archs: []*ToolVersionArchitecture{{
359+
URL: "https://www.hashicorp.com",
360+
Sha: *sha,
361+
OS: linux,
362+
Arch: arm64,
363+
}},
364+
}
365+
366+
tfv, err = client.Admin.TerraformVersions.Update(ctx, id, updateArchOpts)
367+
require.NoError(t, err)
368+
369+
assert.Equal(t, *opts.Version, tfv.Version)
370+
assert.Equal(t, "", tfv.URL)
371+
assert.Equal(t, "", tfv.Sha)
372+
assert.Equal(t, *opts.Official, tfv.Official)
373+
assert.Equal(t, *opts.Deprecated, tfv.Deprecated)
374+
assert.Equal(t, *opts.Enabled, tfv.Enabled)
375+
assert.Equal(t, *opts.Beta, tfv.Beta)
376+
assert.Equal(t, len(tfv.Archs), 1)
377+
assert.Equal(t, updateArchOpts.Archs[0].URL, tfv.Archs[0].URL)
378+
assert.Equal(t, updateArchOpts.Archs[0].Sha, tfv.Archs[0].Sha)
379+
assert.Equal(t, updateArchOpts.Archs[0].OS, tfv.Archs[0].OS)
380+
assert.Equal(t, updateArchOpts.Archs[0].Arch, tfv.Archs[0].Arch)
302381
})
303382

304383
t.Run("with non-existent terraform version", func(t *testing.T) {

0 commit comments

Comments
 (0)