github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/middleware/common_test.go (about) 1 package middleware 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 "testing" 7 8 "github.com/cloudreve/Cloudreve/v3/pkg/cache" 9 "github.com/cloudreve/Cloudreve/v3/pkg/hashid" 10 "github.com/gin-gonic/gin" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestHashID(t *testing.T) { 15 asserts := assert.New(t) 16 rec := httptest.NewRecorder() 17 TestFunc := HashID(hashid.FolderID) 18 19 // 未给定ID对象,跳过 20 { 21 c, _ := gin.CreateTestContext(rec) 22 c.Params = []gin.Param{} 23 c.Request, _ = http.NewRequest("POST", "/api/v3/file/dellete/1", nil) 24 TestFunc(c) 25 asserts.NoError(mock.ExpectationsWereMet()) 26 asserts.False(c.IsAborted()) 27 } 28 29 // 给定ID,解析失败 30 { 31 c, _ := gin.CreateTestContext(rec) 32 c.Params = []gin.Param{ 33 {"id", "2333"}, 34 } 35 c.Request, _ = http.NewRequest("POST", "/api/v3/file/dellete/1", nil) 36 TestFunc(c) 37 asserts.NoError(mock.ExpectationsWereMet()) 38 asserts.True(c.IsAborted()) 39 } 40 41 // 给定ID,解析成功 42 { 43 c, _ := gin.CreateTestContext(rec) 44 c.Params = []gin.Param{ 45 {"id", hashid.HashID(1, hashid.FolderID)}, 46 } 47 c.Request, _ = http.NewRequest("POST", "/api/v3/file/dellete/1", nil) 48 TestFunc(c) 49 asserts.NoError(mock.ExpectationsWereMet()) 50 asserts.False(c.IsAborted()) 51 } 52 } 53 54 func TestIsFunctionEnabled(t *testing.T) { 55 asserts := assert.New(t) 56 rec := httptest.NewRecorder() 57 TestFunc := IsFunctionEnabled("TestIsFunctionEnabled") 58 59 // 未开启 60 { 61 cache.Set("setting_TestIsFunctionEnabled", "0", 0) 62 c, _ := gin.CreateTestContext(rec) 63 c.Params = []gin.Param{} 64 c.Request, _ = http.NewRequest("POST", "/api/v3/file/dellete/1", nil) 65 TestFunc(c) 66 asserts.True(c.IsAborted()) 67 } 68 // 开启 69 { 70 cache.Set("setting_TestIsFunctionEnabled", "1", 0) 71 c, _ := gin.CreateTestContext(rec) 72 c.Params = []gin.Param{} 73 c.Request, _ = http.NewRequest("POST", "/api/v3/file/dellete/1", nil) 74 TestFunc(c) 75 asserts.False(c.IsAborted()) 76 } 77 78 } 79 80 func TestCacheControl(t *testing.T) { 81 a := assert.New(t) 82 TestFunc := CacheControl() 83 rec := httptest.NewRecorder() 84 c, _ := gin.CreateTestContext(rec) 85 TestFunc(c) 86 a.Contains(c.Writer.Header().Get("Cache-Control"), "no-cache") 87 } 88 89 func TestSandbox(t *testing.T) { 90 a := assert.New(t) 91 TestFunc := Sandbox() 92 rec := httptest.NewRecorder() 93 c, _ := gin.CreateTestContext(rec) 94 TestFunc(c) 95 a.Contains(c.Writer.Header().Get("Content-Security-Policy"), "sandbox") 96 } 97 98 func TestStaticResourceCache(t *testing.T) { 99 a := assert.New(t) 100 TestFunc := StaticResourceCache() 101 rec := httptest.NewRecorder() 102 c, _ := gin.CreateTestContext(rec) 103 TestFunc(c) 104 a.Contains(c.Writer.Header().Get("Cache-Control"), "public, max-age") 105 }