github.com/redhat-appstudio/e2e-tests@v0.0.0-20230619105049-9a422b2094d7/pkg/utils/common/space_binding.go (about) 1 package common 2 3 import ( 4 "context" 5 "fmt" 6 "strings" 7 8 toolchainApi "github.com/codeready-toolchain/api/api/v1alpha1" 9 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 10 ) 11 12 // CreateSpaceBinding creates SpaceBinding resource for the given murName and spaceName 13 func (s *SuiteController) CreateSpaceBinding(murName, spaceName, spaceRole string) (*toolchainApi.SpaceBinding, error) { 14 namePrefix := fmt.Sprintf("%s-%s", murName, spaceName) 15 if len(namePrefix) > 50 { 16 namePrefix = namePrefix[0:50] 17 } 18 spaceBinding := &toolchainApi.SpaceBinding{ 19 ObjectMeta: metav1.ObjectMeta{ 20 GenerateName: namePrefix + "-", 21 Namespace: "toolchain-host-operator", 22 Labels: map[string]string{ 23 toolchainApi.SpaceBindingMasterUserRecordLabelKey: murName, 24 toolchainApi.SpaceBindingSpaceLabelKey: spaceName, 25 }, 26 }, 27 Spec: toolchainApi.SpaceBindingSpec{ 28 MasterUserRecord: murName, 29 Space: spaceName, 30 SpaceRole: spaceRole, 31 }, 32 } 33 34 err := s.KubeRest().Create(context.TODO(), spaceBinding) 35 if err != nil { 36 return &toolchainApi.SpaceBinding{}, err 37 } 38 39 return spaceBinding, nil 40 } 41 42 // CheckWorkspaceShare checks if the given user was added to given namespace 43 func (s *SuiteController) CheckWorkspaceShare(user, namespace string) error { 44 ns, err := s.GetNamespace(namespace) 45 if err != nil { 46 return nil 47 } 48 49 annotation := "toolchain.dev.openshift.com/last-applied-space-roles" 50 annotations := ns.Annotations 51 52 if _, ok := annotations[annotation]; !ok { 53 return fmt.Errorf("error finding annotation %s", annotation) 54 } 55 56 lastAppliedSpaceRoles := annotations[annotation] 57 58 if !strings.Contains(lastAppliedSpaceRoles, user) { 59 return fmt.Errorf("error finding user %s in annotation %s", user, annotation) 60 } 61 62 return nil 63 }