Skip to content

Commit ca1fdb4

Browse files
committed
Add test for handler package
1 parent 86d56f7 commit ca1fdb4

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

pkg/handler/terminate_test.go

+68
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,14 @@ func TestTerminate(t *testing.T) {
5454
composer.UseTerminater(store)
5555
composer.UseLocker(locker)
5656

57+
preTerminateCalled := false
5758
handler, _ := NewHandler(Config{
5859
StoreComposer: composer,
5960
NotifyTerminatedUploads: true,
61+
PreUploadTerminateCallback: func(hook HookEvent) (HTTPResponse, error) {
62+
preTerminateCalled = true
63+
return HTTPResponse{}, nil
64+
},
6065
})
6166

6267
c := make(chan HookEvent, 1)
@@ -81,6 +86,69 @@ func TestTerminate(t *testing.T) {
8186
req := event.HTTPRequest
8287
a.Equal("DELETE", req.Method)
8388
a.Equal("foo", req.URI)
89+
90+
a.True(preTerminateCalled)
91+
})
92+
93+
SubTest(t, "RejectTermination", func(t *testing.T, store *MockFullDataStore, _ *StoreComposer) {
94+
ctrl := gomock.NewController(t)
95+
defer ctrl.Finish()
96+
locker := NewMockFullLocker(ctrl)
97+
lock := NewMockFullLock(ctrl)
98+
upload := NewMockFullUpload(ctrl)
99+
100+
gomock.InOrder(
101+
locker.EXPECT().NewLock("foo").Return(lock, nil),
102+
lock.EXPECT().Lock(gomock.Any(), gomock.Any()).Return(nil),
103+
store.EXPECT().GetUpload(gomock.Any(), "foo").Return(upload, nil),
104+
upload.EXPECT().GetInfo(gomock.Any()).Return(FileInfo{
105+
ID: "foo",
106+
Size: 10,
107+
}, nil),
108+
lock.EXPECT().Unlock().Return(nil),
109+
)
110+
111+
composer := NewStoreComposer()
112+
composer.UseCore(store)
113+
composer.UseTerminater(store)
114+
composer.UseLocker(locker)
115+
116+
a := assert.New(t)
117+
118+
handler, _ := NewHandler(Config{
119+
StoreComposer: composer,
120+
NotifyTerminatedUploads: true,
121+
PreUploadTerminateCallback: func(hook HookEvent) (HTTPResponse, error) {
122+
a.Equal("foo", hook.Upload.ID)
123+
a.Equal(int64(10), hook.Upload.Size)
124+
125+
req := hook.HTTPRequest
126+
a.Equal("DELETE", req.Method)
127+
a.Equal("foo", req.URI)
128+
129+
return HTTPResponse{}, ErrUploadTerminationRejected
130+
},
131+
})
132+
133+
c := make(chan HookEvent, 1)
134+
handler.TerminatedUploads = c
135+
136+
(&httpTest{
137+
Method: "DELETE",
138+
URL: "foo",
139+
ReqHeader: map[string]string{
140+
"Tus-Resumable": "1.0.0",
141+
},
142+
Code: http.StatusBadRequest,
143+
ResBody: "ERR_UPLOAD_TERMINATION_REJECTED: upload termination has been rejected by server\n",
144+
}).Run(handler, t)
145+
146+
select {
147+
case <-c:
148+
a.Fail("Expected termination to be rejected")
149+
default:
150+
// Expected no event
151+
}
84152
})
85153

86154
SubTest(t, "NotProvided", func(t *testing.T, store *MockFullDataStore, _ *StoreComposer) {

0 commit comments

Comments
 (0)