code.gitea.io/gitea@v1.22.3/modules/setting/packages_test.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package setting 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestMustBytes(t *testing.T) { 13 test := func(value string) int64 { 14 cfg, err := NewConfigProviderFromData("[test]") 15 assert.NoError(t, err) 16 sec := cfg.Section("test") 17 sec.NewKey("VALUE", value) 18 19 return mustBytes(sec, "VALUE") 20 } 21 22 assert.EqualValues(t, -1, test("")) 23 assert.EqualValues(t, -1, test("-1")) 24 assert.EqualValues(t, 0, test("0")) 25 assert.EqualValues(t, 1, test("1")) 26 assert.EqualValues(t, 10000, test("10000")) 27 assert.EqualValues(t, 1000000, test("1 mb")) 28 assert.EqualValues(t, 1048576, test("1mib")) 29 assert.EqualValues(t, 1782579, test("1.7mib")) 30 assert.EqualValues(t, -1, test("1 yib")) // too large 31 } 32 33 func Test_getStorageInheritNameSectionTypeForPackages(t *testing.T) { 34 // packages storage inherits from storage if nothing configured 35 iniStr := ` 36 [storage] 37 STORAGE_TYPE = minio 38 ` 39 cfg, err := NewConfigProviderFromData(iniStr) 40 assert.NoError(t, err) 41 assert.NoError(t, loadPackagesFrom(cfg)) 42 43 assert.EqualValues(t, "minio", Packages.Storage.Type) 44 assert.EqualValues(t, "packages/", Packages.Storage.MinioConfig.BasePath) 45 46 // we can also configure packages storage directly 47 iniStr = ` 48 [storage.packages] 49 STORAGE_TYPE = minio 50 ` 51 cfg, err = NewConfigProviderFromData(iniStr) 52 assert.NoError(t, err) 53 assert.NoError(t, loadPackagesFrom(cfg)) 54 55 assert.EqualValues(t, "minio", Packages.Storage.Type) 56 assert.EqualValues(t, "packages/", Packages.Storage.MinioConfig.BasePath) 57 58 // or we can indicate the storage type in the packages section 59 iniStr = ` 60 [packages] 61 STORAGE_TYPE = my_minio 62 63 [storage.my_minio] 64 STORAGE_TYPE = minio 65 ` 66 cfg, err = NewConfigProviderFromData(iniStr) 67 assert.NoError(t, err) 68 assert.NoError(t, loadPackagesFrom(cfg)) 69 70 assert.EqualValues(t, "minio", Packages.Storage.Type) 71 assert.EqualValues(t, "packages/", Packages.Storage.MinioConfig.BasePath) 72 73 // or we can indicate the storage type and minio base path in the packages section 74 iniStr = ` 75 [packages] 76 STORAGE_TYPE = my_minio 77 MINIO_BASE_PATH = my_packages/ 78 79 [storage.my_minio] 80 STORAGE_TYPE = minio 81 ` 82 cfg, err = NewConfigProviderFromData(iniStr) 83 assert.NoError(t, err) 84 assert.NoError(t, loadPackagesFrom(cfg)) 85 86 assert.EqualValues(t, "minio", Packages.Storage.Type) 87 assert.EqualValues(t, "my_packages/", Packages.Storage.MinioConfig.BasePath) 88 } 89 90 func Test_PackageStorage1(t *testing.T) { 91 iniStr := ` 92 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 93 [packages] 94 MINIO_BASE_PATH = packages/ 95 SERVE_DIRECT = true 96 [storage] 97 STORAGE_TYPE = minio 98 MINIO_ENDPOINT = s3.my-domain.net 99 MINIO_BUCKET = gitea 100 MINIO_LOCATION = homenet 101 MINIO_USE_SSL = true 102 MINIO_ACCESS_KEY_ID = correct_key 103 MINIO_SECRET_ACCESS_KEY = correct_key 104 ` 105 cfg, err := NewConfigProviderFromData(iniStr) 106 assert.NoError(t, err) 107 108 assert.NoError(t, loadPackagesFrom(cfg)) 109 storage := Packages.Storage 110 111 assert.EqualValues(t, "minio", storage.Type) 112 assert.EqualValues(t, "gitea", storage.MinioConfig.Bucket) 113 assert.EqualValues(t, "packages/", storage.MinioConfig.BasePath) 114 assert.True(t, storage.MinioConfig.ServeDirect) 115 } 116 117 func Test_PackageStorage2(t *testing.T) { 118 iniStr := ` 119 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 120 [storage.packages] 121 MINIO_BASE_PATH = packages/ 122 SERVE_DIRECT = true 123 [storage] 124 STORAGE_TYPE = minio 125 MINIO_ENDPOINT = s3.my-domain.net 126 MINIO_BUCKET = gitea 127 MINIO_LOCATION = homenet 128 MINIO_USE_SSL = true 129 MINIO_ACCESS_KEY_ID = correct_key 130 MINIO_SECRET_ACCESS_KEY = correct_key 131 ` 132 cfg, err := NewConfigProviderFromData(iniStr) 133 assert.NoError(t, err) 134 135 assert.NoError(t, loadPackagesFrom(cfg)) 136 storage := Packages.Storage 137 138 assert.EqualValues(t, "minio", storage.Type) 139 assert.EqualValues(t, "gitea", storage.MinioConfig.Bucket) 140 assert.EqualValues(t, "packages/", storage.MinioConfig.BasePath) 141 assert.True(t, storage.MinioConfig.ServeDirect) 142 } 143 144 func Test_PackageStorage3(t *testing.T) { 145 iniStr := ` 146 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 147 [packages] 148 STORAGE_TYPE = my_cfg 149 MINIO_BASE_PATH = my_packages/ 150 SERVE_DIRECT = true 151 [storage.my_cfg] 152 STORAGE_TYPE = minio 153 MINIO_ENDPOINT = s3.my-domain.net 154 MINIO_BUCKET = gitea 155 MINIO_LOCATION = homenet 156 MINIO_USE_SSL = true 157 MINIO_ACCESS_KEY_ID = correct_key 158 MINIO_SECRET_ACCESS_KEY = correct_key 159 ` 160 cfg, err := NewConfigProviderFromData(iniStr) 161 assert.NoError(t, err) 162 163 assert.NoError(t, loadPackagesFrom(cfg)) 164 storage := Packages.Storage 165 166 assert.EqualValues(t, "minio", storage.Type) 167 assert.EqualValues(t, "gitea", storage.MinioConfig.Bucket) 168 assert.EqualValues(t, "my_packages/", storage.MinioConfig.BasePath) 169 assert.True(t, storage.MinioConfig.ServeDirect) 170 } 171 172 func Test_PackageStorage4(t *testing.T) { 173 iniStr := ` 174 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 175 [storage.packages] 176 STORAGE_TYPE = my_cfg 177 MINIO_BASE_PATH = my_packages/ 178 SERVE_DIRECT = true 179 [storage.my_cfg] 180 STORAGE_TYPE = minio 181 MINIO_ENDPOINT = s3.my-domain.net 182 MINIO_BUCKET = gitea 183 MINIO_LOCATION = homenet 184 MINIO_USE_SSL = true 185 MINIO_ACCESS_KEY_ID = correct_key 186 MINIO_SECRET_ACCESS_KEY = correct_key 187 ` 188 cfg, err := NewConfigProviderFromData(iniStr) 189 assert.NoError(t, err) 190 191 assert.NoError(t, loadPackagesFrom(cfg)) 192 storage := Packages.Storage 193 194 assert.EqualValues(t, "minio", storage.Type) 195 assert.EqualValues(t, "gitea", storage.MinioConfig.Bucket) 196 assert.EqualValues(t, "my_packages/", storage.MinioConfig.BasePath) 197 assert.True(t, storage.MinioConfig.ServeDirect) 198 }