github.com/weaviate/weaviate@v1.24.6/test/acceptance/multi_tenancy/delete_tenant_objects_test.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package test 13 14 import ( 15 "testing" 16 17 "github.com/stretchr/testify/assert" 18 "github.com/stretchr/testify/require" 19 "github.com/weaviate/weaviate/client/objects" 20 "github.com/weaviate/weaviate/entities/models" 21 "github.com/weaviate/weaviate/entities/schema" 22 "github.com/weaviate/weaviate/test/helper" 23 ) 24 25 func TestDeleteTenantObjects(t *testing.T) { 26 testClass := models.Class{ 27 Class: "MultiTenantClass", 28 MultiTenancyConfig: &models.MultiTenancyConfig{ 29 Enabled: true, 30 }, 31 Properties: []*models.Property{ 32 { 33 Name: "name", 34 DataType: schema.DataTypeText.PropString(), 35 }, 36 }, 37 } 38 tenantNames := []string{ 39 "Tenant1", "Tenant2", "Tenant3", 40 } 41 tenantObjects := []*models.Object{ 42 { 43 ID: "0927a1e0-398e-4e76-91fb-04a7a8f0405c", 44 Class: testClass.Class, 45 Properties: map[string]interface{}{ 46 "name": tenantNames[0], 47 }, 48 Tenant: tenantNames[0], 49 }, 50 { 51 ID: "831ae1d0-f441-44b1-bb2a-46548048e26f", 52 Class: testClass.Class, 53 Properties: map[string]interface{}{ 54 "name": tenantNames[1], 55 }, 56 Tenant: tenantNames[1], 57 }, 58 { 59 ID: "6f3363e0-c0a0-4618-bf1f-b6cad9cdff59", 60 Class: testClass.Class, 61 Properties: map[string]interface{}{ 62 "name": tenantNames[2], 63 }, 64 Tenant: tenantNames[2], 65 }, 66 } 67 68 defer func() { 69 helper.DeleteClass(t, testClass.Class) 70 }() 71 72 t.Run("create class with multi-tenancy enabled", func(t *testing.T) { 73 helper.CreateClass(t, &testClass) 74 }) 75 76 t.Run("create tenants", func(t *testing.T) { 77 tenants := make([]*models.Tenant, len(tenantNames)) 78 for i := range tenants { 79 tenants[i] = &models.Tenant{Name: tenantNames[i]} 80 } 81 helper.CreateTenants(t, testClass.Class, tenants) 82 }) 83 84 t.Run("add tenant objects", func(t *testing.T) { 85 for _, obj := range tenantObjects { 86 helper.CreateObject(t, obj) 87 } 88 89 t.Run("verify tenant objects creation", func(t *testing.T) { 90 for i, obj := range tenantObjects { 91 resp, err := helper.TenantObject(t, obj.Class, obj.ID, tenantNames[i]) 92 require.Nil(t, err) 93 require.Equal(t, obj.ID, resp.ID) 94 require.Equal(t, obj.Class, resp.Class) 95 require.Equal(t, obj.Properties, resp.Properties) 96 } 97 }) 98 }) 99 100 t.Run("delete tenant objects", func(t *testing.T) { 101 for i, obj := range tenantObjects { 102 helper.DeleteTenantObject(t, obj.Class, obj.ID, tenantNames[i]) 103 } 104 }) 105 106 t.Run("assert object deletion", func(t *testing.T) { 107 for i, obj := range tenantObjects { 108 _, err := helper.TenantObject(t, obj.Class, obj.ID, tenantNames[i]) 109 require.NotNil(t, err) 110 assert.EqualError(t, &objects.ObjectsClassGetNotFound{}, err.Error()) 111 } 112 }) 113 }