package cryptocli_test import ( "context" "strings" "testing" "git.zetit.ru/zuevav/Bridge-and-Join-s/internal/cryptocli" ) // TestStubProviderHealthOK — провайдер stub не лезет в gRPC, // возвращает информативный Health без ошибки. func TestStubProviderHealthOK(t *testing.T) { cli := cryptocli.New(cryptocli.Config{Provider: cryptocli.ProviderStub}) defer cli.Close() h, err := cli.Health(context.Background()) if err != nil { t.Fatalf("Health: %v", err) } if h.Provider != string(cryptocli.ProviderStub) { t.Errorf("Provider = %q, ожидался stub", h.Provider) } if !strings.Contains(h.Message, "stub") { t.Errorf("сообщение не содержит 'stub': %q", h.Message) } } // TestValidataProviderNoSocket — провайдер validata пытается дойти до // сайдкара, но в тестах сокета нет. gRPC-клиент создаётся лениво // (NewClient не возвращает ошибку), а ошибка приходит при первом RPC. func TestValidataProviderNoSocket(t *testing.T) { cli := cryptocli.New(cryptocli.Config{ Provider: cryptocli.ProviderValidata, SocketPath: "/nonexistent/crypto.sock", }) defer cli.Close() _, err := cli.Health(context.Background()) if err == nil { t.Fatal("ожидалась ошибка о недоступном сокете") } } // TestDefaultModulePath — информативный текст для UI. func TestDefaultModulePath(t *testing.T) { if cryptocli.DefaultModulePath(cryptocli.ProviderStub) != "" { t.Error("DefaultModulePath(stub) должен быть пустым") } v := cryptocli.DefaultModulePath(cryptocli.ProviderValidata) if v == "" { t.Error("DefaultModulePath(validata) не должен быть пустым") } }