Changes
3 changed files (+135/-25)
-
-
@@ -55,31 +55,6 @@if v.Ok.Id.GetValue() == "" { t.Error("Expected ID, got empty value") } loginRes, err := client.Login( context.Background(), connect.NewRequest(&workspaceV2.LoginRequest{ Name: proto.String("alice"), Password: proto.String("Alice's password"), }), ) if err != nil { t.Fatal(err) } login, ok := loginRes.Msg.Result.(*workspaceV2.LoginResponse_Ok) if !ok { typeName := reflect.Indirect(reflect.ValueOf(loginRes.Msg.Result)) t.Errorf("Expected ok, got %s", typeName.Type().Name()) } if login.Ok.Id.GetValue() != v.Ok.Id.GetValue() { t.Errorf( "CreateInitialAdminResponse.ok.id.value = %s, LoginResponse.ok.id.value = %s", v.Ok.Id.GetValue(), login.Ok.Id.GetValue(), ) } } func TestSetNameToDisplayName(t *testing.T) {
-
-
-
@@ -6,12 +6,19 @@package v2 import ( "context" "database/sql" "io" "log/slog" "reflect" "testing" "connectrpc.com/connect" "go.akshayshah.org/memhttp" "google.golang.org/protobuf/proto" workspaceV2 "pocka.jp/x/yamori/proto/go/workspace/v2" "pocka.jp/x/yamori/proto/go/workspace/v2/v2connect" "pocka.jp/x/yamori/backend/core" "pocka.jp/x/yamori/backend/services"
-
@@ -42,3 +49,35 @@ }return server } // setupInitialAdmin は ユーザ名 "alice" パスワード "alice_password" の管理者ユーザの存在する // ワークスペースを作成し、接続可能なサーバを返す。 func setupInitialAdmin(t *testing.T) *memhttp.Server { server := setup(t) client := v2connect.NewWorkspaceServiceClient( server.Client(), server.URL(), ) res, err := client.CreateInitialAdmin( context.Background(), connect.NewRequest(&workspaceV2.CreateInitialAdminRequest{ Name: proto.String("alice"), DisplayName: proto.String("Alice"), Password: proto.String("alice_password"), InitialAdminPassword: proto.String("initial_admin_password"), }), ) if err != nil { t.Fatal(err) } _, ok := res.Msg.Result.(*workspaceV2.CreateInitialAdminResponse_Ok) if !ok { typeName := reflect.Indirect(reflect.ValueOf(res.Msg.Result)) t.Errorf("Expected ok, got %s", typeName.Type().Name()) } return server }
-
-
-
@@ -0,0 +1,96 @@// SPDX-FileCopyrightText: 2025 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only //go:build !js && !wasm package v2 import ( "context" "reflect" "testing" "connectrpc.com/connect" "google.golang.org/protobuf/proto" workspaceV2 "pocka.jp/x/yamori/proto/go/workspace/v2" "pocka.jp/x/yamori/proto/go/workspace/v2/v2connect" ) func TestLoginInitialAdmin(t *testing.T) { server := setupInitialAdmin(t) client := v2connect.NewWorkspaceServiceClient( server.Client(), server.URL(), ) loginRes, err := client.Login( context.Background(), connect.NewRequest(&workspaceV2.LoginRequest{ Name: proto.String("alice"), Password: proto.String("alice_password"), }), ) if err != nil { t.Fatal(err) } _, ok := loginRes.Msg.Result.(*workspaceV2.LoginResponse_Ok) if !ok { typeName := reflect.Indirect(reflect.ValueOf(loginRes.Msg.Result)) t.Errorf("Expected ok, got %s", typeName.Type().Name()) } } func TestLoginRejectIncorrectPassword(t *testing.T) { server := setupInitialAdmin(t) client := v2connect.NewWorkspaceServiceClient( server.Client(), server.URL(), ) loginRes, err := client.Login( context.Background(), connect.NewRequest(&workspaceV2.LoginRequest{ Name: proto.String("alice"), Password: proto.String("bob_password"), }), ) if err != nil { t.Fatal(err) } _, ok := loginRes.Msg.Result.(*workspaceV2.LoginResponse_AuthenticationError) if !ok { typeName := reflect.Indirect(reflect.ValueOf(loginRes.Msg.Result)) t.Errorf("Expected authentication_error, got %s", typeName.Type().Name()) } } func TestLoginRejectIncorrectName(t *testing.T) { server := setupInitialAdmin(t) client := v2connect.NewWorkspaceServiceClient( server.Client(), server.URL(), ) loginRes, err := client.Login( context.Background(), connect.NewRequest(&workspaceV2.LoginRequest{ Name: proto.String("bob"), Password: proto.String("alice_password"), }), ) if err != nil { t.Fatal(err) } _, ok := loginRes.Msg.Result.(*workspaceV2.LoginResponse_AuthenticationError) if !ok { typeName := reflect.Indirect(reflect.ValueOf(loginRes.Msg.Result)) t.Errorf("Expected authentication_error, got %s", typeName.Type().Name()) } }
-