Skip to content
This repository has been archived by the owner on Nov 27, 2024. It is now read-only.

Commit

Permalink
e2e: update context pkg (#141)
Browse files Browse the repository at this point in the history
Signed-off-by: Francesco Ilario <filario@redhat.com>
  • Loading branch information
filariow authored May 20, 2024
1 parent de03280 commit 55a374a
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 24 deletions.
21 changes: 15 additions & 6 deletions e2e/pkg/context/host.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const (
keyScenarioId ContextKey = "scenario-id"
keyKubespaceNamespace ContextKey = "kubespace-namespace"
keyWorkspacesNamespace ContextKey = "workspaces-namespace"
keyWorkspace ContextKey = "default-workspace"
keyInternalWorkspace ContextKey = "default-internal-workspace"
keyUser ContextKey = "default-user"
keyUserWorkspaces ContextKey = "workspaces"

Expand Down Expand Up @@ -72,12 +72,16 @@ func RetrieveTestNamespace(ctx context.Context) string {
}

// Default Workspace
func InjectWorkspace(ctx context.Context, w workspacesv1alpha1.InternalWorkspace) context.Context {
return context.WithValue(ctx, keyWorkspace, w)
func InjectInternalWorkspace(ctx context.Context, w workspacesv1alpha1.InternalWorkspace) context.Context {
return context.WithValue(ctx, keyInternalWorkspace, w)
}

func RetrieveWorkspace(ctx context.Context) workspacesv1alpha1.InternalWorkspace {
return get[workspacesv1alpha1.InternalWorkspace](ctx, keyWorkspace)
func RetrieveInternalWorkspace(ctx context.Context) workspacesv1alpha1.InternalWorkspace {
return get[workspacesv1alpha1.InternalWorkspace](ctx, keyInternalWorkspace)
}

func LookupInternalWorkspace(ctx context.Context) (workspacesv1alpha1.InternalWorkspace, bool) {
return lookup[workspacesv1alpha1.InternalWorkspace](ctx, keyInternalWorkspace)
}

// Default User
Expand Down Expand Up @@ -109,10 +113,15 @@ func RetrieveScenarioId(ctx context.Context) string {

// auxiliary
func get[T any](ctx context.Context, key ContextKey) T {
v, ok := ctx.Value(key).(T)
v, ok := lookup[T](ctx, key)
if !ok {
panic(fmt.Sprintf("%s: %s", msgNotFound, key))
}

return v
}

func lookup[T any](ctx context.Context, key ContextKey) (T, bool) {
v, ok := ctx.Value(key).(T)
return v, ok
}
2 changes: 1 addition & 1 deletion e2e/step/user/user_then.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
)

func thenTheUserRetrievesTheirDefaultWorkspace(ctx context.Context) (context.Context, error) {
w := tcontext.RetrieveWorkspace(ctx)
w := tcontext.RetrieveInternalWorkspace(ctx)
u := tcontext.RetrieveUser(ctx)

errs := []error{}
Expand Down
6 changes: 3 additions & 3 deletions e2e/step/user/user_when.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func whenUserRequestsTheirDefaultWorkspace(ctx context.Context) (context.Context
return ctx, fmt.Errorf("error retrieving workspace %v from host %s as user %s: %w", wk, k.Host, u.Status.CompliantUsername, err)
}
log.Printf("retrieved workspace: %v", w)
return tcontext.InjectWorkspace(ctx, w), nil
return tcontext.InjectInternalWorkspace(ctx, w), nil
}

func buildWorkspacesClient(ctx context.Context) (client.Client, error) {
Expand Down Expand Up @@ -122,7 +122,7 @@ func buildRESTMapper() (meta.RESTMapper, error) {
}

func whenTheUserChangesWorkspaceVisibilityTo(ctx context.Context, visibility string) (context.Context, error) {
w := tcontext.RetrieveWorkspace(ctx)
w := tcontext.RetrieveInternalWorkspace(ctx)

cli, err := buildWorkspacesClient(ctx)
if err != nil {
Expand All @@ -133,5 +133,5 @@ func whenTheUserChangesWorkspaceVisibilityTo(ctx context.Context, visibility str
if err := cli.Update(ctx, &w, &client.UpdateOptions{}); err != nil {
return ctx, err
}
return tcontext.InjectWorkspace(ctx, w), nil
return tcontext.InjectInternalWorkspace(ctx, w), nil
}
2 changes: 1 addition & 1 deletion e2e/step/workspace/workspace_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func defaultWorkspaceIsCreatedForThem(ctx context.Context) (context.Context, err
return ctx, err
}

return tcontext.InjectWorkspace(ctx, *w), nil
return tcontext.InjectInternalWorkspace(ctx, *w), nil
}

func createUserSignupAndWaitForWorkspace(
Expand Down
4 changes: 2 additions & 2 deletions e2e/step/workspace/workspace_given.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func givenAPrivateWorkspaceExists(ctx context.Context) (context.Context, error)
}

ctx = tcontext.InjectUser(ctx, *u)
ctx = tcontext.InjectWorkspace(ctx, *w)
ctx = tcontext.InjectInternalWorkspace(ctx, *w)
return ctx, nil
}

Expand All @@ -45,6 +45,6 @@ func givenACommunityWorkspaceExists(ctx context.Context) (context.Context, error
}

ctx = tcontext.InjectUser(ctx, *u)
ctx = tcontext.InjectWorkspace(ctx, *w)
ctx = tcontext.InjectInternalWorkspace(ctx, *w)
return ctx, nil
}
13 changes: 6 additions & 7 deletions e2e/step/workspace/workspace_then.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,24 +54,24 @@ func thenTheWorkspaceIsReadableOnlyForGranted(ctx context.Context) error {
func thenTheWorkspaceIsReadableForEveryone(ctx context.Context) error {
cli := tcontext.RetrieveHostClient(ctx)
ns := tcontext.RetrieveKubespaceNamespace(ctx)
w := tcontext.RetrieveWorkspace(ctx)
w := tcontext.RetrieveInternalWorkspace(ctx)

return workspaceIsReadableForEveryone(ctx, cli, ns, w.Name)
}

func thenACommunityWorkspaceIsCreated(ctx context.Context) error {
w := tcontext.RetrieveWorkspace(ctx)
w := tcontext.RetrieveInternalWorkspace(ctx)
return checkWorkspaceVisibility(ctx, w.Name, workspacesv1alpha1.InternalWorkspaceVisibilityCommunity)
}

func thenAPrivateWorkspaceIsCreated(ctx context.Context) error {
w := tcontext.RetrieveWorkspace(ctx)
w := tcontext.RetrieveInternalWorkspace(ctx)
return checkWorkspaceVisibility(ctx, w.Name, workspacesv1alpha1.InternalWorkspaceVisibilityPrivate)
}

func thenTheOwnerIsGrantedAdminAccessToTheWorkspace(ctx context.Context) error {
cli := tcontext.RetrieveHostClient(ctx)
w := tcontext.RetrieveWorkspace(ctx)
w := tcontext.RetrieveInternalWorkspace(ctx)
u := tcontext.RetrieveUser(ctx)
ns := tcontext.RetrieveKubespaceNamespace(ctx)

Expand Down Expand Up @@ -101,7 +101,7 @@ func thenTheOwnerIsGrantedAdminAccessToTheWorkspace(ctx context.Context) error {
}

func thenTheWorkspaceVisibilityIsSetTo(ctx context.Context, visibility string) error {
w := tcontext.RetrieveWorkspace(ctx)
w := tcontext.RetrieveInternalWorkspace(ctx)

if w.Spec.Visibility != workspacesv1alpha1.InternalWorkspaceVisibility(visibility) {
return fmt.Errorf(`expected visibility "%s", found "%s"`, visibility, w.Spec.Visibility)
Expand Down Expand Up @@ -138,10 +138,9 @@ func workspaceIsReadableForEveryone(ctx context.Context, cli cli.Cli, namespace,
}

func thenTheWorkspaceVisibilityIsUpdatedTo(ctx context.Context, visibility string) error {
w := tcontext.RetrieveWorkspace(ctx)
w := tcontext.RetrieveInternalWorkspace(ctx)
cli := tcontext.RetrieveHostClient(ctx)
wk := client.ObjectKeyFromObject(&w)

return wait.PollUntilContextTimeout(ctx, 1*time.Second, 1*time.Minute, true, func(ctx context.Context) (done bool, err error) {
if err := cli.Get(ctx, wk, &w); err != nil {
return false, err
Expand Down
8 changes: 4 additions & 4 deletions e2e/step/workspace/workspace_when.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func createNewWorkspace(ctx context.Context, name string, visibility workspacesv
if err != nil {
return ctx, err
}
return tcontext.InjectWorkspace(ctx, *w), nil
return tcontext.InjectInternalWorkspace(ctx, *w), nil
}

func whenAWorkspaceIsCreatedForUser(ctx context.Context) (context.Context, error) {
Expand All @@ -49,7 +49,7 @@ func whenAWorkspaceIsCreatedForUser(ctx context.Context) (context.Context, error
}

ctx = tcontext.InjectUser(ctx, *u)
ctx = tcontext.InjectWorkspace(ctx, *w)
ctx = tcontext.InjectInternalWorkspace(ctx, *w)
return ctx, nil
}

Expand All @@ -62,7 +62,7 @@ func whenOwnerChangesVisibilityToPrivate(ctx context.Context) (context.Context,
}

func ownerChangesVisibilityTo(ctx context.Context, visibility workspacesv1alpha1.InternalWorkspaceVisibility) (context.Context, error) {
w := tcontext.RetrieveWorkspace(ctx)
w := tcontext.RetrieveInternalWorkspace(ctx)
cli := tcontext.RetrieveHostClient(ctx)

_, err := controllerutil.CreateOrUpdate(ctx, &cli, &w, func() error {
Expand All @@ -76,7 +76,7 @@ func ownerChangesVisibilityTo(ctx context.Context, visibility workspacesv1alpha1
return nil, err
}

return tcontext.InjectWorkspace(ctx, w), nil
return tcontext.InjectInternalWorkspace(ctx, w), nil
}

func createWorkspace(ctx context.Context, cli cli.Cli, namespace, name, user string, visibility workspacesv1alpha1.InternalWorkspaceVisibility) (*workspacesv1alpha1.InternalWorkspace, error) {
Expand Down

0 comments on commit 55a374a

Please sign in to comment.