47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
package control
|
|
|
|
import (
|
|
"errors"
|
|
"net"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestRoundTrip(t *testing.T) {
|
|
server, client := net.Pipe()
|
|
go serveConn(server, func(cmd string) string {
|
|
if cmd != CmdUpdateNow {
|
|
return "ERR unknown command: " + cmd
|
|
}
|
|
return "OK v0.2.2 is up to date"
|
|
})
|
|
reply, err := readReply(client, CmdUpdateNow)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if reply != "OK v0.2.2 is up to date" {
|
|
t.Fatalf("reply = %q", reply)
|
|
}
|
|
|
|
server2, client2 := net.Pipe()
|
|
go serveConn(server2, func(cmd string) string { return "ERR unknown command: " + cmd })
|
|
reply, err = readReply(client2, "bogus")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !strings.HasPrefix(reply, "ERR ") {
|
|
t.Fatalf("reply = %q, want ERR prefix", reply)
|
|
}
|
|
}
|
|
|
|
func TestEmptyReplyIsUnavailable(t *testing.T) {
|
|
server, client := net.Pipe()
|
|
go serveConn(server, func(cmd string) string {
|
|
server.Close() // hang up without answering
|
|
return ""
|
|
})
|
|
if _, err := readReply(client, CmdUpdateNow); !errors.Is(err, ErrUnavailable) {
|
|
t.Fatalf("err = %v, want ErrUnavailable", err)
|
|
}
|
|
}
|