diff --git a/go/apps/api/routes/v2_identities_get_identity/200_test.go b/go/apps/api/routes/v2_identities_get_identity/200_test.go index 8bf89b65494..532e346a75c 100644 --- a/go/apps/api/routes/v2_identities_get_identity/200_test.go +++ b/go/apps/api/routes/v2_identities_get_identity/200_test.go @@ -384,7 +384,7 @@ func TestSuccess(t *testing.T) { }) req := handler.Request{ - Identity: identity, + Identity: identity.ID, } res := testutil.CallRoute[handler.Request, handler.Response](h, route, headers, req) require.Equal(t, http.StatusOK, res.Status) diff --git a/go/apps/api/routes/v2_keys_add_permissions/200_test.go b/go/apps/api/routes/v2_keys_add_permissions/200_test.go index 32581a89903..96f602eb13b 100644 --- a/go/apps/api/routes/v2_keys_add_permissions/200_test.go +++ b/go/apps/api/routes/v2_keys_add_permissions/200_test.go @@ -9,6 +9,7 @@ import ( "github.com/stretchr/testify/require" handler "github.com/unkeyed/unkey/go/apps/api/routes/v2_keys_add_permissions" "github.com/unkeyed/unkey/go/pkg/db" + "github.com/unkeyed/unkey/go/pkg/ptr" "github.com/unkeyed/unkey/go/pkg/testutil" "github.com/unkeyed/unkey/go/pkg/testutil/seed" ) @@ -57,13 +58,11 @@ func TestSuccess(t *testing.T) { keyID := keyResponse.KeyID // Create a permission using testutil helper - permissionSlug := "documents.write.single.name" - permissionDescription := "Write documents permission" - permissionID := h.CreatePermission(seed.CreatePermissionRequest{ + permission := h.CreatePermission(seed.CreatePermissionRequest{ WorkspaceID: workspace.ID, - Name: permissionSlug, - Slug: permissionSlug, - Description: &permissionDescription, + Name: "documents.write.single.name", + Slug: "documents.write.single.name", + Description: ptr.P("Write documents permission"), }) // Verify key has no permissions initially @@ -73,7 +72,7 @@ func TestSuccess(t *testing.T) { req := handler.Request{ KeyId: keyID, - Permissions: []string{permissionSlug}, + Permissions: []string{permission.Name}, } res := testutil.CallRoute[handler.Request, handler.Response]( @@ -87,14 +86,14 @@ func TestSuccess(t *testing.T) { require.NotNil(t, res.Body) require.NotNil(t, res.Body.Data) require.Len(t, res.Body.Data, 1) - require.Equal(t, permissionID, res.Body.Data[0].Id) + require.Equal(t, permission.ID, res.Body.Data[0].Id) require.Equal(t, "documents.write.single.name", res.Body.Data[0].Name) // Verify permission was added to key finalPermissions, err := db.Query.ListDirectPermissionsByKeyID(ctx, h.DB.RO(), keyID) require.NoError(t, err) require.Len(t, finalPermissions, 1) - require.Equal(t, permissionID, finalPermissions[0].ID) + require.Equal(t, permission.ID, finalPermissions[0].ID) }) t.Run("add multiple permissions", func(t *testing.T) { @@ -117,27 +116,23 @@ func TestSuccess(t *testing.T) { keyID := keyResponse.KeyID // Create permissions using testutil helper - permission1Name := "documents.read.multiple" - permissionDescription1 := "Read documents permission" - permission1ID := h.CreatePermission(seed.CreatePermissionRequest{ + permission1 := h.CreatePermission(seed.CreatePermissionRequest{ WorkspaceID: workspace.ID, - Name: permission1Name, - Slug: permission1Name, - Description: &permissionDescription1, + Name: "documents.read.multiple", + Slug: "documents.read.multiple", + Description: ptr.P("Read documents permission"), }) - permission2Slug := "documents.write.multiple" - permissionDescription2 := "Write documents permission" - permission2ID := h.CreatePermission(seed.CreatePermissionRequest{ + permission2 := h.CreatePermission(seed.CreatePermissionRequest{ WorkspaceID: workspace.ID, - Name: permission2Slug, - Slug: permission2Slug, - Description: &permissionDescription2, + Name: "documents.write.multiple", + Slug: "documents.write.multiple", + Description: ptr.P("Write documents permission"), }) req := handler.Request{ KeyId: keyID, - Permissions: []string{permission1Name, permission2Slug}, + Permissions: []string{permission1.Name, permission2.Name}, } res := testutil.CallRoute[handler.Request, handler.Response]( @@ -162,8 +157,8 @@ func TestSuccess(t *testing.T) { } // Verify both permissions are in response - require.True(t, contains(permission1ID)) - require.True(t, contains(permission2ID)) + require.True(t, contains(permission1.ID)) + require.True(t, contains(permission2.ID)) // Verify permissions were added to key finalPermissions, err := db.Query.ListDirectPermissionsByKeyID(ctx, h.DB.RO(), keyID) @@ -250,11 +245,10 @@ func TestSuccess(t *testing.T) { // Create permissions using testutil helper existingPermissionDescription := "Read documents permission" newPermissionDescription := "Write documents permission" - newPermissionSlug := "documents.write.existing" - newPermissionID := h.CreatePermission(seed.CreatePermissionRequest{ + newPermission := h.CreatePermission(seed.CreatePermissionRequest{ WorkspaceID: workspace.ID, - Name: newPermissionSlug, - Slug: newPermissionSlug, + Name: "documents.write.existing", + Slug: "documents.write.existing", Description: &newPermissionDescription, }) @@ -277,7 +271,7 @@ func TestSuccess(t *testing.T) { req := handler.Request{ KeyId: keyID, - Permissions: []string{newPermissionSlug}, + Permissions: []string{newPermission.Name}, } res := testutil.CallRoute[handler.Request, handler.Response]( @@ -298,7 +292,7 @@ func TestSuccess(t *testing.T) { permissionIDs[p.Id] = true } require.True(t, permissionIDs[keyResponse.PermissionIds[0]]) - require.True(t, permissionIDs[newPermissionID]) + require.True(t, permissionIDs[newPermission.ID]) // Verify permissions in database finalPermissions, err := db.Query.ListDirectPermissionsByKeyID(ctx, h.DB.RO(), keyID) diff --git a/go/apps/api/routes/v2_keys_add_roles/200_test.go b/go/apps/api/routes/v2_keys_add_roles/200_test.go index aa285be5aa2..01759899756 100644 --- a/go/apps/api/routes/v2_keys_add_roles/200_test.go +++ b/go/apps/api/routes/v2_keys_add_roles/200_test.go @@ -96,7 +96,7 @@ func TestSuccess(t *testing.T) { }) adminName := "admin_idempotent" - adminId := h.CreateRole(seed.CreateRoleRequest{ + admin := h.CreateRole(seed.CreateRoleRequest{ WorkspaceID: workspace.ID, Name: adminName, Description: ptr.P("admin_idempotent"), @@ -112,7 +112,7 @@ func TestSuccess(t *testing.T) { // First, add admin role to the key err := db.Query.InsertKeyRole(ctx, h.DB.RW(), db.InsertKeyRoleParams{ KeyID: key.KeyID, - RoleID: adminId, + RoleID: admin.ID, WorkspaceID: workspace.ID, CreatedAtM: time.Now().UnixMilli(), }) diff --git a/go/apps/api/routes/v2_keys_get_key/200_test.go b/go/apps/api/routes/v2_keys_get_key/200_test.go index 90460806e6f..998abcd3441 100644 --- a/go/apps/api/routes/v2_keys_get_key/200_test.go +++ b/go/apps/api/routes/v2_keys_get_key/200_test.go @@ -46,7 +46,7 @@ func TestGetKeyByKeyID(t *testing.T) { }) // Create test identity with ratelimit using testutil helper - identityID := h.CreateIdentity(seed.CreateIdentityRequest{ + identity := h.CreateIdentity(seed.CreateIdentityRequest{ WorkspaceID: workspace.ID, ExternalID: "test_user", Meta: []byte(`{"role": "admin"}`), @@ -66,7 +66,7 @@ func TestGetKeyByKeyID(t *testing.T) { WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, Name: &keyName, - IdentityID: &identityID, + IdentityID: &identity.ID, }) keyID := key.KeyID // key := keyResponse.Key diff --git a/go/apps/api/routes/v2_keys_remove_permissions/200_test.go b/go/apps/api/routes/v2_keys_remove_permissions/200_test.go index 285514853cf..ea0f50cfe72 100644 --- a/go/apps/api/routes/v2_keys_remove_permissions/200_test.go +++ b/go/apps/api/routes/v2_keys_remove_permissions/200_test.go @@ -114,7 +114,7 @@ func TestSuccess(t *testing.T) { // Create permissions using testutil helpers permission1Description := "Read documents permission" permission1Name := "documents.read.remove.multiple" - permission1ID := h.CreatePermission(seed.CreatePermissionRequest{ + permission1 := h.CreatePermission(seed.CreatePermissionRequest{ WorkspaceID: workspace.ID, Name: permission1Name, Slug: permission1Name, @@ -123,7 +123,7 @@ func TestSuccess(t *testing.T) { permission2Description := "Write documents permission" permission2Name := "documents.write.remove.multiple" - permission2ID := h.CreatePermission(seed.CreatePermissionRequest{ + permission2 := h.CreatePermission(seed.CreatePermissionRequest{ WorkspaceID: workspace.ID, Name: permission2Name, Slug: permission2Name, @@ -133,7 +133,7 @@ func TestSuccess(t *testing.T) { // Add both permissions to key first err := db.Query.InsertKeyPermission(ctx, h.DB.RW(), db.InsertKeyPermissionParams{ KeyID: keyID, - PermissionID: permission1ID, + PermissionID: permission1.ID, WorkspaceID: workspace.ID, CreatedAt: time.Now().UnixMilli(), }) @@ -141,7 +141,7 @@ func TestSuccess(t *testing.T) { err = db.Query.InsertKeyPermission(ctx, h.DB.RW(), db.InsertKeyPermissionParams{ KeyID: keyID, - PermissionID: permission2ID, + PermissionID: permission2.ID, WorkspaceID: workspace.ID, CreatedAt: time.Now().UnixMilli(), }) @@ -333,7 +333,7 @@ func TestSuccess(t *testing.T) { // Create multiple permissions using testutil helpers permission1Description := "Read documents permission" permission1Name := "documents.read.remove.all.1" - permission1ID := h.CreatePermission(seed.CreatePermissionRequest{ + permission1 := h.CreatePermission(seed.CreatePermissionRequest{ WorkspaceID: workspace.ID, Name: permission1Name, Slug: permission1Name, @@ -342,7 +342,7 @@ func TestSuccess(t *testing.T) { permission2Description := "Write documents permission" permission2Name := "documents.write.remove.all.2" - permission2ID := h.CreatePermission(seed.CreatePermissionRequest{ + permission2 := h.CreatePermission(seed.CreatePermissionRequest{ WorkspaceID: workspace.ID, Name: permission2Name, Slug: permission2Name, @@ -351,7 +351,7 @@ func TestSuccess(t *testing.T) { permission3Description := "Delete documents permission" permission3Name := "documents.delete.remove.all.3" - permission3ID := h.CreatePermission(seed.CreatePermissionRequest{ + permission3 := h.CreatePermission(seed.CreatePermissionRequest{ WorkspaceID: workspace.ID, Name: permission3Name, Slug: permission3Name, @@ -361,7 +361,7 @@ func TestSuccess(t *testing.T) { // Add all permissions to key err := db.Query.InsertKeyPermission(ctx, h.DB.RW(), db.InsertKeyPermissionParams{ KeyID: keyID, - PermissionID: permission1ID, + PermissionID: permission1.ID, WorkspaceID: workspace.ID, CreatedAt: time.Now().UnixMilli(), }) @@ -369,7 +369,7 @@ func TestSuccess(t *testing.T) { err = db.Query.InsertKeyPermission(ctx, h.DB.RW(), db.InsertKeyPermissionParams{ KeyID: keyID, - PermissionID: permission2ID, + PermissionID: permission2.ID, WorkspaceID: workspace.ID, CreatedAt: time.Now().UnixMilli(), }) @@ -377,7 +377,7 @@ func TestSuccess(t *testing.T) { err = db.Query.InsertKeyPermission(ctx, h.DB.RW(), db.InsertKeyPermissionParams{ KeyID: keyID, - PermissionID: permission3ID, + PermissionID: permission3.ID, WorkspaceID: workspace.ID, CreatedAt: time.Now().UnixMilli(), }) diff --git a/go/apps/api/routes/v2_keys_remove_permissions/404_test.go b/go/apps/api/routes/v2_keys_remove_permissions/404_test.go index 546b38d1f8c..cb3725ad577 100644 --- a/go/apps/api/routes/v2_keys_remove_permissions/404_test.go +++ b/go/apps/api/routes/v2_keys_remove_permissions/404_test.go @@ -46,7 +46,7 @@ func TestNotFoundErrors(t *testing.T) { t.Run("key not found", func(t *testing.T) { // Create a permission that exists using testutil helper permissionDescription := "Read documents permission" - permissionID := h.CreatePermission(seed.CreatePermissionRequest{ + permission := h.CreatePermission(seed.CreatePermissionRequest{ WorkspaceID: workspace.ID, Name: "documents.read.remove.404keynotfound", Slug: "documents.read.remove.404keynotfound", @@ -58,7 +58,7 @@ func TestNotFoundErrors(t *testing.T) { req := handler.Request{ KeyId: nonExistentKeyID, - Permissions: []string{permissionID}, + Permissions: []string{permission.ID}, } res := testutil.CallRoute[handler.Request, openapi.NotFoundErrorResponse]( diff --git a/go/apps/api/routes/v2_keys_reroll_key/200_test.go b/go/apps/api/routes/v2_keys_reroll_key/200_test.go index 0389e7dd466..c1682d8cefa 100644 --- a/go/apps/api/routes/v2_keys_reroll_key/200_test.go +++ b/go/apps/api/routes/v2_keys_reroll_key/200_test.go @@ -44,7 +44,7 @@ func TestRerollKeySuccess(t *testing.T) { workspace := h.Resources().UserWorkspace - identityID := h.CreateIdentity(seed.CreateIdentityRequest{ + identity := h.CreateIdentity(seed.CreateIdentityRequest{ WorkspaceID: workspace.ID, ExternalID: "test_123", Meta: []byte(`{"name": "Test User"}`), @@ -73,7 +73,7 @@ func TestRerollKeySuccess(t *testing.T) { Disabled: false, KeyAuthID: api.KeyAuthID.String, Remaining: ptr.P(int32(16)), - IdentityID: ptr.P(identityID), + IdentityID: ptr.P(identity.ID), Meta: nil, Expires: nil, Name: ptr.P("Test-Key"), diff --git a/go/apps/api/routes/v2_keys_verify_key/200_test.go b/go/apps/api/routes/v2_keys_verify_key/200_test.go index 466182ecec4..210822f6662 100644 --- a/go/apps/api/routes/v2_keys_verify_key/200_test.go +++ b/go/apps/api/routes/v2_keys_verify_key/200_test.go @@ -610,7 +610,7 @@ func TestSuccess(t *testing.T) { key := h.CreateKey(seed.CreateKeyRequest{ WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, - IdentityID: ptr.P(identity), + IdentityID: ptr.P(identity.ID), }) req := handler.Request{ @@ -645,7 +645,7 @@ func TestSuccess(t *testing.T) { key := h.CreateKey(seed.CreateKeyRequest{ WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, - IdentityID: ptr.P(identity), + IdentityID: ptr.P(identity.ID), Name: ptr.P(keyName), Roles: []seed.CreateRoleRequest{{ Name: "read-writer", @@ -682,7 +682,7 @@ func TestSuccess(t *testing.T) { require.True(t, res.Body.Data.Valid, "Key should be valid but got %t", res.Body.Data.Valid) require.Len(t, ptr.SafeDeref(res.Body.Data.Roles), 1, "Key should have 1 role") require.Len(t, ptr.SafeDeref(res.Body.Data.Permissions), 3, "Key should have 3 permissions") - require.EqualValues(t, openapi.Identity{Id: identity, ExternalId: externalId, Meta: &meta, Ratelimits: nil}, ptr.SafeDeref(res.Body.Data.Identity)) + require.EqualValues(t, openapi.Identity{Id: identity.ID, ExternalId: externalId, Meta: &meta, Ratelimits: nil}, ptr.SafeDeref(res.Body.Data.Identity)) require.Equal(t, keyName, ptr.SafeDeref(res.Body.Data.Name), "Key should have the same name") }) diff --git a/go/apps/api/routes/v2_keys_verify_key/412_test.go b/go/apps/api/routes/v2_keys_verify_key/412_test.go index 17dd2412662..e012174e4d1 100644 --- a/go/apps/api/routes/v2_keys_verify_key/412_test.go +++ b/go/apps/api/routes/v2_keys_verify_key/412_test.go @@ -52,7 +52,7 @@ func TestPreconditionFailed(t *testing.T) { key := h.CreateKey(seed.CreateKeyRequest{ WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, - IdentityID: ptr.P(identity), + IdentityID: ptr.P(identity.ID), }) req := handler.Request{ @@ -70,7 +70,7 @@ func TestPreconditionFailed(t *testing.T) { // Should contain useful error message about missing ratelimit for key and identity expectedMsg := fmt.Sprintf("ratelimit 'does-not-exist' was requested but does not exist for key '%s' nor identity", key.KeyID) require.Contains(t, res.Body.Error.Detail, expectedMsg) - require.Contains(t, res.Body.Error.Detail, identity) + require.Contains(t, res.Body.Error.Detail, identity.ID) require.Contains(t, res.Body.Error.Detail, "test-missing-ratelimit") }) diff --git a/go/apps/api/routes/v2_keys_verify_key/multilimit_test.go b/go/apps/api/routes/v2_keys_verify_key/multilimit_test.go index 8c385ea45ce..51ae84a6a17 100644 --- a/go/apps/api/routes/v2_keys_verify_key/multilimit_test.go +++ b/go/apps/api/routes/v2_keys_verify_key/multilimit_test.go @@ -131,7 +131,7 @@ func TestMultiLimit(t *testing.T) { key := h.CreateKey(seed.CreateKeyRequest{ WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, - IdentityID: ptr.P(identity), + IdentityID: ptr.P(identity.ID), Ratelimits: []seed.CreateRatelimitRequest{ { Name: "limit1", @@ -181,7 +181,7 @@ func TestMultiLimit(t *testing.T) { key := h.CreateKey(seed.CreateKeyRequest{ WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, - IdentityID: ptr.P(identity), + IdentityID: ptr.P(identity.ID), Ratelimits: []seed.CreateRatelimitRequest{ { Name: "limit1-reject", @@ -236,7 +236,7 @@ func TestMultiLimit(t *testing.T) { key := h.CreateKey(seed.CreateKeyRequest{ WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, - IdentityID: ptr.P(identity), + IdentityID: ptr.P(identity.ID), Ratelimits: []seed.CreateRatelimitRequest{ { Name: "limit1-fallback", @@ -296,13 +296,13 @@ func TestMultiLimit(t *testing.T) { key1 := h.CreateKey(seed.CreateKeyRequest{ WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, - IdentityID: ptr.P(identity), + IdentityID: ptr.P(identity.ID), }) key2 := h.CreateKey(seed.CreateKeyRequest{ WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, - IdentityID: ptr.P(identity), + IdentityID: ptr.P(identity.ID), }) // Use up some quota with key1 @@ -411,7 +411,7 @@ func TestMultiLimit(t *testing.T) { key := h.CreateKey(seed.CreateKeyRequest{ WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, - IdentityID: ptr.P(identity), + IdentityID: ptr.P(identity.ID), }) // First request with cost 4 should pass diff --git a/go/apps/api/routes/v2_keys_whoami/200_test.go b/go/apps/api/routes/v2_keys_whoami/200_test.go index c5a7e13f7a7..6754721aaa2 100644 --- a/go/apps/api/routes/v2_keys_whoami/200_test.go +++ b/go/apps/api/routes/v2_keys_whoami/200_test.go @@ -46,7 +46,7 @@ func TestGetKeyByKey(t *testing.T) { }) // Create test identity with ratelimit using testutil helper - identityID := h.CreateIdentity(seed.CreateIdentityRequest{ + identity := h.CreateIdentity(seed.CreateIdentityRequest{ WorkspaceID: workspace.ID, ExternalID: "test_user", Meta: []byte(`{"role": "admin"}`), @@ -66,7 +66,7 @@ func TestGetKeyByKey(t *testing.T) { WorkspaceID: workspace.ID, KeyAuthID: api.KeyAuthID.String, Name: &keyName, - IdentityID: &identityID, + IdentityID: &identity.ID, }) keyID := key.KeyID diff --git a/go/pkg/testutil/http.go b/go/pkg/testutil/http.go index f57f41279f1..6ea8c4b4438 100644 --- a/go/pkg/testutil/http.go +++ b/go/pkg/testutil/http.go @@ -218,19 +218,19 @@ func (h *Harness) CreateKey(req seed.CreateKeyRequest) seed.CreateKeyResponse { return h.seeder.CreateKey(context.Background(), req) } -func (h *Harness) CreateIdentity(req seed.CreateIdentityRequest) string { +func (h *Harness) CreateIdentity(req seed.CreateIdentityRequest) db.Identity { return h.seeder.CreateIdentity(context.Background(), req) } -func (h *Harness) CreateRatelimit(req seed.CreateRatelimitRequest) string { +func (h *Harness) CreateRatelimit(req seed.CreateRatelimitRequest) db.Ratelimit { return h.seeder.CreateRatelimit(context.Background(), req) } -func (h *Harness) CreateRole(req seed.CreateRoleRequest) string { +func (h *Harness) CreateRole(req seed.CreateRoleRequest) db.Role { return h.seeder.CreateRole(context.Background(), req) } -func (h *Harness) CreatePermission(req seed.CreatePermissionRequest) string { +func (h *Harness) CreatePermission(req seed.CreatePermissionRequest) db.Permission { return h.seeder.CreatePermission(context.Background(), req) } diff --git a/go/pkg/testutil/seed/seed.go b/go/pkg/testutil/seed/seed.go index 92f2132201c..a0ad7386fc3 100644 --- a/go/pkg/testutil/seed/seed.go +++ b/go/pkg/testutil/seed/seed.go @@ -272,28 +272,28 @@ func (s *Seeder) CreateKey(ctx context.Context, req CreateKeyRequest) CreateKeyR } for _, role := range req.Roles { - roleID := s.CreateRole(ctx, role) + r := s.CreateRole(ctx, role) err = db.Query.InsertKeyRole(ctx, s.DB.RW(), db.InsertKeyRoleParams{ KeyID: keyID, - RoleID: roleID, + RoleID: r.ID, WorkspaceID: req.WorkspaceID, CreatedAtM: time.Now().UnixMilli(), }) require.NoError(s.t, err) - res.RolesIds = append(res.RolesIds, roleID) + res.RolesIds = append(res.RolesIds, r.ID) } for _, permission := range req.Permissions { - permissionID := s.CreatePermission(ctx, permission) + perm := s.CreatePermission(ctx, permission) err = db.Query.InsertKeyPermission(ctx, s.DB.RW(), db.InsertKeyPermissionParams{ KeyID: keyID, - PermissionID: permissionID, + PermissionID: perm.ID, WorkspaceID: req.WorkspaceID, CreatedAt: time.Now().UnixMilli(), }) require.NoError(s.t, err) - res.PermissionIds = append(res.PermissionIds, permissionID) + res.PermissionIds = append(res.PermissionIds, perm.ID) } for _, ratelimit := range req.Ratelimits { @@ -314,9 +314,11 @@ type CreateRatelimitRequest struct { KeyID *string } -func (s *Seeder) CreateRatelimit(ctx context.Context, req CreateRatelimitRequest) string { +func (s *Seeder) CreateRatelimit(ctx context.Context, req CreateRatelimitRequest) db.Ratelimit { ratelimitID := uid.New(uid.RatelimitPrefix) + createdAt := time.Now().UnixMilli() var err error + if req.IdentityID != nil { err = db.Query.InsertIdentityRatelimit(ctx, s.DB.RW(), db.InsertIdentityRatelimitParams{ ID: ratelimitID, @@ -326,7 +328,7 @@ func (s *Seeder) CreateRatelimit(ctx context.Context, req CreateRatelimitRequest Limit: req.Limit, Duration: req.Duration, AutoApply: req.AutoApply, - CreatedAt: time.Now().UnixMilli(), + CreatedAt: createdAt, }) } @@ -339,13 +341,24 @@ func (s *Seeder) CreateRatelimit(ctx context.Context, req CreateRatelimitRequest Limit: req.Limit, Duration: req.Duration, AutoApply: req.AutoApply, - CreatedAt: time.Now().UnixMilli(), + CreatedAt: createdAt, }) } require.NoError(s.t, err) - return ratelimitID + return db.Ratelimit{ + ID: ratelimitID, + Name: req.Name, + WorkspaceID: req.WorkspaceID, + CreatedAt: createdAt, + UpdatedAt: sql.NullInt64{Valid: false}, + KeyID: sql.NullString{String: ptr.SafeDeref(req.KeyID, ""), Valid: req.KeyID != nil}, + IdentityID: sql.NullString{String: ptr.SafeDeref(req.IdentityID, ""), Valid: req.IdentityID != nil}, + Limit: req.Limit, + Duration: req.Duration, + AutoApply: req.AutoApply, + } } type CreateIdentityRequest struct { @@ -355,7 +368,7 @@ type CreateIdentityRequest struct { Ratelimits []CreateRatelimitRequest } -func (s *Seeder) CreateIdentity(ctx context.Context, req CreateIdentityRequest) string { +func (s *Seeder) CreateIdentity(ctx context.Context, req CreateIdentityRequest) db.Identity { metaBytes := []byte("{}") if len(req.Meta) > 0 { metaBytes = req.Meta @@ -380,7 +393,16 @@ func (s *Seeder) CreateIdentity(ctx context.Context, req CreateIdentityRequest) s.CreateRatelimit(ctx, ratelimit) } - return identityId + return db.Identity{ + ID: identityId, + ExternalID: req.ExternalID, + WorkspaceID: req.WorkspaceID, + Environment: "", + Meta: metaBytes, + Deleted: false, + CreatedAt: time.Now().UnixMilli(), + UpdatedAt: sql.NullInt64{Valid: false}, + } } type CreateRoleRequest struct { @@ -391,33 +413,41 @@ type CreateRoleRequest struct { Permissions []CreatePermissionRequest } -func (s *Seeder) CreateRole(ctx context.Context, req CreateRoleRequest) string { +func (s *Seeder) CreateRole(ctx context.Context, req CreateRoleRequest) db.Role { require.NoError(s.t, assert.NotEmpty(req.WorkspaceID, "Role WorkspaceID must be set")) require.NoError(s.t, assert.NotEmpty(req.Name, "Role Name must be set")) - roleID := uid.New(uid.PermissionPrefix) + roleID := uid.New(uid.RolePrefix) + createdAt := time.Now().UnixMilli() err := db.Query.InsertRole(ctx, s.DB.RW(), db.InsertRoleParams{ RoleID: roleID, WorkspaceID: req.WorkspaceID, Name: req.Name, - CreatedAt: time.Now().UnixMilli(), + CreatedAt: createdAt, Description: sql.NullString{Valid: req.Description != nil, String: ptr.SafeDeref(req.Description, "")}, }) require.NoError(s.t, err) for _, permission := range req.Permissions { - permissionID := s.CreatePermission(ctx, permission) + perm := s.CreatePermission(ctx, permission) err = db.Query.InsertRolePermission(ctx, s.DB.RW(), db.InsertRolePermissionParams{ RoleID: roleID, - PermissionID: permissionID, + PermissionID: perm.ID, WorkspaceID: req.WorkspaceID, CreatedAtM: time.Now().UnixMilli(), }) require.NoError(s.t, err) } - return roleID + return db.Role{ + ID: roleID, + WorkspaceID: req.WorkspaceID, + Name: req.Name, + Description: sql.NullString{Valid: req.Description != nil, String: ptr.SafeDeref(req.Description, "")}, + CreatedAtM: createdAt, + UpdatedAtM: sql.NullInt64{Valid: false}, + } } type CreatePermissionRequest struct { @@ -427,21 +457,31 @@ type CreatePermissionRequest struct { WorkspaceID string } -func (s *Seeder) CreatePermission(ctx context.Context, req CreatePermissionRequest) string { +func (s *Seeder) CreatePermission(ctx context.Context, req CreatePermissionRequest) db.Permission { require.NoError(s.t, assert.NotEmpty(req.WorkspaceID, "Permission WorkspaceID must be set")) - require.NoError(s.t, assert.NotEmpty(req.WorkspaceID, "Permission Name must be set")) - require.NoError(s.t, assert.NotEmpty(req.WorkspaceID, "Permission Slug must be set")) + require.NoError(s.t, assert.NotEmpty(req.Name, "Permission Name must be set")) + require.NoError(s.t, assert.NotEmpty(req.Slug, "Permission Slug must be set")) permissionID := uid.New(uid.PermissionPrefix) + createdAt := time.Now().UnixMilli() + err := db.Query.InsertPermission(ctx, s.DB.RW(), db.InsertPermissionParams{ PermissionID: permissionID, WorkspaceID: req.WorkspaceID, Name: req.Name, Slug: req.Slug, Description: dbtype.NullString{Valid: req.Description != nil, String: ptr.SafeDeref(req.Description, "")}, - CreatedAtM: time.Now().UnixMilli(), + CreatedAtM: createdAt, }) require.NoError(s.t, err) - return permissionID + return db.Permission{ + ID: permissionID, + WorkspaceID: req.WorkspaceID, + Name: req.Name, + Slug: req.Slug, + Description: dbtype.NullString{Valid: req.Description != nil, String: ptr.SafeDeref(req.Description, "")}, + CreatedAtM: createdAt, + UpdatedAtM: sql.NullInt64{Valid: false}, + } }