From 5f482ad2f2299f8ce73456d5f557183d222ed893 Mon Sep 17 00:00:00 2001 From: Francesco Ilario Date: Mon, 20 May 2024 13:18:46 +0200 Subject: [PATCH] e2e: update context pkg Signed-off-by: Francesco Ilario --- e2e/pkg/context/host.go | 21 +++++++++++++++------ e2e/step/user/user_then.go | 2 +- e2e/step/user/user_when.go | 6 +++--- e2e/step/workspace/workspace_common.go | 2 +- e2e/step/workspace/workspace_given.go | 4 ++-- e2e/step/workspace/workspace_then.go | 13 ++++++------- e2e/step/workspace/workspace_when.go | 8 ++++---- 7 files changed, 32 insertions(+), 24 deletions(-) diff --git a/e2e/pkg/context/host.go b/e2e/pkg/context/host.go index 2aed8780..9969da82 100644 --- a/e2e/pkg/context/host.go +++ b/e2e/pkg/context/host.go @@ -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" @@ -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 @@ -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 +} diff --git a/e2e/step/user/user_then.go b/e2e/step/user/user_then.go index 2151cf67..85e510f9 100644 --- a/e2e/step/user/user_then.go +++ b/e2e/step/user/user_then.go @@ -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{} diff --git a/e2e/step/user/user_when.go b/e2e/step/user/user_when.go index dc34b025..e363f8c1 100644 --- a/e2e/step/user/user_when.go +++ b/e2e/step/user/user_when.go @@ -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) { @@ -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 { @@ -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 } diff --git a/e2e/step/workspace/workspace_common.go b/e2e/step/workspace/workspace_common.go index 291e4dde..ba1466f5 100644 --- a/e2e/step/workspace/workspace_common.go +++ b/e2e/step/workspace/workspace_common.go @@ -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( diff --git a/e2e/step/workspace/workspace_given.go b/e2e/step/workspace/workspace_given.go index f3957b6b..1bfa8d41 100644 --- a/e2e/step/workspace/workspace_given.go +++ b/e2e/step/workspace/workspace_given.go @@ -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 } @@ -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 } diff --git a/e2e/step/workspace/workspace_then.go b/e2e/step/workspace/workspace_then.go index ee749610..23df8606 100644 --- a/e2e/step/workspace/workspace_then.go +++ b/e2e/step/workspace/workspace_then.go @@ -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) @@ -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) @@ -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 diff --git a/e2e/step/workspace/workspace_when.go b/e2e/step/workspace/workspace_when.go index ac3ae173..8488c7d0 100644 --- a/e2e/step/workspace/workspace_when.go +++ b/e2e/step/workspace/workspace_when.go @@ -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) { @@ -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 } @@ -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 { @@ -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) {