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  }