From 81291b23b1c0d236b7f6bd8700d0dc2273cb36b3 Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Mon, 17 Apr 2017 12:46:03 -0700 Subject: [PATCH] clientv3/integration: add 'TestUserErrorAuth' Signed-off-by: Gyu-Ho Lee --- clientv3/integration/user_test.go | 53 +++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/clientv3/integration/user_test.go b/clientv3/integration/user_test.go index e066af5e8..09f352be0 100644 --- a/clientv3/integration/user_test.go +++ b/clientv3/integration/user_test.go @@ -17,6 +17,7 @@ package integration import ( "testing" + "github.com/coreos/etcd/clientv3" "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes" "github.com/coreos/etcd/integration" "github.com/coreos/etcd/pkg/testutil" @@ -51,3 +52,55 @@ func TestUserError(t *testing.T) { t.Fatalf("expected %v, got %v", rpctypes.ErrRoleNotFound, err) } } + +func TestUserErrorAuth(t *testing.T) { + defer testutil.AfterTest(t) + + clus := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1}) + defer clus.Terminate(t) + + authapi := clus.RandClient() + authSetupRoot(t, authapi.Auth) + + // un-authenticated client + if _, err := authapi.UserAdd(context.TODO(), "foo", "bar"); err != rpctypes.ErrUserNotFound { + t.Fatalf("expected %v, got %v", rpctypes.ErrUserNotFound, err) + } + + // wrong id or password + cfg := clientv3.Config{Endpoints: authapi.Endpoints()} + cfg.Username, cfg.Password = "wrong-id", "123" + if _, err := clientv3.New(cfg); err != rpctypes.ErrAuthFailed { + t.Fatalf("expected %v, got %v", rpctypes.ErrAuthFailed, err) + } + cfg.Username, cfg.Password = "root", "wrong-pass" + if _, err := clientv3.New(cfg); err != rpctypes.ErrAuthFailed { + t.Fatalf("expected %v, got %v", rpctypes.ErrAuthFailed, err) + } + + cfg.Username, cfg.Password = "root", "123" + authed, err := clientv3.New(cfg) + if err != nil { + t.Fatal(err) + } + defer authed.Close() + + if _, err := authed.UserList(context.TODO()); err != nil { + t.Fatal(err) + } +} + +func authSetupRoot(t *testing.T, auth clientv3.Auth) { + if _, err := auth.UserAdd(context.TODO(), "root", "123"); err != nil { + t.Fatal(err) + } + if _, err := auth.RoleAdd(context.TODO(), "root"); err != nil { + t.Fatal(err) + } + if _, err := auth.UserGrantRole(context.TODO(), "root", "root"); err != nil { + t.Fatal(err) + } + if _, err := auth.AuthEnable(context.TODO()); err != nil { + t.Fatal(err) + } +}