Fix e2e tests

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-02-06 14:38:14 +04:00
parent 9243681f1b
commit 8d20220c86
25 changed files with 323 additions and 1142 deletions

View File

@@ -29,7 +29,8 @@ import (
func TestDatum_Create(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
tests := []struct {
name string
@@ -102,7 +103,7 @@ func TestDatum_Create(t *testing.T) {
input := map[string]any{
"organizationId": owner.GetOrganizationID().String(),
"ownerId": peopleID,
"ownerId": profileID.String(),
}
for k, v := range tt.input {
input[k] = v
@@ -139,7 +140,8 @@ func TestDatum_Create(t *testing.T) {
func TestDatum_Create_Validation(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum Validation Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
tests := []struct {
name string
@@ -259,7 +261,7 @@ func TestDatum_Create_Validation(t *testing.T) {
input["organizationId"] = owner.GetOrganizationID().String()
}
if !tt.skipOwner {
input["ownerId"] = peopleID
input["ownerId"] = profileID
}
for k, v := range tt.input {
input[k] = v
@@ -275,7 +277,8 @@ func TestDatum_Create_Validation(t *testing.T) {
func TestDatum_Update(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum Update Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
tests := []struct {
name string
@@ -287,7 +290,7 @@ func TestDatum_Update(t *testing.T) {
{
name: "update name",
setup: func() string {
return factory.NewDatum(owner, peopleID).
return factory.NewDatum(owner, profileID.String()).
WithName("Datum to Update").
Create()
},
@@ -303,7 +306,7 @@ func TestDatum_Update(t *testing.T) {
{
name: "update to PUBLIC classification",
setup: func() string {
return factory.NewDatum(owner, peopleID).
return factory.NewDatum(owner, profileID.String()).
WithName("Classification Test").
WithDataClassification("INTERNAL").
Create()
@@ -317,7 +320,7 @@ func TestDatum_Update(t *testing.T) {
{
name: "update to SECRET classification",
setup: func() string {
return factory.NewDatum(owner, peopleID).
return factory.NewDatum(owner, profileID.String()).
WithName("Classification Test").
Create()
},
@@ -372,8 +375,9 @@ func TestDatum_Update(t *testing.T) {
func TestDatum_Update_Validation(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum Update Validation Owner").Create()
baseDatumID := factory.NewDatum(owner, peopleID).WithName("Validation Test Datum").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
baseDatumID := factory.NewDatum(owner, profileID.String()).WithName("Validation Test Datum").Create()
tests := []struct {
name string
@@ -487,10 +491,11 @@ func TestDatum_Update_Validation(t *testing.T) {
func TestDatum_Delete(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum Delete Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
t.Run("delete existing datum", func(t *testing.T) {
datumID := factory.NewDatum(owner, peopleID).WithName("Datum to Delete").Create()
datumID := factory.NewDatum(owner, profileID.String()).WithName("Datum to Delete").Create()
query := `
mutation DeleteDatum($input: DeleteDatumInput!) {
@@ -552,11 +557,12 @@ func TestDatum_Delete_Validation(t *testing.T) {
func TestDatum_List(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum List Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumNames := []string{"Datum A", "Datum B", "Datum C"}
for _, name := range datumNames {
factory.NewDatum(owner, peopleID).WithName(name).Create()
factory.NewDatum(owner, profileID.String()).WithName(name).Create()
}
query := `
@@ -624,7 +630,8 @@ func TestDatum_Query(t *testing.T) {
func TestDatum_Timestamps(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum Timestamps Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
t.Run("createdAt and updatedAt are set on create", func(t *testing.T) {
beforeCreate := time.Now().Add(-time.Second)
@@ -658,7 +665,7 @@ func TestDatum_Timestamps(t *testing.T) {
err := owner.Execute(query, map[string]any{
"input": map[string]any{
"organizationId": owner.GetOrganizationID().String(),
"ownerId": peopleID,
"ownerId": profileID.String(),
"name": "Timestamp Test Datum",
"dataClassification": "INTERNAL",
},
@@ -670,7 +677,7 @@ func TestDatum_Timestamps(t *testing.T) {
})
t.Run("updatedAt changes on update", func(t *testing.T) {
datumID := factory.NewDatum(owner, peopleID).WithName("Timestamp Update Test").Create()
datumID := factory.NewDatum(owner, profileID.String()).WithName("Timestamp Update Test").Create()
getQuery := `
query($id: ID!) {
@@ -734,8 +741,9 @@ func TestDatum_Timestamps(t *testing.T) {
func TestDatum_SubResolvers(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum SubResolver Owner").Create()
datumID := factory.NewDatum(owner, peopleID).WithName("SubResolver Test Datum").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumID := factory.NewDatum(owner, profileID.String()).WithName("SubResolver Test Datum").Create()
t.Run("owner sub-resolver", func(t *testing.T) {
query := `
@@ -764,7 +772,7 @@ func TestDatum_SubResolvers(t *testing.T) {
err := owner.Execute(query, map[string]any{"id": datumID}, &result)
require.NoError(t, err)
assert.Equal(t, peopleID, result.Node.Owner.ID)
assert.Equal(t, profileID.String(), result.Node.Owner.ID)
})
t.Run("organization sub-resolver", func(t *testing.T) {
@@ -805,7 +813,8 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("create", func(t *testing.T) {
t.Run("owner can create", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
_, err := owner.Do(`
mutation CreateDatum($input: CreateDatumInput!) {
@@ -816,7 +825,7 @@ func TestDatum_RBAC(t *testing.T) {
`, map[string]any{
"input": map[string]any{
"organizationId": owner.GetOrganizationID().String(),
"ownerId": peopleID,
"ownerId": profileID.String(),
"name": "RBAC Test Datum",
"dataClassification": "INTERNAL",
},
@@ -827,7 +836,8 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("admin can create", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
admin := testutil.NewClientInOrg(t, testutil.RoleAdmin, owner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Admin Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
_, err := admin.Do(`
mutation CreateDatum($input: CreateDatumInput!) {
@@ -838,7 +848,7 @@ func TestDatum_RBAC(t *testing.T) {
`, map[string]any{
"input": map[string]any{
"organizationId": admin.GetOrganizationID().String(),
"ownerId": peopleID,
"ownerId": profileID.String(),
"name": "RBAC Test Datum",
"dataClassification": "INTERNAL",
},
@@ -849,7 +859,8 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("viewer cannot create", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
viewer := testutil.NewClientInOrg(t, testutil.RoleViewer, owner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Viewer Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
_, err := viewer.Do(`
mutation CreateDatum($input: CreateDatumInput!) {
@@ -860,7 +871,7 @@ func TestDatum_RBAC(t *testing.T) {
`, map[string]any{
"input": map[string]any{
"organizationId": viewer.GetOrganizationID().String(),
"ownerId": peopleID,
"ownerId": profileID.String(),
"name": "RBAC Test Datum",
"dataClassification": "INTERNAL",
},
@@ -872,8 +883,9 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("update", func(t *testing.T) {
t.Run("owner can update", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Update Owner").Create()
datumID := factory.NewDatum(owner, peopleID).WithName("RBAC Update Test").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumID := factory.NewDatum(owner, profileID.String()).WithName("RBAC Update Test").Create()
_, err := owner.Do(`
mutation UpdateDatum($input: UpdateDatumInput!) {
@@ -893,8 +905,9 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("admin can update", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
admin := testutil.NewClientInOrg(t, testutil.RoleAdmin, owner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Admin Update Owner").Create()
datumID := factory.NewDatum(owner, peopleID).WithName("RBAC Update Test").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumID := factory.NewDatum(owner, profileID.String()).WithName("RBAC Update Test").Create()
_, err := admin.Do(`
mutation UpdateDatum($input: UpdateDatumInput!) {
@@ -914,8 +927,9 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("viewer cannot update", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
viewer := testutil.NewClientInOrg(t, testutil.RoleViewer, owner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Viewer Update Owner").Create()
datumID := factory.NewDatum(owner, peopleID).WithName("RBAC Update Test").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumID := factory.NewDatum(owner, profileID.String()).WithName("RBAC Update Test").Create()
_, err := viewer.Do(`
mutation UpdateDatum($input: UpdateDatumInput!) {
@@ -936,8 +950,9 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("delete", func(t *testing.T) {
t.Run("owner can delete", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Delete Owner").Create()
datumID := factory.NewDatum(owner, peopleID).WithName("RBAC Delete Test").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumID := factory.NewDatum(owner, profileID.String()).WithName("RBAC Delete Test").Create()
_, err := owner.Do(`
mutation DeleteDatum($input: DeleteDatumInput!) {
@@ -954,8 +969,9 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("admin can delete", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
admin := testutil.NewClientInOrg(t, testutil.RoleAdmin, owner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Admin Delete Owner").Create()
datumID := factory.NewDatum(owner, peopleID).WithName("RBAC Delete Test").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumID := factory.NewDatum(owner, profileID.String()).WithName("RBAC Delete Test").Create()
_, err := admin.Do(`
mutation DeleteDatum($input: DeleteDatumInput!) {
@@ -972,8 +988,9 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("viewer cannot delete", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
viewer := testutil.NewClientInOrg(t, testutil.RoleViewer, owner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Viewer Delete Owner").Create()
datumID := factory.NewDatum(owner, peopleID).WithName("RBAC Delete Test").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumID := factory.NewDatum(owner, profileID.String()).WithName("RBAC Delete Test").Create()
_, err := viewer.Do(`
mutation DeleteDatum($input: DeleteDatumInput!) {
@@ -991,8 +1008,9 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("read", func(t *testing.T) {
t.Run("owner can read", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Read Owner").Create()
datumID := factory.NewDatum(owner, peopleID).WithName("RBAC Read Test").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumID := factory.NewDatum(owner, profileID.String()).WithName("RBAC Read Test").Create()
var result struct {
Node *struct {
@@ -1015,8 +1033,9 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("admin can read", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
admin := testutil.NewClientInOrg(t, testutil.RoleAdmin, owner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Admin Read Owner").Create()
datumID := factory.NewDatum(owner, peopleID).WithName("RBAC Read Test").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumID := factory.NewDatum(owner, profileID.String()).WithName("RBAC Read Test").Create()
var result struct {
Node *struct {
@@ -1039,8 +1058,9 @@ func TestDatum_RBAC(t *testing.T) {
t.Run("viewer can read", func(t *testing.T) {
owner := testutil.NewClient(t, testutil.RoleOwner)
viewer := testutil.NewClientInOrg(t, testutil.RoleViewer, owner)
peopleID := factory.NewPeople(owner).WithFullName("RBAC Viewer Read Owner").Create()
datumID := factory.NewDatum(owner, peopleID).WithName("RBAC Read Test").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
datumID := factory.NewDatum(owner, profileID.String()).WithName("RBAC Read Test").Create()
var result struct {
Node *struct {
@@ -1065,7 +1085,8 @@ func TestDatum_RBAC(t *testing.T) {
func TestDatum_MaxLength_Validation(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum Max Length Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
longName := strings.Repeat("a", 1001)
@@ -1083,7 +1104,7 @@ func TestDatum_MaxLength_Validation(t *testing.T) {
_, err := owner.Do(query, map[string]any{
"input": map[string]any{
"organizationId": owner.GetOrganizationID().String(),
"ownerId": peopleID,
"ownerId": profileID.String(),
"name": longName,
"dataClassification": "INTERNAL",
},
@@ -1093,7 +1114,7 @@ func TestDatum_MaxLength_Validation(t *testing.T) {
})
t.Run("update", func(t *testing.T) {
datumID := factory.NewDatum(owner, peopleID).WithName("Max Length Test").Create()
datumID := factory.NewDatum(owner, profileID.String()).WithName("Max Length Test").Create()
query := `
mutation UpdateDatum($input: UpdateDatumInput!) {
@@ -1117,10 +1138,11 @@ func TestDatum_MaxLength_Validation(t *testing.T) {
func TestDatum_Pagination(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum Pagination Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
for i := 0; i < 5; i++ {
factory.NewDatum(owner, peopleID).
factory.NewDatum(owner, profileID.String()).
WithName(fmt.Sprintf("Pagination Datum %d", i)).
Create()
}
@@ -1266,8 +1288,9 @@ func TestDatum_TenantIsolation(t *testing.T) {
org1Owner := testutil.NewClient(t, testutil.RoleOwner)
org2Owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(org1Owner).WithFullName("Org1 Datum Owner").Create()
datumID := factory.NewDatum(org1Owner, peopleID).WithName("Org1 Datum").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, org1Owner).GetProfileID()
datumID := factory.NewDatum(org1Owner, profileID.String()).WithName("Org1 Datum").Create()
t.Run("cannot read datum from another organization", func(t *testing.T) {
query := `
@@ -1373,10 +1396,11 @@ func TestDatum_TenantIsolation(t *testing.T) {
func TestDatum_Ordering(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(owner).WithFullName("Datum Ordering Owner").Create()
// TODO: right now we need to invite and accept invite to get new profile.
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
factory.NewDatum(owner, peopleID).WithName("AAA Order Test").Create()
factory.NewDatum(owner, peopleID).WithName("ZZZ Order Test").Create()
factory.NewDatum(owner, profileID.String()).WithName("AAA Order Test").Create()
factory.NewDatum(owner, profileID.String()).WithName("ZZZ Order Test").Create()
t.Run("order by created_at descending", func(t *testing.T) {
query := `