-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrequest_test.go
More file actions
163 lines (153 loc) · 34.9 KB
/
Copy pathrequest_test.go
File metadata and controls
163 lines (153 loc) · 34.9 KB
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
package swt_test
import (
"context"
"fmt"
"io"
"net/http"
"testing"
"github.com/SecureWebhookToken/swt"
"github.com/stretchr/testify/assert"
)
func TestBuildRequest(t *testing.T) {
const (
dataImgUrl = "data:image/jpeg;base64,/9j/4Q/+RXhpZgAATU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgEoAAMAAAABAAIAAAITAAMAAAABAAEAAIdpAAQAAAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAeQAAAHAAAABDAyMjGRAQAHAAAABAECAwCgAAAHAAAABDAxMDCgAQADAAAAAQABAACgAgAEAAAAAQAAAMigAwAEAAAAAQAAASykBgADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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"
url = "http://swt-test.com"
)
type wantArgs struct {
Method string
URL string
Body []byte
ContentType string
}
tests := []struct {
name string
url string
issuer string
event string
data []byte
key any
want wantArgs
wantErr error
}{
{
name: "Build valid webhook request",
url: url,
issuer: "me",
event: "user.create",
data: []byte(fmt.Sprintf(`{"username":"me","image":"%s"}`, dataImgUrl)),
key: secretKey,
want: wantArgs{
Method: http.MethodPost,
URL: url,
Body: []byte(fmt.Sprintf(`{"username":"me","image":"%s"}`, dataImgUrl)),
ContentType: "application/json",
},
},
{
name: "Build invalid webhook request, due to invalid json",
url: url,
issuer: "me",
event: "user.create",
data: []byte(`{"username:"test"}`),
key: secretKey,
want: wantArgs{
Method: http.MethodPost,
URL: url,
Body: []byte(`{"username:"test"}`),
ContentType: "text/plain",
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
req := swt.Request{
URL: tt.url,
Issuer: tt.issuer,
Event: tt.event,
Data: tt.data,
}
got, err := req.Build(tt.key)
if err != nil {
assert.ErrorIs(t, err, tt.wantErr)
return
}
assert.Equal(t, tt.want.Method, got.Method)
assert.Equal(t, tt.want.URL, got.URL.String())
body, err := io.ReadAll(got.Body)
assert.NoError(t, err)
assert.Equal(t, tt.want.Body, body)
assert.Contains(t, got.Header.Get("Content-Type"), tt.want.ContentType)
})
}
}
func TestBuildRequestWithContext(t *testing.T) {
tests := []struct {
name string
ctx func() context.Context
request swt.Request
wantErr bool
errType error
}{
{
name: "Valid request with active context",
ctx: func() context.Context { return context.Background() },
request: swt.Request{
URL: "https://example.com/webhook",
Issuer: issuer,
Event: "user.created",
Data: []byte("test"),
},
wantErr: false,
},
{
name: "Cancelled context",
ctx: func() context.Context {
ctx, cancel := context.WithCancel(context.Background())
cancel()
return ctx
},
request: swt.Request{
URL: "https://example.com/webhook",
Issuer: issuer,
Event: "user.created",
Data: []byte("test"),
},
wantErr: true,
errType: context.Canceled,
},
{
name: "Timeout context",
ctx: func() context.Context {
ctx, cancel := context.WithTimeout(context.Background(), 0)
defer cancel()
return ctx
},
request: swt.Request{
URL: "https://example.com/webhook",
Issuer: issuer,
Event: "user.created",
Data: []byte("test"),
},
wantErr: true,
errType: context.DeadlineExceeded,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := tt.request.BuildWithContext(tt.ctx(), secretKey)
if tt.wantErr {
assert.Error(t, err)
if tt.errType != nil {
assert.ErrorIs(t, err, tt.errType)
}
assert.Nil(t, got)
} else {
assert.NoError(t, err)
assert.NotNil(t, got)
assert.Equal(t, "POST", got.Method)
assert.Equal(t, tt.request.URL, got.URL.String())
assert.Contains(t, got.Header.Get("Authorization"), "Bearer ")
}
})
}
}