package cryptocli_test import ( "context" "strings" "testing" "git.zetit.ru/zuevav/Bridge-and-Join-s/internal/cryptocli" ) func TestStubProviderHealthOK(t *testing.T) { cli := cryptocli.New(cryptocli.Config{Provider: cryptocli.ProviderStub}) h, err := cli.Health(context.Background()) if err != nil { t.Fatalf("Health: %v", err) } if h.Provider != string(cryptocli.ProviderStub) { t.Errorf("Provider = %q", h.Provider) } if !strings.Contains(h.Message, "stub") { t.Errorf("сообщение не содержит 'stub': %q", h.Message) } } func TestModulePathMissing(t *testing.T) { cli := cryptocli.New(cryptocli.Config{ Provider: cryptocli.ProviderCryptoPro, ModulePath: "/nonexistent/libcppkcs11.so", }) _, err := cli.Health(context.Background()) if err == nil { t.Fatal("ожидалась ошибка о ненайденном модуле") } if !strings.Contains(err.Error(), "не найден") { t.Errorf("неинформативная ошибка: %v", err) } } func TestEmptyModulePath(t *testing.T) { cli := cryptocli.New(cryptocli.Config{Provider: cryptocli.ProviderCryptoPro}) _, err := cli.Health(context.Background()) if err == nil { t.Fatal("ожидалась ошибка о пустом ModulePath") } } func TestDefaultModulePath(t *testing.T) { cases := []struct { p cryptocli.Provider want string }{ {cryptocli.ProviderCryptoPro, "/opt/cprocsp/lib/amd64/libcppkcs11.so"}, {cryptocli.ProviderRutoken, "/usr/lib64/librtpkcs11ecp.so"}, {cryptocli.ProviderStub, ""}, } for _, c := range cases { got := cryptocli.DefaultModulePath(c.p) if got != c.want { t.Errorf("DefaultModulePath(%s) = %q, ожидалось %q", c.p, got, c.want) } } }