MCPcopy Create free account
hub / github.com/gogs/gogs / TestBasicHandler_serveUpload

Function TestBasicHandler_serveUpload

internal/route/lfs/basic_test.go:137–197  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

135}
136
137func TestBasicHandler_serveUpload(t *testing.T) {
138 s := &mockStorage{buf: &bytes.Buffer{}}
139 basic := &basicHandler{
140 defaultStorage: s.Storage(),
141 storagers: map[lfsutil.Storage]lfsutil.Storager{
142 s.Storage(): s,
143 },
144 }
145
146 m := macaron.New()
147 m.Use(macaron.Renderer())
148 m.Use(func(c *macaron.Context) {
149 c.Map(&database.Repository{Name: "repo"})
150 c.Map(lfsutil.OID("ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f"))
151 })
152 m.Put("/", basic.serveUpload)
153
154 tests := []struct {
155 name string
156 mockStore func() *MockStore
157 expStatusCode int
158 expBody string
159 }{
160 {
161 name: "object already exists",
162 mockStore: func() *MockStore {
163 mockStore := NewMockStore()
164 mockStore.GetLFSObjectByOIDFunc.SetDefaultReturn(&database.LFSObject{}, nil)
165 return mockStore
166 },
167 expStatusCode: http.StatusOK,
168 },
169 {
170 name: "new object",
171 mockStore: func() *MockStore {
172 mockStore := NewMockStore()
173 mockStore.GetLFSObjectByOIDFunc.SetDefaultReturn(nil, database.ErrLFSObjectNotExist{})
174 return mockStore
175 },
176 expStatusCode: http.StatusOK,
177 },
178 }
179 for _, test := range tests {
180 t.Run(test.name, func(t *testing.T) {
181 basic.store = test.mockStore()
182
183 r, err := http.NewRequest("PUT", "/", strings.NewReader("Hello world!"))
184 require.NoError(t, err)
185
186 rr := httptest.NewRecorder()
187 m.ServeHTTP(rr, r)
188
189 resp := rr.Result()
190 assert.Equal(t, test.expStatusCode, resp.StatusCode)
191
192 body, err := io.ReadAll(resp.Body)
193 require.NoError(t, err)
194 assert.Equal(t, test.expBody, string(body))

Callers

nothing calls this directly

Calls 5

StorageMethod · 0.95
OIDTypeAlias · 0.92
NewMockStoreFunction · 0.85
stringFunction · 0.85
SetDefaultReturnMethod · 0.45

Tested by

no test coverage detected