package cryptocli_test import ( "context" "errors" "net" "os" "path/filepath" "testing" "time" "git.zetit.ru/zuevav/Bridge-and-Join-s/internal/cryptocli" ) func TestClientReturnsErrNotImplementedWhenSocketReachable(t *testing.T) { dir := t.TempDir() socketPath := filepath.Join(dir, "crypto.sock") listener, err := net.Listen("unix", socketPath) if err != nil { t.Fatalf("listen unix: %v", err) } defer listener.Close() defer os.Remove(socketPath) go func() { for { conn, err := listener.Accept() if err != nil { return } _ = conn.Close() } }() cli := cryptocli.NewClient(socketPath, cryptocli.WithTimeout(time.Second)) _, err = cli.VerifyXMLDSig(context.Background(), []byte("")) if !errors.Is(err, cryptocli.ErrNotImplemented) { t.Errorf("ожидалась ErrNotImplemented, получено %v", err) } } func TestClientReturnsDialErrorWhenSocketMissing(t *testing.T) { cli := cryptocli.NewClient("/nonexistent/crypto.sock", cryptocli.WithTimeout(200*time.Millisecond)) _, err := cli.VerifyXMLDSig(context.Background(), []byte("x")) if err == nil { t.Fatal("ожидалась ошибка диалинга на несуществующий сокет") } if errors.Is(err, cryptocli.ErrNotImplemented) { t.Errorf("при отсутствующем сокете не должно быть ErrNotImplemented") } }