code.gitea.io/gitea@v1.22.3/modules/setting/actions_test.go (about)

     1  // Copyright 2023 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package setting
     5  
     6  import (
     7  	"path/filepath"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func Test_getStorageInheritNameSectionTypeForActions(t *testing.T) {
    15  	iniStr := `
    16  	[storage]
    17  	STORAGE_TYPE = minio
    18  	`
    19  	cfg, err := NewConfigProviderFromData(iniStr)
    20  	assert.NoError(t, err)
    21  	assert.NoError(t, loadActionsFrom(cfg))
    22  
    23  	assert.EqualValues(t, "minio", Actions.LogStorage.Type)
    24  	assert.EqualValues(t, "actions_log/", Actions.LogStorage.MinioConfig.BasePath)
    25  	assert.EqualValues(t, "minio", Actions.ArtifactStorage.Type)
    26  	assert.EqualValues(t, "actions_artifacts/", Actions.ArtifactStorage.MinioConfig.BasePath)
    27  
    28  	iniStr = `
    29  [storage.actions_log]
    30  STORAGE_TYPE = minio
    31  `
    32  	cfg, err = NewConfigProviderFromData(iniStr)
    33  	assert.NoError(t, err)
    34  	assert.NoError(t, loadActionsFrom(cfg))
    35  
    36  	assert.EqualValues(t, "minio", Actions.LogStorage.Type)
    37  	assert.EqualValues(t, "actions_log/", Actions.LogStorage.MinioConfig.BasePath)
    38  	assert.EqualValues(t, "local", Actions.ArtifactStorage.Type)
    39  	assert.EqualValues(t, "actions_artifacts", filepath.Base(Actions.ArtifactStorage.Path))
    40  
    41  	iniStr = `
    42  [storage.actions_log]
    43  STORAGE_TYPE = my_storage
    44  
    45  [storage.my_storage]
    46  STORAGE_TYPE = minio
    47  `
    48  	cfg, err = NewConfigProviderFromData(iniStr)
    49  	assert.NoError(t, err)
    50  	assert.NoError(t, loadActionsFrom(cfg))
    51  
    52  	assert.EqualValues(t, "minio", Actions.LogStorage.Type)
    53  	assert.EqualValues(t, "actions_log/", Actions.LogStorage.MinioConfig.BasePath)
    54  	assert.EqualValues(t, "local", Actions.ArtifactStorage.Type)
    55  	assert.EqualValues(t, "actions_artifacts", filepath.Base(Actions.ArtifactStorage.Path))
    56  
    57  	iniStr = `
    58  [storage.actions_artifacts]
    59  STORAGE_TYPE = my_storage
    60  
    61  [storage.my_storage]
    62  STORAGE_TYPE = minio
    63  `
    64  	cfg, err = NewConfigProviderFromData(iniStr)
    65  	assert.NoError(t, err)
    66  	assert.NoError(t, loadActionsFrom(cfg))
    67  
    68  	assert.EqualValues(t, "local", Actions.LogStorage.Type)
    69  	assert.EqualValues(t, "actions_log", filepath.Base(Actions.LogStorage.Path))
    70  	assert.EqualValues(t, "minio", Actions.ArtifactStorage.Type)
    71  	assert.EqualValues(t, "actions_artifacts/", Actions.ArtifactStorage.MinioConfig.BasePath)
    72  
    73  	iniStr = `
    74  [storage.actions_artifacts]
    75  STORAGE_TYPE = my_storage
    76  
    77  [storage.my_storage]
    78  STORAGE_TYPE = minio
    79  `
    80  	cfg, err = NewConfigProviderFromData(iniStr)
    81  	assert.NoError(t, err)
    82  	assert.NoError(t, loadActionsFrom(cfg))
    83  
    84  	assert.EqualValues(t, "local", Actions.LogStorage.Type)
    85  	assert.EqualValues(t, "actions_log", filepath.Base(Actions.LogStorage.Path))
    86  	assert.EqualValues(t, "minio", Actions.ArtifactStorage.Type)
    87  	assert.EqualValues(t, "actions_artifacts/", Actions.ArtifactStorage.MinioConfig.BasePath)
    88  
    89  	iniStr = ``
    90  	cfg, err = NewConfigProviderFromData(iniStr)
    91  	assert.NoError(t, err)
    92  	assert.NoError(t, loadActionsFrom(cfg))
    93  
    94  	assert.EqualValues(t, "local", Actions.LogStorage.Type)
    95  	assert.EqualValues(t, "actions_log", filepath.Base(Actions.LogStorage.Path))
    96  	assert.EqualValues(t, "local", Actions.ArtifactStorage.Type)
    97  	assert.EqualValues(t, "actions_artifacts", filepath.Base(Actions.ArtifactStorage.Path))
    98  }
    99  
   100  func Test_getDefaultActionsURLForActions(t *testing.T) {
   101  	oldActions := Actions
   102  	oldAppURL := AppURL
   103  	defer func() {
   104  		Actions = oldActions
   105  		AppURL = oldAppURL
   106  	}()
   107  
   108  	AppURL = "http://test_get_default_actions_url_for_actions:3000/"
   109  
   110  	tests := []struct {
   111  		name    string
   112  		iniStr  string
   113  		wantErr assert.ErrorAssertionFunc
   114  		wantURL string
   115  	}{
   116  		{
   117  			name: "default",
   118  			iniStr: `
   119  [actions]
   120  `,
   121  			wantErr: assert.NoError,
   122  			wantURL: "https://github.com",
   123  		},
   124  		{
   125  			name: "github",
   126  			iniStr: `
   127  [actions]
   128  DEFAULT_ACTIONS_URL = github
   129  `,
   130  			wantErr: assert.NoError,
   131  			wantURL: "https://github.com",
   132  		},
   133  		{
   134  			name: "self",
   135  			iniStr: `
   136  [actions]
   137  DEFAULT_ACTIONS_URL = self
   138  `,
   139  			wantErr: assert.NoError,
   140  			wantURL: "http://test_get_default_actions_url_for_actions:3000",
   141  		},
   142  		{
   143  			name: "custom url",
   144  			iniStr: `
   145  [actions]
   146  DEFAULT_ACTIONS_URL = https://gitea.com
   147  `,
   148  			wantErr: assert.NoError,
   149  			wantURL: "https://github.com",
   150  		},
   151  		{
   152  			name: "custom urls",
   153  			iniStr: `
   154  [actions]
   155  DEFAULT_ACTIONS_URL = https://gitea.com,https://github.com
   156  `,
   157  			wantErr: assert.NoError,
   158  			wantURL: "https://github.com",
   159  		},
   160  		{
   161  			name: "invalid",
   162  			iniStr: `
   163  [actions]
   164  DEFAULT_ACTIONS_URL = gitea
   165  `,
   166  			wantErr: assert.Error,
   167  			wantURL: "https://github.com",
   168  		},
   169  	}
   170  
   171  	for _, tt := range tests {
   172  		t.Run(tt.name, func(t *testing.T) {
   173  			cfg, err := NewConfigProviderFromData(tt.iniStr)
   174  			require.NoError(t, err)
   175  			if !tt.wantErr(t, loadActionsFrom(cfg)) {
   176  				return
   177  			}
   178  			assert.EqualValues(t, tt.wantURL, Actions.DefaultActionsURL.URL())
   179  		})
   180  	}
   181  }