forked from nicklaw5/helix
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstream_markers_test.go
122 lines (107 loc) · 3.51 KB
/
stream_markers_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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package helix
import (
"net/http"
"testing"
)
func TestGetStreamMarkers(t *testing.T) {
t.Parallel()
testCases := []struct {
statusCode int
options *Options
userID string
markerCount int
first int
respBody string
}{
{
http.StatusOK,
&Options{ClientID: "my-client-id"},
"123",
1,
5,
`{"data":[{"user_id":"123","user_name":"DisplayName","videos":[{"video_id":"456","markers":[{"id":"106b8d6243a4f883d25ad75e6cdffdc4","created_at":"2018-08-20T20:10:03Z","description":"hello,thisisamarker!","position_seconds":244,"URL":"https://twitch.tv/videos/456?t=0h4m06s"}]}]}],"pagination":{"cursor":"eyJiIjpudWxsLCJhIjoiMjk1MjA0Mzk3OjI1Mzpib29rbWFyazoxMDZiOGQ1Y"}}`},
{
http.StatusBadRequest,
&Options{ClientID: "my-client-id"},
"0",
0,
101,
`{"error":"Bad Request","status":400,"message":"The parameter \"first\" was malformed: the value must be less than or equal to 100"}`,
},
}
for _, testCase := range testCases {
c := newMockClient(testCase.options, newMockHandler(testCase.statusCode, testCase.respBody, nil))
resp, err := c.GetStreamMarkers(&StreamMarkersParams{
UserID: testCase.userID,
First: testCase.first,
})
if err != nil {
t.Error(err)
}
// Test Bad Request Responses
if resp.StatusCode == http.StatusBadRequest {
firstErrStr := "The parameter \"first\" was malformed: the value must be less than or equal to 100"
if resp.ErrorMessage != firstErrStr {
t.Errorf("expected error message to be \"%s\", got \"%s\"", firstErrStr, resp.ErrorMessage)
}
continue
}
if resp.StatusCode != testCase.statusCode {
t.Errorf("expected status code to be \"%d\", got \"%d\"", testCase.statusCode, resp.StatusCode)
}
if len(resp.Data.StreamMarkers[0].Videos[0].Markers) != testCase.markerCount {
t.Errorf("expected \"%d\" stream markers, got \"%d\"", testCase.markerCount, len(resp.Data.StreamMarkers))
}
}
}
func TestCreateStreamMarker(t *testing.T) {
t.Parallel()
testCases := []struct {
statusCode int
options *Options
userID string
description string
markerCount int
respBody string
}{
{
http.StatusOK,
&Options{ClientID: "my-client-id"},
"123",
"a notable moment",
1,
`{"data":[{"id":"123","created_at":"2018-08-20T20:10:03Z","description":"hello, this is a marker!","position_seconds":244}]}`},
{
http.StatusForbidden,
&Options{ClientID: "my-client-id"},
"124",
"another notable moment",
0,
`{"error":"Forbidden","status":403,"message":"Not authorized to create a stream marker for channel test."}`,
},
}
for _, testCase := range testCases {
c := newMockClient(testCase.options, newMockHandler(testCase.statusCode, testCase.respBody, nil))
resp, err := c.CreateStreamMarker(&CreateStreamMarkerParams{
UserID: testCase.userID,
Description: testCase.description,
})
if err != nil {
t.Error(err)
}
// Test Forbidden Request Responses
if resp.StatusCode == http.StatusForbidden {
firstErrStr := "Not authorized to create a stream marker for channel test."
if resp.ErrorMessage != firstErrStr {
t.Errorf("expected error message to be \"%s\", got \"%s\"", firstErrStr, resp.ErrorMessage)
}
continue
}
if resp.StatusCode != testCase.statusCode {
t.Errorf("expected status code to be \"%d\", got \"%d\"", testCase.statusCode, resp.StatusCode)
}
if len(resp.Data.CreateStreamMarkers) != testCase.markerCount {
t.Errorf("expected \"%d\" stream markers, got \"%d\"", testCase.markerCount, len(resp.Data.CreateStreamMarkers))
}
}
}