87 lines
2.0 KiB
Go
87 lines
2.0 KiB
Go
package services
|
|
|
|
import (
|
|
"database/sql"
|
|
"errors"
|
|
"testing"
|
|
|
|
"quyun/v2/app/commands/testx"
|
|
"quyun/v2/app/errorx"
|
|
common_dto "quyun/v2/app/http/v1/dto"
|
|
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
"github.com/stretchr/testify/suite"
|
|
"go.ipao.vip/atom/contracts"
|
|
"go.uber.org/dig"
|
|
)
|
|
|
|
type CommonTestSuiteInjectParams struct {
|
|
dig.In
|
|
|
|
DB *sql.DB
|
|
Initials []contracts.Initial `group:"initials"`
|
|
}
|
|
|
|
type CommonTestSuite struct {
|
|
suite.Suite
|
|
CommonTestSuiteInjectParams
|
|
}
|
|
|
|
func Test_Common(t *testing.T) {
|
|
providers := testx.Default().With(Provide)
|
|
|
|
testx.Serve(providers, t, func(p CommonTestSuiteInjectParams) {
|
|
suite.Run(t, &CommonTestSuite{CommonTestSuiteInjectParams: p})
|
|
})
|
|
}
|
|
|
|
func (s *CommonTestSuite) Test_AbortUpload() {
|
|
Convey("AbortUpload", s.T(), func() {
|
|
ctx := s.T().Context()
|
|
tenantID := int64(1)
|
|
ownerID := int64(1001)
|
|
|
|
newUpload := func() string {
|
|
form := &common_dto.UploadInitForm{
|
|
Filename: "sample.mp4",
|
|
Type: "video",
|
|
MimeType: "video/mp4",
|
|
}
|
|
resp, err := Common.InitUpload(ctx, tenantID, ownerID, form)
|
|
So(err, ShouldBeNil)
|
|
So(resp.UploadID, ShouldNotBeBlank)
|
|
return resp.UploadID
|
|
}
|
|
|
|
Convey("should allow owner to abort", func() {
|
|
uploadID := newUpload()
|
|
|
|
err := Common.AbortUpload(ctx, tenantID, ownerID, uploadID)
|
|
So(err, ShouldBeNil)
|
|
})
|
|
|
|
Convey("should reject abort by other user", func() {
|
|
uploadID := newUpload()
|
|
otherID := int64(2002)
|
|
|
|
err := Common.AbortUpload(ctx, tenantID, otherID, uploadID)
|
|
So(err, ShouldNotBeNil)
|
|
|
|
var appErr *errorx.AppError
|
|
So(errors.As(err, &appErr), ShouldBeTrue)
|
|
So(appErr.Code, ShouldEqual, errorx.ErrForbidden.Code)
|
|
|
|
So(Common.AbortUpload(ctx, tenantID, ownerID, uploadID), ShouldBeNil)
|
|
})
|
|
|
|
Convey("should return not found for missing upload", func() {
|
|
err := Common.AbortUpload(ctx, tenantID, ownerID, "missing-upload")
|
|
So(err, ShouldNotBeNil)
|
|
|
|
var appErr *errorx.AppError
|
|
So(errors.As(err, &appErr), ShouldBeTrue)
|
|
So(appErr.Code, ShouldEqual, errorx.ErrRecordNotFound.Code)
|
|
})
|
|
})
|
|
}
|