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

e2e: update context pkg #141

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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