| 65 | } |
| 66 | |
| 67 | func TestDeniesUnknownRolesAndInvalidIDs(t *testing.T) { |
| 68 | t.Parallel() |
| 69 | |
| 70 | db, _ := dbtestutil.NewDB(t) |
| 71 | ctx := testutil.Context(t, testutil.WaitShort) |
| 72 | |
| 73 | update := codersdk.UpdateWorkspaceACL{ |
| 74 | UserRoles: map[string]codersdk.WorkspaceRole{ |
| 75 | "Quifrey": "level 5", |
| 76 | }, |
| 77 | GroupRoles: map[string]codersdk.WorkspaceRole{ |
| 78 | "apprentices": "level 2", |
| 79 | }, |
| 80 | } |
| 81 | errors := acl.Validate(ctx, db, coderd.WorkspaceACLUpdateValidator(update)) |
| 82 | require.Len(t, errors, 4) |
| 83 | require.Equal(t, errors[0].Field, "group_roles") |
| 84 | require.ErrorContains(t, errors[0], "role \"level 2\" is not a valid workspace role") |
| 85 | require.Equal(t, errors[1].Field, "group_roles") |
| 86 | require.ErrorContains(t, errors[1], "not a valid UUID") |
| 87 | require.Equal(t, errors[2].Field, "user_roles") |
| 88 | require.ErrorContains(t, errors[2], "role \"level 5\" is not a valid workspace role") |
| 89 | require.Equal(t, errors[3].Field, "user_roles") |
| 90 | require.ErrorContains(t, errors[3], "not a valid UUID") |
| 91 | } |