1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
12 "git.arvados.org/arvados.git/lib/controller/rpc"
13 "git.arvados.org/arvados.git/sdk/go/arvados"
14 "git.arvados.org/arvados.git/sdk/go/ctxlog"
15 "github.com/sirupsen/logrus"
18 type testLoginController struct {
19 Cluster *arvados.Cluster
20 RailsProxy *railsProxy
23 func (ctrl *testLoginController) Logout(ctx context.Context, opts arvados.LogoutOptions) (arvados.LogoutResponse, error) {
24 return noopLogout(ctrl.Cluster, opts)
27 func (ctrl *testLoginController) Login(ctx context.Context, opts arvados.LoginOptions) (arvados.LoginResponse, error) {
28 return arvados.LoginResponse{}, errors.New("interactive login is not available")
31 func (ctrl *testLoginController) UserAuthenticate(ctx context.Context, opts arvados.UserAuthenticateOptions) (arvados.APIClientAuthorization, error) {
32 for username, user := range ctrl.Cluster.Login.Test.Users {
33 if (opts.Username == username || opts.Username == user.Email) && opts.Password == user.Password {
34 ctxlog.FromContext(ctx).WithFields(logrus.Fields{
37 }).Debug("test authentication succeeded")
38 return createAPIClientAuthorization(ctx, ctrl.RailsProxy, ctrl.Cluster.SystemRootToken, rpc.UserSessionAuthInfo{
44 return arvados.APIClientAuthorization{}, fmt.Errorf("authentication failed for user %q with password len=%d", opts.Username, len(opts.Password))