44 lines
967 B
Go
44 lines
967 B
Go
|
|
package proxy
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bufio"
|
||
|
|
"encoding/json"
|
||
|
|
"net"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestMiner_Success_WritesNullError_Good(t *testing.T) {
|
||
|
|
minerConn, clientConn := net.Pipe()
|
||
|
|
defer minerConn.Close()
|
||
|
|
defer clientConn.Close()
|
||
|
|
|
||
|
|
miner := NewMiner(minerConn, 3333, nil)
|
||
|
|
done := make(chan struct{})
|
||
|
|
go func() {
|
||
|
|
miner.Success(7, "OK")
|
||
|
|
close(done)
|
||
|
|
}()
|
||
|
|
|
||
|
|
line, err := bufio.NewReader(clientConn).ReadBytes('\n')
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("read success response: %v", err)
|
||
|
|
}
|
||
|
|
<-done
|
||
|
|
|
||
|
|
var payload struct {
|
||
|
|
Error json.RawMessage `json:"error"`
|
||
|
|
Result struct {
|
||
|
|
Status string `json:"status"`
|
||
|
|
} `json:"result"`
|
||
|
|
}
|
||
|
|
if err := json.Unmarshal(line, &payload); err != nil {
|
||
|
|
t.Fatalf("unmarshal success response: %v", err)
|
||
|
|
}
|
||
|
|
if string(payload.Error) != "null" {
|
||
|
|
t.Fatalf("expected success response error to be null, got %s", string(payload.Error))
|
||
|
|
}
|
||
|
|
if payload.Result.Status != "OK" {
|
||
|
|
t.Fatalf("expected success status OK, got %q", payload.Result.Status)
|
||
|
|
}
|
||
|
|
}
|