response_test.go 1.12 KB
Newer Older
1
package cmds
2

3
import (
Jan Winkelmann's avatar
Jan Winkelmann committed
4
	"bytes"
5
	"context"
Matt Bell's avatar
Matt Bell committed
6
	"strings"
Jan Winkelmann's avatar
Jan Winkelmann committed
7
	"testing"
8
)
9 10

type TestOutput struct {
Matt Bell's avatar
Matt Bell committed
11 12
	Foo, Bar string
	Baz      int
13
}
14

15
func TestMarshalling(t *testing.T) {
16 17
	cmd := &Command{}

18
	req, err := NewRequest(context.Background(), nil, map[string]interface{}{
19 20 21 22 23
		EncLong: JSON,
	}, nil, nil, cmd)
	if err != nil {
		t.Error(err, "Should have passed")
	}
24

Jan Winkelmann's avatar
Jan Winkelmann committed
25 26
	buf := bytes.NewBuffer(nil)
	wc := writecloser{Writer: buf, Closer: nopCloser{}}
27 28 29 30
	re, err := NewWriterResponseEmitter(wc, req)
	if err != nil {
		t.Fatal(err)
	}
31

32
	err = re.Emit(TestOutput{"beep", "boop", 1337})
Matt Bell's avatar
Matt Bell committed
33
	if err != nil {
Matt Bell's avatar
Matt Bell committed
34
		t.Error(err, "Should have passed")
Matt Bell's avatar
Matt Bell committed
35
	}
Jan Winkelmann's avatar
Jan Winkelmann committed
36

37
	output := buf.String()
Matt Bell's avatar
Matt Bell committed
38
	if removeWhitespace(output) != "{\"Foo\":\"beep\",\"Bar\":\"boop\",\"Baz\":1337}" {
Jan Winkelmann's avatar
Jan Winkelmann committed
39 40
		t.Log("expected: {\"Foo\":\"beep\",\"Bar\":\"boop\",\"Baz\":1337}")
		t.Log("got:", removeWhitespace(buf.String()))
Matt Bell's avatar
Matt Bell committed
41 42
		t.Error("Incorrect JSON output")
	}
43

44
	buf.Reset()
Jan Winkelmann's avatar
Jan Winkelmann committed
45

keks's avatar
keks committed
46
	re.Close()
47 48
}

Matt Bell's avatar
Matt Bell committed
49 50 51 52 53 54
func removeWhitespace(input string) string {
	input = strings.Replace(input, " ", "", -1)
	input = strings.Replace(input, "\t", "", -1)
	input = strings.Replace(input, "\n", "", -1)
	return strings.Replace(input, "\r", "", -1)
}