mirror of
				https://github.com/cloudreve/cloudreve.git
				synced 2025-11-04 04:47:24 +08:00 
			
		
		
		
	Test: new changes in pkg request, serializer, task, xml, router
This commit is contained in:
		@ -82,6 +82,8 @@ func TestHTTPClient_Request(t *testing.T) {
 | 
				
			|||||||
			WithTimeout(time.Duration(1)*time.Microsecond),
 | 
								WithTimeout(time.Duration(1)*time.Microsecond),
 | 
				
			||||||
			WithCredential(auth.HMACAuth{SecretKey: []byte("123")}, 10),
 | 
								WithCredential(auth.HMACAuth{SecretKey: []byte("123")}, 10),
 | 
				
			||||||
			WithContext(context.Background()),
 | 
								WithContext(context.Background()),
 | 
				
			||||||
 | 
								WithoutHeader([]string{"s s", "s s"}),
 | 
				
			||||||
 | 
								WithMasterMeta(),
 | 
				
			||||||
		)
 | 
							)
 | 
				
			||||||
		asserts.Error(resp.Err)
 | 
							asserts.Error(resp.Err)
 | 
				
			||||||
		asserts.Nil(resp.Response)
 | 
							asserts.Nil(resp.Response)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										15
									
								
								pkg/serializer/explorer_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								pkg/serializer/explorer_test.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					package serializer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						model "github.com/cloudreve/Cloudreve/v3/models"
 | 
				
			||||||
 | 
						"github.com/stretchr/testify/assert"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestBuildObjectList(t *testing.T) {
 | 
				
			||||||
 | 
						a := assert.New(t)
 | 
				
			||||||
 | 
						res := BuildObjectList(1, []Object{{}, {}}, &model.Policy{})
 | 
				
			||||||
 | 
						a.NotEmpty(res.Parent)
 | 
				
			||||||
 | 
						a.NotNil(res.Policy)
 | 
				
			||||||
 | 
						a.Len(res.Objects, 2)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,9 +1,7 @@
 | 
				
			|||||||
package serializer
 | 
					package serializer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/base64"
 | 
					 | 
				
			||||||
	"encoding/gob"
 | 
						"encoding/gob"
 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	model "github.com/cloudreve/Cloudreve/v3/models"
 | 
						model "github.com/cloudreve/Cloudreve/v3/models"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@ -64,32 +62,3 @@ type GeneralUploadCallbackFailed struct {
 | 
				
			|||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	gob.Register(UploadSession{})
 | 
						gob.Register(UploadSession{})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// DecodeUploadPolicy 反序列化Header中携带的上传策略
 | 
					 | 
				
			||||||
func DecodeUploadPolicy(raw string) (*UploadPolicy, error) {
 | 
					 | 
				
			||||||
	var res UploadPolicy
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	rawJSON, err := base64.StdEncoding.DecodeString(raw)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	err = json.Unmarshal(rawJSON, &res)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return &res, err
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// EncodeUploadPolicy 序列化Header中携带的上传策略
 | 
					 | 
				
			||||||
func (policy *UploadPolicy) EncodeUploadPolicy() (string, error) {
 | 
					 | 
				
			||||||
	jsonRes, err := json.Marshal(policy)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return "", err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	res := base64.StdEncoding.EncodeToString(jsonRes)
 | 
					 | 
				
			||||||
	return res, nil
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -1,63 +0,0 @@
 | 
				
			|||||||
package serializer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"github.com/stretchr/testify/assert"
 | 
					 | 
				
			||||||
	"testing"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestDecodeUploadPolicy(t *testing.T) {
 | 
					 | 
				
			||||||
	asserts := assert.New(t)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	testCases := []struct {
 | 
					 | 
				
			||||||
		input       string
 | 
					 | 
				
			||||||
		expectError bool
 | 
					 | 
				
			||||||
		expectNil   bool
 | 
					 | 
				
			||||||
		expectRes   *UploadPolicy
 | 
					 | 
				
			||||||
	}{
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"错误的base64字符",
 | 
					 | 
				
			||||||
			true,
 | 
					 | 
				
			||||||
			true,
 | 
					 | 
				
			||||||
			&UploadPolicy{},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"6ZSZ6K+v55qESlNPTuWtl+espg==",
 | 
					 | 
				
			||||||
			true,
 | 
					 | 
				
			||||||
			true,
 | 
					 | 
				
			||||||
			&UploadPolicy{},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"e30=",
 | 
					 | 
				
			||||||
			false,
 | 
					 | 
				
			||||||
			false,
 | 
					 | 
				
			||||||
			&UploadPolicy{},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			"eyJjYWxsYmFja191cmwiOiJ0ZXN0In0=",
 | 
					 | 
				
			||||||
			false,
 | 
					 | 
				
			||||||
			false,
 | 
					 | 
				
			||||||
			&UploadPolicy{CallbackURL: "test"},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for _, testCase := range testCases {
 | 
					 | 
				
			||||||
		res, err := DecodeUploadPolicy(testCase.input)
 | 
					 | 
				
			||||||
		if testCase.expectError {
 | 
					 | 
				
			||||||
			asserts.Error(err)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if testCase.expectNil {
 | 
					 | 
				
			||||||
			asserts.Nil(res)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if !testCase.expectNil {
 | 
					 | 
				
			||||||
			asserts.Equal(testCase.expectRes, res)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestUploadPolicy_EncodeUploadPolicy(t *testing.T) {
 | 
					 | 
				
			||||||
	asserts := assert.New(t)
 | 
					 | 
				
			||||||
	testPolicy := UploadPolicy{}
 | 
					 | 
				
			||||||
	res, err := testPolicy.EncodeUploadPolicy()
 | 
					 | 
				
			||||||
	asserts.NoError(err)
 | 
					 | 
				
			||||||
	asserts.NotEmpty(res)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -29,23 +29,19 @@ func TestMain(m *testing.M) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestBuildUser(t *testing.T) {
 | 
					func TestBuildUser(t *testing.T) {
 | 
				
			||||||
	asserts := assert.New(t)
 | 
						asserts := assert.New(t)
 | 
				
			||||||
	user := model.User{
 | 
						user := model.User{}
 | 
				
			||||||
		Policy: model.Policy{MaxSize: 1024 * 1024},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"}))
 | 
						mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"}))
 | 
				
			||||||
	res := BuildUser(user)
 | 
						res := BuildUser(user)
 | 
				
			||||||
	asserts.NoError(mock.ExpectationsWereMet())
 | 
						asserts.NoError(mock.ExpectationsWereMet())
 | 
				
			||||||
	asserts.Equal("1.00mb", res.Policy.MaxSize)
 | 
						asserts.NotNil(res)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestBuildUserResponse(t *testing.T) {
 | 
					func TestBuildUserResponse(t *testing.T) {
 | 
				
			||||||
	asserts := assert.New(t)
 | 
						asserts := assert.New(t)
 | 
				
			||||||
	user := model.User{
 | 
						user := model.User{}
 | 
				
			||||||
		Policy: model.Policy{MaxSize: 1024 * 1024},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	res := BuildUserResponse(user)
 | 
						res := BuildUserResponse(user)
 | 
				
			||||||
	asserts.Equal("1.00mb", res.Data.(User).Policy.MaxSize)
 | 
						asserts.NotNil(res)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestBuildUserStorageResponse(t *testing.T) {
 | 
					func TestBuildUserStorageResponse(t *testing.T) {
 | 
				
			||||||
 | 
				
			|||||||
@ -182,6 +182,7 @@ func TestImportTask_Do(t *testing.T) {
 | 
				
			|||||||
		// 插入文件记录
 | 
							// 插入文件记录
 | 
				
			||||||
		mock.ExpectBegin()
 | 
							mock.ExpectBegin()
 | 
				
			||||||
		mock.ExpectExec("INSERT(.+)files(.+)").WillReturnResult(sqlmock.NewResult(2, 1))
 | 
							mock.ExpectExec("INSERT(.+)files(.+)").WillReturnResult(sqlmock.NewResult(2, 1))
 | 
				
			||||||
 | 
							mock.ExpectExec("UPDATE(.+)users(.+)storage(.+)").WillReturnResult(sqlmock.NewResult(2, 1))
 | 
				
			||||||
		mock.ExpectCommit()
 | 
							mock.ExpectCommit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		task.Do()
 | 
							task.Do()
 | 
				
			||||||
 | 
				
			|||||||
@ -1040,7 +1040,7 @@ Input:
 | 
				
			|||||||
					d.buf.WriteByte(';')
 | 
										d.buf.WriteByte(';')
 | 
				
			||||||
					n, err := strconv.ParseUint(s, base, 64)
 | 
										n, err := strconv.ParseUint(s, base, 64)
 | 
				
			||||||
					if err == nil && n <= unicode.MaxRune {
 | 
										if err == nil && n <= unicode.MaxRune {
 | 
				
			||||||
						text = string(n)
 | 
											text = string(rune(n))
 | 
				
			||||||
						haveText = true
 | 
											haveText = true
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
@ -1063,7 +1063,7 @@ Input:
 | 
				
			|||||||
					if isName(name) {
 | 
										if isName(name) {
 | 
				
			||||||
						s := string(name)
 | 
											s := string(name)
 | 
				
			||||||
						if r, ok := entity[s]; ok {
 | 
											if r, ok := entity[s]; ok {
 | 
				
			||||||
							text = string(r)
 | 
												text = string(rune(r))
 | 
				
			||||||
							haveText = true
 | 
												haveText = true
 | 
				
			||||||
						} else if d.Entity != nil {
 | 
											} else if d.Entity != nil {
 | 
				
			||||||
							text, haveText = d.Entity[s]
 | 
												text, haveText = d.Entity[s]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,180 +0,0 @@
 | 
				
			|||||||
package routers
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"bytes"
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"net/http"
 | 
					 | 
				
			||||||
	"net/http/httptest"
 | 
					 | 
				
			||||||
	"strings"
 | 
					 | 
				
			||||||
	"testing"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"github.com/cloudreve/Cloudreve/v3/middleware"
 | 
					 | 
				
			||||||
	model "github.com/cloudreve/Cloudreve/v3/models"
 | 
					 | 
				
			||||||
	"github.com/cloudreve/Cloudreve/v3/pkg/serializer"
 | 
					 | 
				
			||||||
	"github.com/cloudreve/Cloudreve/v3/service/explorer"
 | 
					 | 
				
			||||||
	"github.com/stretchr/testify/assert"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestListDirectoryRoute(t *testing.T) {
 | 
					 | 
				
			||||||
	switchToMemDB()
 | 
					 | 
				
			||||||
	asserts := assert.New(t)
 | 
					 | 
				
			||||||
	router := InitMasterRouter()
 | 
					 | 
				
			||||||
	w := httptest.NewRecorder()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// 成功
 | 
					 | 
				
			||||||
	req, _ := http.NewRequest(
 | 
					 | 
				
			||||||
		"GET",
 | 
					 | 
				
			||||||
		"/api/v3/directory/",
 | 
					 | 
				
			||||||
		nil,
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	middleware.SessionMock = map[string]interface{}{"user_id": 1}
 | 
					 | 
				
			||||||
	router.ServeHTTP(w, req)
 | 
					 | 
				
			||||||
	asserts.Equal(200, w.Code)
 | 
					 | 
				
			||||||
	resJSON := &serializer.Response{}
 | 
					 | 
				
			||||||
	err := json.Unmarshal(w.Body.Bytes(), resJSON)
 | 
					 | 
				
			||||||
	asserts.NoError(err)
 | 
					 | 
				
			||||||
	asserts.Equal(0, resJSON.Code)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	w.Body.Reset()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestLocalFileUpload(t *testing.T) {
 | 
					 | 
				
			||||||
	switchToMemDB()
 | 
					 | 
				
			||||||
	asserts := assert.New(t)
 | 
					 | 
				
			||||||
	router := InitMasterRouter()
 | 
					 | 
				
			||||||
	w := httptest.NewRecorder()
 | 
					 | 
				
			||||||
	middleware.SessionMock = map[string]interface{}{"user_id": 1}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	testCases := []struct {
 | 
					 | 
				
			||||||
		GetRequest func() *http.Request
 | 
					 | 
				
			||||||
		ExpectCode int
 | 
					 | 
				
			||||||
		RollBack   func()
 | 
					 | 
				
			||||||
	}{
 | 
					 | 
				
			||||||
		// 文件大小指定错误
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			GetRequest: func() *http.Request {
 | 
					 | 
				
			||||||
				req, _ := http.NewRequest(
 | 
					 | 
				
			||||||
					"POST",
 | 
					 | 
				
			||||||
					"/api/v3/file/upload",
 | 
					 | 
				
			||||||
					nil,
 | 
					 | 
				
			||||||
				)
 | 
					 | 
				
			||||||
				req.Header.Add("Content-Length", "ddf")
 | 
					 | 
				
			||||||
				return req
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			ExpectCode: 40001,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		// 返回错误
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			GetRequest: func() *http.Request {
 | 
					 | 
				
			||||||
				req, _ := http.NewRequest(
 | 
					 | 
				
			||||||
					"POST",
 | 
					 | 
				
			||||||
					"/api/v3/file/upload",
 | 
					 | 
				
			||||||
					strings.NewReader("2333"),
 | 
					 | 
				
			||||||
				)
 | 
					 | 
				
			||||||
				req.Header.Add("Content-Length", "4")
 | 
					 | 
				
			||||||
				req.Header.Add("X-Cr-FileName", "大地的%sfsf")
 | 
					 | 
				
			||||||
				return req
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			ExpectCode: 40002,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		// 成功
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			GetRequest: func() *http.Request {
 | 
					 | 
				
			||||||
				req, _ := http.NewRequest(
 | 
					 | 
				
			||||||
					"POST",
 | 
					 | 
				
			||||||
					"/api/v3/file/upload",
 | 
					 | 
				
			||||||
					strings.NewReader("2333"),
 | 
					 | 
				
			||||||
				)
 | 
					 | 
				
			||||||
				req.Header.Add("Content-Length", "4")
 | 
					 | 
				
			||||||
				req.Header.Add("X-Cr-FileName", "TestFileUploadRoute.txt")
 | 
					 | 
				
			||||||
				req.Header.Add("X-Cr-Path", "/")
 | 
					 | 
				
			||||||
				return req
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			ExpectCode: 0,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for key, testCase := range testCases {
 | 
					 | 
				
			||||||
		req := testCase.GetRequest()
 | 
					 | 
				
			||||||
		router.ServeHTTP(w, req)
 | 
					 | 
				
			||||||
		asserts.Equal(200, w.Code)
 | 
					 | 
				
			||||||
		resJSON := &serializer.Response{}
 | 
					 | 
				
			||||||
		err := json.Unmarshal(w.Body.Bytes(), resJSON)
 | 
					 | 
				
			||||||
		asserts.NoError(err, "测试用例%d", key)
 | 
					 | 
				
			||||||
		asserts.Equal(testCase.ExpectCode, resJSON.Code, "测试用例%d", key)
 | 
					 | 
				
			||||||
		if testCase.RollBack != nil {
 | 
					 | 
				
			||||||
			testCase.RollBack()
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		w.Body.Reset()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestObjectDelete(t *testing.T) {
 | 
					 | 
				
			||||||
	asserts := assert.New(t)
 | 
					 | 
				
			||||||
	router := InitMasterRouter()
 | 
					 | 
				
			||||||
	w := httptest.NewRecorder()
 | 
					 | 
				
			||||||
	middleware.SessionMock = map[string]interface{}{"user_id": 1}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	testCases := []struct {
 | 
					 | 
				
			||||||
		Mock       []string
 | 
					 | 
				
			||||||
		GetRequest func() *http.Request
 | 
					 | 
				
			||||||
		ExpectCode int
 | 
					 | 
				
			||||||
		RollBack   []string
 | 
					 | 
				
			||||||
	}{
 | 
					 | 
				
			||||||
		// 路径不存在,返回无错误
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			GetRequest: func() *http.Request {
 | 
					 | 
				
			||||||
				body := explorer.ItemService{
 | 
					 | 
				
			||||||
					Items: []uint{1},
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				bodyStr, _ := json.Marshal(body)
 | 
					 | 
				
			||||||
				req, _ := http.NewRequest(
 | 
					 | 
				
			||||||
					"DELETE",
 | 
					 | 
				
			||||||
					"/api/v3/object",
 | 
					 | 
				
			||||||
					bytes.NewReader(bodyStr),
 | 
					 | 
				
			||||||
				)
 | 
					 | 
				
			||||||
				return req
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			ExpectCode: 0,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		// 文件删除失败,返回203
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			Mock: []string{"INSERT INTO `files` (`id`, `created_at`, `updated_at`, `deleted_at`, `name`, `source_name`, `user_id`, `size`, `pic_info`, `folder_id`, `policy_id`) VALUES(5, '2019-11-30 07:08:33', '2019-11-30 07:08:33', NULL, 'pigeon.zip', '65azil3B_pigeon.zip', 1, 1667217, '', 1, 1);"},
 | 
					 | 
				
			||||||
			GetRequest: func() *http.Request {
 | 
					 | 
				
			||||||
				body := explorer.ItemService{
 | 
					 | 
				
			||||||
					Items: []uint{5},
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				bodyStr, _ := json.Marshal(body)
 | 
					 | 
				
			||||||
				req, _ := http.NewRequest(
 | 
					 | 
				
			||||||
					"DELETE",
 | 
					 | 
				
			||||||
					"/api/v3/object",
 | 
					 | 
				
			||||||
					bytes.NewReader(bodyStr),
 | 
					 | 
				
			||||||
				)
 | 
					 | 
				
			||||||
				return req
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			RollBack:   []string{"DELETE FROM `v3_files` WHERE `id`=5"},
 | 
					 | 
				
			||||||
			ExpectCode: 203,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for key, testCase := range testCases {
 | 
					 | 
				
			||||||
		for _, value := range testCase.Mock {
 | 
					 | 
				
			||||||
			model.DB.Exec(value)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		req := testCase.GetRequest()
 | 
					 | 
				
			||||||
		router.ServeHTTP(w, req)
 | 
					 | 
				
			||||||
		asserts.Equal(200, w.Code)
 | 
					 | 
				
			||||||
		resJSON := &serializer.Response{}
 | 
					 | 
				
			||||||
		err := json.Unmarshal(w.Body.Bytes(), resJSON)
 | 
					 | 
				
			||||||
		asserts.NoError(err, "测试用例%d", key)
 | 
					 | 
				
			||||||
		asserts.Equal(testCase.ExpectCode, resJSON.Code, "测试用例%d", key)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		for _, value := range testCase.RollBack {
 | 
					 | 
				
			||||||
			model.DB.Exec(value)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		w.Body.Reset()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
package routers
 | 
					package routers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/cloudreve/Cloudreve/v3/pkg/conf"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"net/http/httptest"
 | 
						"net/http/httptest"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
@ -19,7 +20,7 @@ func TestPing(t *testing.T) {
 | 
				
			|||||||
	router.ServeHTTP(w, req)
 | 
						router.ServeHTTP(w, req)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	assert.Equal(t, 200, w.Code)
 | 
						assert.Equal(t, 200, w.Code)
 | 
				
			||||||
	asserts.Contains(w.Body.String(), "Pong")
 | 
						asserts.Contains(w.Body.String(), conf.BackendVersion)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestCaptcha(t *testing.T) {
 | 
					func TestCaptcha(t *testing.T) {
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user