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  }