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,7 @@ import (
func TestDocument_Create(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document Owner").Create()
ownerProfileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
tests := []struct {
name string
@@ -113,7 +113,7 @@ func TestDocument_Create(t *testing.T) {
input := map[string]any{
"organizationId": owner.GetOrganizationID().String(),
"ownerId": ownerPeopleID,
"ownerId": ownerProfileID.String(),
}
for k, v := range tt.input {
input[k] = v
@@ -151,7 +151,7 @@ func TestDocument_Create(t *testing.T) {
func TestDocument_Create_Validation(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document Validation Owner").Create()
ownerProfileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
tests := []struct {
name string
@@ -293,7 +293,7 @@ func TestDocument_Create_Validation(t *testing.T) {
input["organizationId"] = owner.GetOrganizationID().String()
}
if !tt.skipOwner {
input["ownerId"] = ownerPeopleID
input["ownerId"] = ownerProfileID.String()
}
for k, v := range tt.input {
input[k] = v
@@ -309,7 +309,7 @@ func TestDocument_Create_Validation(t *testing.T) {
func TestDocument_Update(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document Update Owner").Create()
ownerProfileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
tests := []struct {
name string
@@ -321,7 +321,7 @@ func TestDocument_Update(t *testing.T) {
{
name: "update title",
setup: func() string {
return factory.NewDocument(owner, ownerPeopleID).
return factory.NewDocument(owner, ownerProfileID.String()).
WithTitle("Document to Update").
Create()
},
@@ -337,7 +337,7 @@ func TestDocument_Update(t *testing.T) {
{
name: "update document type",
setup: func() string {
return factory.NewDocument(owner, ownerPeopleID).
return factory.NewDocument(owner, ownerProfileID.String()).
WithTitle("Type Test").
WithDocumentType("POLICY").
Create()
@@ -393,8 +393,8 @@ func TestDocument_Update(t *testing.T) {
func TestDocument_Update_Validation(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document Update Validation Owner").Create()
baseDocumentID := factory.NewDocument(owner, ownerPeopleID).WithTitle("Validation Test Document").Create()
ownerProfileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
baseDocumentID := factory.NewDocument(owner, ownerProfileID.String()).WithTitle("Validation Test Document").Create()
tests := []struct {
name string
@@ -484,10 +484,10 @@ func TestDocument_Update_Validation(t *testing.T) {
func TestDocument_Delete(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document Delete Owner").Create()
ownerProfileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
t.Run("delete existing document", func(t *testing.T) {
documentID := factory.NewDocument(owner, ownerPeopleID).WithTitle("Document to Delete").Create()
documentID := factory.NewDocument(owner, ownerProfileID.String()).WithTitle("Document to Delete").Create()
query := `
mutation DeleteDocument($input: DeleteDocumentInput!) {
@@ -549,11 +549,11 @@ func TestDocument_Delete_Validation(t *testing.T) {
func TestDocument_List(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document List Owner").Create()
ownerProfileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentTitles := []string{"Document A", "Document B", "Document C"}
for _, title := range documentTitles {
factory.NewDocument(owner, ownerPeopleID).WithTitle(title).Create()
factory.NewDocument(owner, ownerProfileID.String()).WithTitle(title).Create()
}
query := `
@@ -621,7 +621,7 @@ func TestDocument_Query(t *testing.T) {
func TestDocument_Timestamps(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document Timestamps Owner").Create()
ownerProfileID := 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)
@@ -655,7 +655,7 @@ func TestDocument_Timestamps(t *testing.T) {
err := owner.Execute(query, map[string]any{
"input": map[string]any{
"organizationId": owner.GetOrganizationID().String(),
"ownerId": ownerPeopleID,
"ownerId": ownerProfileID.String(),
"title": "Timestamp Test Document",
"content": "Test content",
"documentType": "POLICY",
@@ -669,7 +669,7 @@ func TestDocument_Timestamps(t *testing.T) {
})
t.Run("updatedAt changes on update", func(t *testing.T) {
documentID := factory.NewDocument(owner, ownerPeopleID).WithTitle("Timestamp Update Test").Create()
documentID := factory.NewDocument(owner, ownerProfileID.String()).WithTitle("Timestamp Update Test").Create()
getQuery := `
query($id: ID!) {
@@ -733,8 +733,8 @@ func TestDocument_Timestamps(t *testing.T) {
func TestDocument_SubResolvers(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document SubResolver Owner").Create()
documentID := factory.NewDocument(owner, ownerPeopleID).WithTitle("SubResolver Test Document").Create()
ownerProfileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentID := factory.NewDocument(owner, ownerProfileID.String()).WithTitle("SubResolver Test Document").Create()
t.Run("owner sub-resolver", func(t *testing.T) {
query := `
@@ -763,7 +763,7 @@ func TestDocument_SubResolvers(t *testing.T) {
err := owner.Execute(query, map[string]any{"id": documentID}, &result)
require.NoError(t, err)
assert.Equal(t, ownerPeopleID, result.Node.Owner.ID)
assert.Equal(t, ownerProfileID.String(), result.Node.Owner.ID)
})
t.Run("organization sub-resolver", func(t *testing.T) {
@@ -804,7 +804,7 @@ func TestDocument_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()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
_, err := owner.Do(`
mutation CreateDocument($input: CreateDocumentInput!) {
@@ -815,7 +815,7 @@ func TestDocument_RBAC(t *testing.T) {
`, map[string]any{
"input": map[string]any{
"organizationId": owner.GetOrganizationID().String(),
"ownerId": peopleID,
"ownerId": profileID.String(),
"title": "RBAC Test Document",
"content": "Test content",
"documentType": "POLICY",
@@ -828,7 +828,7 @@ func TestDocument_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()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
_, err := admin.Do(`
mutation CreateDocument($input: CreateDocumentInput!) {
@@ -839,7 +839,7 @@ func TestDocument_RBAC(t *testing.T) {
`, map[string]any{
"input": map[string]any{
"organizationId": admin.GetOrganizationID().String(),
"ownerId": peopleID,
"ownerId": profileID.String(),
"title": "RBAC Test Document",
"content": "Test content",
"documentType": "POLICY",
@@ -852,7 +852,7 @@ func TestDocument_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()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
_, err := viewer.Do(`
mutation CreateDocument($input: CreateDocumentInput!) {
@@ -863,7 +863,7 @@ func TestDocument_RBAC(t *testing.T) {
`, map[string]any{
"input": map[string]any{
"organizationId": viewer.GetOrganizationID().String(),
"ownerId": peopleID,
"ownerId": profileID.String(),
"title": "RBAC Test Document",
"content": "Test content",
"documentType": "POLICY",
@@ -877,8 +877,8 @@ func TestDocument_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()
documentID := factory.NewDocument(owner, peopleID).WithTitle("RBAC Update Test").Create()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentID := factory.NewDocument(owner, profileID.String()).WithTitle("RBAC Update Test").Create()
_, err := owner.Do(`
mutation UpdateDocument($input: UpdateDocumentInput!) {
@@ -898,8 +898,8 @@ func TestDocument_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()
documentID := factory.NewDocument(owner, peopleID).WithTitle("RBAC Update Test").Create()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentID := factory.NewDocument(owner, profileID.String()).WithTitle("RBAC Update Test").Create()
_, err := admin.Do(`
mutation UpdateDocument($input: UpdateDocumentInput!) {
@@ -919,8 +919,8 @@ func TestDocument_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()
documentID := factory.NewDocument(owner, peopleID).WithTitle("RBAC Update Test").Create()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentID := factory.NewDocument(owner, profileID.String()).WithTitle("RBAC Update Test").Create()
_, err := viewer.Do(`
mutation UpdateDocument($input: UpdateDocumentInput!) {
@@ -941,8 +941,8 @@ func TestDocument_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()
documentID := factory.NewDocument(owner, peopleID).WithTitle("RBAC Delete Test").Create()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentID := factory.NewDocument(owner, profileID.String()).WithTitle("RBAC Delete Test").Create()
_, err := owner.Do(`
mutation DeleteDocument($input: DeleteDocumentInput!) {
@@ -959,8 +959,8 @@ func TestDocument_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()
documentID := factory.NewDocument(owner, peopleID).WithTitle("RBAC Delete Test").Create()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentID := factory.NewDocument(owner, profileID.String()).WithTitle("RBAC Delete Test").Create()
_, err := admin.Do(`
mutation DeleteDocument($input: DeleteDocumentInput!) {
@@ -977,8 +977,8 @@ func TestDocument_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()
documentID := factory.NewDocument(owner, peopleID).WithTitle("RBAC Delete Test").Create()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentID := factory.NewDocument(owner, profileID.String()).WithTitle("RBAC Delete Test").Create()
_, err := viewer.Do(`
mutation DeleteDocument($input: DeleteDocumentInput!) {
@@ -996,8 +996,8 @@ func TestDocument_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()
documentID := factory.NewDocument(owner, peopleID).WithTitle("RBAC Read Test").Create()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentID := factory.NewDocument(owner, profileID.String()).WithTitle("RBAC Read Test").Create()
var result struct {
Node *struct {
@@ -1020,8 +1020,8 @@ func TestDocument_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()
documentID := factory.NewDocument(owner, peopleID).WithTitle("RBAC Read Test").Create()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentID := factory.NewDocument(owner, profileID.String()).WithTitle("RBAC Read Test").Create()
var result struct {
Node *struct {
@@ -1044,8 +1044,8 @@ func TestDocument_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()
documentID := factory.NewDocument(owner, peopleID).WithTitle("RBAC Read Test").Create()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
documentID := factory.NewDocument(owner, profileID.String()).WithTitle("RBAC Read Test").Create()
var result struct {
Node *struct {
@@ -1070,7 +1070,7 @@ func TestDocument_RBAC(t *testing.T) {
func TestDocument_MaxLength_Validation(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document Max Length Owner").Create()
ownerProfileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
longTitle := strings.Repeat("a", 1001)
@@ -1088,7 +1088,7 @@ func TestDocument_MaxLength_Validation(t *testing.T) {
_, err := owner.Do(query, map[string]any{
"input": map[string]any{
"organizationId": owner.GetOrganizationID().String(),
"ownerId": ownerPeopleID,
"ownerId": ownerProfileID.String(),
"title": longTitle,
"content": "Test content",
"documentType": "POLICY",
@@ -1100,7 +1100,7 @@ func TestDocument_MaxLength_Validation(t *testing.T) {
})
t.Run("update", func(t *testing.T) {
documentID := factory.NewDocument(owner, ownerPeopleID).WithTitle("Max Length Test").Create()
documentID := factory.NewDocument(owner, ownerProfileID.String()).WithTitle("Max Length Test").Create()
query := `
mutation UpdateDocument($input: UpdateDocumentInput!) {
@@ -1124,10 +1124,10 @@ func TestDocument_MaxLength_Validation(t *testing.T) {
func TestDocument_Pagination(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document Pagination Owner").Create()
ownerProfileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
for i := 0; i < 5; i++ {
factory.NewDocument(owner, ownerPeopleID).
factory.NewDocument(owner, ownerProfileID.String()).
WithTitle(fmt.Sprintf("Pagination Document %d", i)).
Create()
}
@@ -1273,8 +1273,8 @@ func TestDocument_TenantIsolation(t *testing.T) {
org1Owner := testutil.NewClient(t, testutil.RoleOwner)
org2Owner := testutil.NewClient(t, testutil.RoleOwner)
peopleID := factory.NewPeople(org1Owner).WithFullName("Org1 Document Owner").Create()
documentID := factory.NewDocument(org1Owner, peopleID).WithTitle("Org1 Document").Create()
profileID := testutil.NewClientInOrg(t, testutil.RoleViewer, org1Owner).GetProfileID()
documentID := factory.NewDocument(org1Owner, profileID.String()).WithTitle("Org1 Document").Create()
t.Run("cannot read document from another organization", func(t *testing.T) {
query := `
@@ -1380,10 +1380,10 @@ func TestDocument_TenantIsolation(t *testing.T) {
func TestDocument_Ordering(t *testing.T) {
t.Parallel()
owner := testutil.NewClient(t, testutil.RoleOwner)
ownerPeopleID := factory.NewPeople(owner).WithFullName("Document Ordering Owner").Create()
ownerProfileID := testutil.NewClientInOrg(t, testutil.RoleViewer, owner).GetProfileID()
factory.NewDocument(owner, ownerPeopleID).WithTitle("AAA Order Test").Create()
factory.NewDocument(owner, ownerPeopleID).WithTitle("ZZZ Order Test").Create()
factory.NewDocument(owner, ownerProfileID.String()).WithTitle("AAA Order Test").Create()
factory.NewDocument(owner, ownerProfileID.String()).WithTitle("ZZZ Order Test").Create()
t.Run("order by created_at descending", func(t *testing.T) {
query := `