Skip to content

Commit edb5e75

Browse files
committed
Validate all archs and remove flag dependent tests
1 parent b8481b7 commit edb5e75

7 files changed

+39
-106
lines changed

admin_opa_version.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -202,17 +202,23 @@ func (o AdminOPAVersionCreateOptions) valid() error {
202202
if o.Version == "" {
203203
return ErrRequiredVersion
204204
}
205-
if !o.validArch() && (o.URL == "" || o.SHA == "") {
206-
return ErrRequiredArchOrURLAndSha
205+
if !o.validArch() {
206+
return ErrRequiredArchsOrURLAndSha
207207
}
208208
return nil
209209
}
210210

211211
func (o AdminOPAVersionCreateOptions) validArch() bool {
212+
if o.Archs == nil && o.URL != "" && o.SHA != "" {
213+
return true
214+
}
215+
216+
emptyToolVersionFields := o.URL == "" && o.SHA == ""
217+
212218
for _, a := range o.Archs {
213-
if a.URL != "" && a.Sha != "" && a.OS == linux && (a.Arch == amd64 || a.Arch == arm64) {
214-
return true
219+
if !validArch(a) || !emptyToolVersionFields && (o.URL != a.URL || o.SHA != a.Sha) {
220+
return false
215221
}
216222
}
217-
return false
223+
return true
218224
}

admin_opa_version_integration_test.go

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ func TestAdminOPAVersions_CreateDelete(t *testing.T) {
133133
}()
134134

135135
assert.Equal(t, opts.Version, ov.Version)
136-
assert.ElementsMatch(t, opts.Archs, ov.Archs)
137136
assert.Equal(t, *opts.Official, ov.Official)
138137
assert.Equal(t, *opts.Deprecated, ov.Deprecated)
139138
assert.Equal(t, *opts.DeprecatedReason, *ov.DeprecatedReason)
@@ -222,7 +221,6 @@ func TestAdminOPAVersions_CreateDelete(t *testing.T) {
222221
}()
223222

224223
assert.Equal(t, opts.Version, ov.Version)
225-
assert.ElementsMatch(t, opts.Archs, ov.Archs)
226224
assert.Equal(t, false, ov.Official)
227225
assert.Equal(t, false, ov.Deprecated)
228226
assert.Nil(t, ov.DeprecatedReason)
@@ -276,7 +274,6 @@ func TestAdminOPAVersions_ReadUpdate(t *testing.T) {
276274
assert.Equal(t, opts.Version, ov.Version)
277275
assert.Equal(t, opts.Archs[0].URL, ov.URL)
278276
assert.Equal(t, opts.Archs[0].Sha, ov.SHA)
279-
assert.ElementsMatch(t, opts.Archs, ov.Archs)
280277
assert.Equal(t, *opts.Official, ov.Official)
281278
assert.Equal(t, *opts.Deprecated, ov.Deprecated)
282279
assert.Equal(t, *opts.DeprecatedReason, *ov.DeprecatedReason)
@@ -297,36 +294,10 @@ func TestAdminOPAVersions_ReadUpdate(t *testing.T) {
297294
assert.Equal(t, updateVersion, ov.Version)
298295
assert.Equal(t, updateURL, ov.URL)
299296
assert.Equal(t, opts.SHA, ov.SHA)
300-
assert.Equal(t, updateURL, ov.Archs[0].URL)
301-
assert.Equal(t, opts.SHA, ov.Archs[0].Sha)
302297
assert.Equal(t, *opts.Official, ov.Official)
303298
assert.Equal(t, *updateOpts.Deprecated, ov.Deprecated)
304299
assert.Equal(t, *opts.Enabled, ov.Enabled)
305300
assert.Equal(t, *opts.Beta, ov.Beta)
306-
307-
updateOpts = AdminOPAVersionUpdateOptions{
308-
Archs: []*ToolVersionArchitecture{
309-
{
310-
URL: "https://www.hashicorp.com/update",
311-
Sha: *sha,
312-
OS: linux,
313-
Arch: amd64,
314-
},
315-
{
316-
URL: "https://www.hashicorp.com/update/arm64",
317-
Sha: *sha,
318-
OS: linux,
319-
Arch: arm64,
320-
},
321-
},
322-
}
323-
324-
ov, err = client.Admin.OPAVersions.Update(ctx, id, updateOpts)
325-
require.NoError(t, err)
326-
327-
assert.Equal(t, "https://www.hashicorp.com/update", ov.URL)
328-
assert.Equal(t, opts.SHA, ov.SHA)
329-
assert.ElementsMatch(t, updateOpts.Archs, ov.Archs)
330301
})
331302

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

admin_sentinel_version.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -202,17 +202,23 @@ func (o AdminSentinelVersionCreateOptions) valid() error {
202202
if o.Version == "" {
203203
return ErrRequiredVersion
204204
}
205-
if !o.validArch() && (o.URL == "" || o.SHA == "") {
206-
return ErrRequiredArchOrURLAndSha
205+
if !o.validArch() {
206+
return ErrRequiredArchsOrURLAndSha
207207
}
208208
return nil
209209
}
210210

211211
func (o AdminSentinelVersionCreateOptions) validArch() bool {
212+
if o.Archs == nil && o.URL != "" && o.SHA != "" {
213+
return true
214+
}
215+
216+
emptyToolVersionFields := o.URL == "" && o.SHA == ""
217+
212218
for _, a := range o.Archs {
213-
if a.URL != "" && a.Sha != "" && a.OS == linux && (a.Arch == amd64 || a.Arch == arm64) {
214-
return true
219+
if !validArch(a) || !emptyToolVersionFields && (o.URL != a.URL || o.SHA != a.Sha) {
220+
return false
215221
}
216222
}
217-
return false
223+
return true
218224
}

admin_sentinel_version_integration_test.go

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ func TestAdminSentinelVersions_CreateDelete(t *testing.T) {
133133
}()
134134

135135
assert.Equal(t, opts.Version, sv.Version)
136-
assert.ElementsMatch(t, opts.Archs, sv.Archs)
137136
assert.Equal(t, *opts.Official, sv.Official)
138137
assert.Equal(t, *opts.Deprecated, sv.Deprecated)
139138
assert.Equal(t, *opts.DeprecatedReason, *sv.DeprecatedReason)
@@ -222,7 +221,6 @@ func TestAdminSentinelVersions_CreateDelete(t *testing.T) {
222221
}()
223222

224223
assert.Equal(t, opts.Version, sv.Version)
225-
assert.ElementsMatch(t, opts.Archs, sv.Archs)
226224
assert.Equal(t, false, sv.Official)
227225
assert.Equal(t, false, sv.Deprecated)
228226
assert.Nil(t, sv.DeprecatedReason)
@@ -276,7 +274,6 @@ func TestAdminSentinelVersions_ReadUpdate(t *testing.T) {
276274
assert.Equal(t, opts.Version, sv.Version)
277275
assert.Equal(t, opts.Archs[0].URL, sv.URL)
278276
assert.Equal(t, opts.Archs[0].Sha, sv.SHA)
279-
assert.ElementsMatch(t, opts.Archs, sv.Archs)
280277
assert.Equal(t, *opts.Official, sv.Official)
281278
assert.Equal(t, *opts.Deprecated, sv.Deprecated)
282279
assert.Equal(t, *opts.DeprecatedReason, *sv.DeprecatedReason)
@@ -297,37 +294,10 @@ func TestAdminSentinelVersions_ReadUpdate(t *testing.T) {
297294
assert.Equal(t, updateVersion, sv.Version)
298295
assert.Equal(t, updateURL, sv.URL)
299296
assert.Equal(t, opts.SHA, sv.SHA)
300-
assert.Equal(t, updateURL, sv.Archs[0].URL)
301-
assert.Equal(t, opts.SHA, sv.Archs[0].Sha)
302297
assert.Equal(t, *opts.Official, sv.Official)
303298
assert.Equal(t, *updateOpts.Deprecated, sv.Deprecated)
304299
assert.Equal(t, *opts.Enabled, sv.Enabled)
305300
assert.Equal(t, *opts.Beta, sv.Beta)
306-
307-
updateOpts = AdminSentinelVersionUpdateOptions{
308-
Archs: []*ToolVersionArchitecture{
309-
{
310-
URL: "https://www.hashicorp.com/update",
311-
Sha: *sha,
312-
OS: linux,
313-
Arch: amd64,
314-
},
315-
{
316-
URL: "https://www.hashicorp.com/update/arm64",
317-
Sha: *sha,
318-
OS: linux,
319-
Arch: arm64,
320-
},
321-
},
322-
}
323-
324-
sv, err = client.Admin.SentinelVersions.Update(ctx, id, updateOpts)
325-
326-
require.NoError(t, err)
327-
328-
assert.Equal(t, "https://www.hashicorp.com/update", sv.URL)
329-
assert.Equal(t, opts.SHA, sv.SHA)
330-
assert.ElementsMatch(t, updateOpts.Archs, sv.Archs)
331301
})
332302

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

admin_terraform_version.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -216,17 +216,27 @@ func (o AdminTerraformVersionCreateOptions) valid() error {
216216
if !validString(o.Version) {
217217
return ErrRequiredVersion
218218
}
219-
if !o.validArch() && (!validString(o.URL) || !validString(o.Sha)) {
220-
return ErrRequiredArchOrURLAndSha
219+
if !o.validArchs() {
220+
return ErrRequiredArchsOrURLAndSha
221221
}
222222
return nil
223223
}
224224

225-
func (o AdminTerraformVersionCreateOptions) validArch() bool {
225+
func (o AdminTerraformVersionCreateOptions) validArchs() bool {
226+
if o.Archs == nil && validString(o.URL) && validString(o.Sha) {
227+
return true
228+
}
229+
230+
emptyToolVersionFields := !validString(o.URL) && !validString(o.Sha)
231+
226232
for _, a := range o.Archs {
227-
if a.URL != "" && a.Sha != "" && a.OS == linux && (a.Arch == amd64 || a.Arch == arm64) {
228-
return true
233+
if !validArch(a) || !emptyToolVersionFields && (*o.URL != a.URL || *o.Sha != a.Sha) {
234+
return false
229235
}
230236
}
231-
return false
237+
return true
238+
}
239+
240+
func validArch(a *ToolVersionArchitecture) bool {
241+
return a.URL != "" && a.Sha != "" && a.OS == linux && (a.Arch == amd64 || a.Arch == arm64)
232242
}

admin_terraform_version_integration_test.go

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ func TestAdminTerraformVersions_CreateDelete(t *testing.T) {
133133
}()
134134

135135
assert.Equal(t, *opts.Version, tfv.Version)
136-
assert.ElementsMatch(t, opts.Archs, tfv.Archs)
137136
assert.Equal(t, *opts.Official, tfv.Official)
138137
assert.Equal(t, *opts.Deprecated, tfv.Deprecated)
139138
assert.Equal(t, *opts.DeprecatedReason, *tfv.DeprecatedReason)
@@ -222,7 +221,6 @@ func TestAdminTerraformVersions_CreateDelete(t *testing.T) {
222221
}()
223222

224223
assert.Equal(t, *opts.Version, tfv.Version)
225-
assert.ElementsMatch(t, opts.Archs, tfv.Archs)
226224
assert.Equal(t, false, tfv.Official)
227225
assert.Equal(t, false, tfv.Deprecated)
228226
assert.Nil(t, tfv.DeprecatedReason)
@@ -276,7 +274,6 @@ func TestAdminTerraformVersions_ReadUpdate(t *testing.T) {
276274
assert.Equal(t, *opts.Version, tfv.Version)
277275
assert.Equal(t, opts.Archs[0].URL, tfv.URL)
278276
assert.Equal(t, opts.Archs[0].Sha, tfv.Sha)
279-
assert.ElementsMatch(t, opts.Archs, tfv.Archs)
280277
assert.Equal(t, *opts.Official, tfv.Official)
281278
assert.Equal(t, *opts.Deprecated, tfv.Deprecated)
282279
assert.Equal(t, *opts.DeprecatedReason, *tfv.DeprecatedReason)
@@ -298,37 +295,10 @@ func TestAdminTerraformVersions_ReadUpdate(t *testing.T) {
298295
assert.Equal(t, updateVersion, tfv.Version)
299296
assert.Equal(t, updateURL, tfv.URL)
300297
assert.Equal(t, *opts.Sha, tfv.Sha)
301-
assert.Equal(t, updateURL, tfv.Archs[0].URL)
302-
assert.Equal(t, *opts.Sha, tfv.Archs[0].Sha)
303298
assert.Equal(t, *opts.Official, tfv.Official)
304299
assert.Equal(t, *updateOpts.Deprecated, tfv.Deprecated)
305300
assert.Equal(t, *opts.Enabled, tfv.Enabled)
306301
assert.Equal(t, *opts.Beta, tfv.Beta)
307-
308-
updateOpts = AdminTerraformVersionUpdateOptions{
309-
Archs: []*ToolVersionArchitecture{
310-
{
311-
URL: "https://www.hashicorp.com/update",
312-
Sha: *sha,
313-
OS: linux,
314-
Arch: amd64,
315-
},
316-
{
317-
URL: "https://www.hashicorp.com/update/arm64",
318-
Sha: *sha,
319-
OS: linux,
320-
Arch: arm64,
321-
},
322-
},
323-
}
324-
325-
tfv, err = client.Admin.TerraformVersions.Update(ctx, id, updateOpts)
326-
327-
require.NoError(t, err)
328-
329-
assert.Equal(t, "https://www.hashicorp.com/update", tfv.URL)
330-
assert.Equal(t, *opts.Sha, tfv.Sha)
331-
assert.ElementsMatch(t, updateOpts.Archs, tfv.Archs)
332302
})
333303

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

errors.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ var (
276276

277277
ErrRequiredURL = errors.New("url is required")
278278

279-
ErrRequiredArchOrURLAndSha = errors.New("valid arch or url and sha is required")
279+
ErrRequiredArchsOrURLAndSha = errors.New("valid archs or url and sha are required")
280280

281281
ErrRequiredAPIURL = errors.New("API URL is required")
282282

0 commit comments

Comments
 (0)