test: Increase test coverage on auditable resources (#7038)

* test: Increase test coverage on auditable resources

When adding a new audit resource, we also need to add it to the
function switch statements. This is a likely mistake, now a unit
test will check this for you
This commit is contained in:
Steven Masley
2023-04-06 16:16:53 -05:00
committed by GitHub
parent 24d8644c0b
commit b2892c3d17
6 changed files with 114 additions and 5 deletions

View File

@ -78,6 +78,8 @@ func ResourceTarget[T Auditable](tgt T) string {
return ""
case database.License:
return strconv.Itoa(int(typed.ID))
case database.WorkspaceProxy:
return typed.Name
default:
panic(fmt.Sprintf("unknown resource %T", tgt))
}
@ -103,13 +105,15 @@ func ResourceID[T Auditable](tgt T) uuid.UUID {
return typed.UserID
case database.License:
return typed.UUID
case database.WorkspaceProxy:
return typed.ID
default:
panic(fmt.Sprintf("unknown resource %T", tgt))
}
}
func ResourceType[T Auditable](tgt T) database.ResourceType {
switch any(tgt).(type) {
switch typed := any(tgt).(type) {
case database.Template:
return database.ResourceTypeTemplate
case database.TemplateVersion:
@ -128,8 +132,10 @@ func ResourceType[T Auditable](tgt T) database.ResourceType {
return database.ResourceTypeApiKey
case database.License:
return database.ResourceTypeLicense
case database.WorkspaceProxy:
return database.ResourceTypeWorkspaceProxy
default:
panic(fmt.Sprintf("unknown resource %T", tgt))
panic(fmt.Sprintf("unknown resource %T", typed))
}
}

View File

@ -94,7 +94,8 @@ CREATE TYPE resource_type AS ENUM (
'api_key',
'group',
'workspace_build',
'license'
'license',
'workspace_proxy'
);
CREATE TYPE user_status AS ENUM (

View File

@ -0,0 +1,2 @@
-- It's not possible to drop enum values from enum types, so the UP has "IF NOT
-- EXISTS".

View File

@ -0,0 +1 @@
ALTER TYPE resource_type ADD VALUE IF NOT EXISTS 'workspace_proxy';

View File

@ -884,6 +884,7 @@ const (
ResourceTypeGroup ResourceType = "group"
ResourceTypeWorkspaceBuild ResourceType = "workspace_build"
ResourceTypeLicense ResourceType = "license"
ResourceTypeWorkspaceProxy ResourceType = "workspace_proxy"
)
func (e *ResourceType) Scan(src interface{}) error {
@ -932,7 +933,8 @@ func (e ResourceType) Valid() bool {
ResourceTypeApiKey,
ResourceTypeGroup,
ResourceTypeWorkspaceBuild,
ResourceTypeLicense:
ResourceTypeLicense,
ResourceTypeWorkspaceProxy:
return true
}
return false
@ -950,6 +952,7 @@ func AllResourceTypeValues() []ResourceType {
ResourceTypeGroup,
ResourceTypeWorkspaceBuild,
ResourceTypeLicense,
ResourceTypeWorkspaceProxy,
}
}