Indicate duplicate upload slots to the client

This commit is contained in:
simon987 2019-03-10 10:48:46 -04:00
parent b611c4d1cf
commit b05c9f2b1a
3 changed files with 34 additions and 6 deletions

View File

@ -53,11 +53,18 @@ func (api *WebApi) AllocateUploadSlot(ctx *fasthttp.RequestCtx) {
return return
} }
api.allocateUploadSlot(req) err = api.allocateUploadSlot(req)
Json(GenericResponse{ if err == nil {
Ok: true, Json(GenericResponse{
}, ctx) Ok: true,
}, ctx)
} else {
Json(GenericResponse{
Ok: false,
Message: err.Error(),
}, ctx)
}
} }
func (api *WebApi) Upload(ctx *fasthttp.RequestCtx) { func (api *WebApi) Upload(ctx *fasthttp.RequestCtx) {
@ -178,7 +185,7 @@ func (api *WebApi) ReadUploadSlot(ctx *fasthttp.RequestCtx) {
mu.(*sync.RWMutex).RUnlock() mu.(*sync.RWMutex).RUnlock()
} }
func (api *WebApi) allocateUploadSlot(req *AllocateUploadSlotRequest) { func (api *WebApi) allocateUploadSlot(req *AllocateUploadSlotRequest) error {
slot := &UploadSlot{ slot := &UploadSlot{
MaxSize: req.MaxSize, MaxSize: req.MaxSize,
@ -190,5 +197,5 @@ func (api *WebApi) allocateUploadSlot(req *AllocateUploadSlotRequest) {
"slot": slot, "slot": slot,
}).Info("Allocated new upload slot") }).Info("Allocated new upload slot")
api.db.Create(slot) return api.db.Create(slot).Error
} }

View File

@ -4,6 +4,7 @@ import (
"github.com/jinzhu/gorm" "github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/sqlite" _ "github.com/jinzhu/gorm/dialects/sqlite"
"github.com/simon987/ws_bucket/api" "github.com/simon987/ws_bucket/api"
"os"
"testing" "testing"
"time" "time"
) )
@ -22,4 +23,5 @@ func TestMain(m *testing.M) {
time.Sleep(time.Millisecond * 100) time.Sleep(time.Millisecond * 100)
m.Run() m.Run()
_ = os.Remove("test.db")
} }

View File

@ -46,6 +46,25 @@ func TestAllocateUploadSlotUnsafePath(t *testing.T) {
} }
} }
func TestDuplicateUploadSlot(t *testing.T) {
if allocateUploadSlot(api.AllocateUploadSlotRequest{
FileName: "test.png",
Token: "testdupe",
MaxSize: 100,
}).Ok != true {
t.Error()
}
if allocateUploadSlot(api.AllocateUploadSlotRequest{
FileName: "test.png",
Token: "testdupe",
MaxSize: 100,
}).Ok != false {
t.Error()
}
}
func allocateUploadSlot(request api.AllocateUploadSlotRequest) (ar *api.GenericResponse) { func allocateUploadSlot(request api.AllocateUploadSlotRequest) (ar *api.GenericResponse) {
resp := Post("/slot", request) resp := Post("/slot", request)
UnmarshalResponse(resp, &ar) UnmarshalResponse(resp, &ar)