diff --git a/registry_module.go b/registry_module.go index c242194ca..f0372917d 100644 --- a/registry_module.go +++ b/registry_module.go @@ -444,20 +444,20 @@ func (o RegistryModuleCreateOptions) valid() error { return ErrInvalidProvider } - // RegistryName is optional, only validate if specified - if validString((*string)(&o.RegistryName)) { - registryNamesMap := map[RegistryName]RegistryName{PublicRegistry: PublicRegistry, PrivateRegistry: PrivateRegistry} - if _, ok := registryNamesMap[o.RegistryName]; !ok { - return ErrInvalidRegistryName - } - - if o.RegistryName == PublicRegistry && !validString(&o.Namespace) { + switch o.RegistryName { + case PublicRegistry: + if !validString(&o.Namespace) { return ErrRequiredNamespace } - - if o.RegistryName == PrivateRegistry && validString(&o.Namespace) { + case PrivateRegistry: + if validString(&o.Namespace) { return ErrUnsupportedBothNamespaceAndPrivateRegistryName } + case "": + // no-op: RegistryName is optional + // for all other string + default: + return ErrInvalidRegistryName } return nil } diff --git a/registry_module_integration_test.go b/registry_module_integration_test.go index 96fe57dd7..c46075e2d 100644 --- a/registry_module_integration_test.go +++ b/registry_module_integration_test.go @@ -73,12 +73,14 @@ func TestRegistryModulesCreate(t *testing.T) { t.Run("with valid options", func(t *testing.T) { assertRegistryModuleAttributes := func(t *testing.T, registryModule *RegistryModule) { t.Run("permissions are properly decoded", func(t *testing.T) { + require.NotEmpty(t, registryModule.Permissions) assert.True(t, registryModule.Permissions.CanDelete) assert.True(t, registryModule.Permissions.CanResync) assert.True(t, registryModule.Permissions.CanRetry) }) t.Run("relationships are properly decoded", func(t *testing.T) { + require.NotEmpty(t, registryModule.Organization) assert.Equal(t, orgTest.Name, registryModule.Organization.Name) })