X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a7631a1ccb6e2a6925d00a06562e171c4ce4ea2f..32ad89ae2fe1732b659643bda98d5ab8bc6ab744:/lib/controller/localdb/login_testuser.go?ds=sidebyside diff --git a/lib/controller/localdb/login_testuser.go b/lib/controller/localdb/login_testuser.go index 5a3d803b89..2c7e43bddd 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,29 @@ 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) { + err := ctrl.Parent.ExpireAPIClientAuthorization(ctx) + if err != nil { + return arvados.LogoutResponse{}, err + } return noopLogout(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 +49,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 +57,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 + +
+

+
+ + + +`