-
Notifications
You must be signed in to change notification settings - Fork 0
/
requests_test.go
74 lines (57 loc) · 2.26 KB
/
requests_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main
import (
"github.com/stretchr/testify/assert"
"io/ioutil"
"net/http"
"testing"
)
func TestHtmlResponses(t *testing.T) {
var cases = map[string]string{
"http://127.0.0.1:8000/version": "<h1>Version 0.0.1</h1>",
"http://127.0.0.1:8000/zero/John%20Doe": "<h1>Zero, thats the number of fucks I give.</h1>",
"http://127.0.0.1:8000/pulp/Greek/John%20Doe": "<h1>Greek, motherfucker, do you speak it?</h1>",
}
for url, expectedString := range cases {
req, err := http.NewRequest("GET", url, nil)
assert.NoError(t, err)
statusCode, body := getResponseCodeAndBody(req)
assert.Equal(t, http.StatusOK, statusCode)
assert.Contains(t, body, expectedString)
}
}
func TestJsonResponses(t *testing.T) {
var cases = map[string]string{
"http://127.0.0.1:8000/version": "{\"message\":\"Version 0.0.1\",\"subtitle\":\"FOAAS\"}",
"http://127.0.0.1:8000/zero/John%20Doe": "{\"message\":\"Zero, thats the number of fucks I give.\",\"subtitle\":\"- John Doe\"}",
"http://127.0.0.1:8000/pulp/Greek/John%20Doe": "{\"message\":\"Greek, motherfucker, do you speak it?\",\"subtitle\":\"- John Doe\"}",
}
for url, expectedString := range cases {
req, err := http.NewRequest("GET", url, nil)
req.Header.Add("Content-Type", `application/json`)
assert.NoError(t, err)
statusCode, body := getResponseCodeAndBody(req)
assert.Equal(t, http.StatusOK, statusCode)
assert.Contains(t, body, expectedString)
}
}
func TestNonExistingResponse(t *testing.T) {
req, err := http.NewRequest("GET", "http://127.0.0.1:8000/nonexisting", nil)
assert.NoError(t, err)
statusCode, body := getResponseCodeAndBody(req)
assert.Equal(t, http.StatusOK, statusCode)
assert.Contains(t, body, "<h1>622 - All The Fucks</h1>")
}
func TestMethodNotAllowedResponse(t *testing.T) {
req, err := http.NewRequest("POST", "http://127.0.0.1:8000/version", nil)
assert.NoError(t, err)
statusCode, body := getResponseCodeAndBody(req)
assert.Equal(t, http.StatusOK, statusCode)
assert.Contains(t, body, "<h1>622 - All The Fucks</h1>")
}
func getResponseCodeAndBody(req *http.Request) (int, string) {
client := &http.Client{}
resp, _ := client.Do(req)
bodyBytes, _ := ioutil.ReadAll(resp.Body)
bodyString := string(bodyBytes)
return resp.StatusCode, bodyString
}