X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7a7a1395490eb9b9789b79f88a77fe709a898feb..f5e60e18f701e135e0721307130d0acf6c7da183:/lib/controller/localdb/login_testuser.go diff --git a/lib/controller/localdb/login_testuser.go b/lib/controller/localdb/login_testuser.go index 5a3d803b89..9988f6997a 100644 --- a/lib/controller/localdb/login_testuser.go +++ b/lib/controller/localdb/login_testuser.go @@ -5,9 +5,10 @@ package localdb import ( + "bytes" "context" - "errors" "fmt" + "html/template" "git.arvados.org/arvados.git/lib/controller/rpc" "git.arvados.org/arvados.git/sdk/go/arvados" @@ -16,16 +17,25 @@ import ( ) type testLoginController struct { - Cluster *arvados.Cluster - RailsProxy *railsProxy + Cluster *arvados.Cluster + Parent *Conn } func (ctrl *testLoginController) Logout(ctx context.Context, opts arvados.LogoutOptions) (arvados.LogoutResponse, error) { - return noopLogout(ctrl.Cluster, opts) + return logout(ctx, ctrl.Cluster, opts) } func (ctrl *testLoginController) Login(ctx context.Context, opts arvados.LoginOptions) (arvados.LoginResponse, error) { - return arvados.LoginResponse{}, errors.New("interactive login is not available") + tmpl, err := template.New("form").Parse(loginform) + if err != nil { + return arvados.LoginResponse{}, err + } + var buf bytes.Buffer + err = tmpl.Execute(&buf, opts) + if err != nil { + return arvados.LoginResponse{}, err + } + return arvados.LoginResponse{HTML: buf}, nil } func (ctrl *testLoginController) UserAuthenticate(ctx context.Context, opts arvados.UserAuthenticateOptions) (arvados.APIClientAuthorization, error) { @@ -35,7 +45,7 @@ func (ctrl *testLoginController) UserAuthenticate(ctx context.Context, opts arva "username": username, "email": user.Email, }).Debug("test authentication succeeded") - return createAPIClientAuthorization(ctx, ctrl.RailsProxy, ctrl.Cluster.SystemRootToken, rpc.UserSessionAuthInfo{ + return ctrl.Parent.CreateAPIClientAuthorization(ctx, ctrl.Cluster.SystemRootToken, rpc.UserSessionAuthInfo{ Username: username, Email: user.Email, }) @@ -43,3 +53,52 @@ func (ctrl *testLoginController) UserAuthenticate(ctx context.Context, opts arva } return arvados.APIClientAuthorization{}, fmt.Errorf("authentication failed for user %q with password len=%d", opts.Username, len(opts.Password)) } + +const loginform = ` + + + Arvados test login + + + +

Arvados test login

+
+ + username + password + +
+

+
+ + + +`