mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 08:34:30 +01:00 
			
		
		
		
	Make external issue tracker regexp configurable via API (#21338)
Fixes #21336 Signed-off-by: Andrew Imeson <andrew@andrewimeson.com>
This commit is contained in:
		
							parent
							
								
									81d7270cde
								
							
						
					
					
						commit
						d94f15c2fd
					
				@ -56,9 +56,10 @@ func innerToRepo(repo *repo_model.Repository, mode perm.AccessMode, isParent boo
 | 
			
		||||
		config := unit.ExternalTrackerConfig()
 | 
			
		||||
		hasIssues = true
 | 
			
		||||
		externalTracker = &api.ExternalTracker{
 | 
			
		||||
			ExternalTrackerURL:    config.ExternalTrackerURL,
 | 
			
		||||
			ExternalTrackerFormat: config.ExternalTrackerFormat,
 | 
			
		||||
			ExternalTrackerStyle:  config.ExternalTrackerStyle,
 | 
			
		||||
			ExternalTrackerURL:           config.ExternalTrackerURL,
 | 
			
		||||
			ExternalTrackerFormat:        config.ExternalTrackerFormat,
 | 
			
		||||
			ExternalTrackerStyle:         config.ExternalTrackerStyle,
 | 
			
		||||
			ExternalTrackerRegexpPattern: config.ExternalTrackerRegexpPattern,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	hasWiki := false
 | 
			
		||||
 | 
			
		||||
@ -34,8 +34,10 @@ type ExternalTracker struct {
 | 
			
		||||
	ExternalTrackerURL string `json:"external_tracker_url"`
 | 
			
		||||
	// External Issue Tracker URL Format. Use the placeholders {user}, {repo} and {index} for the username, repository name and issue index.
 | 
			
		||||
	ExternalTrackerFormat string `json:"external_tracker_format"`
 | 
			
		||||
	// External Issue Tracker Number Format, either `numeric` or `alphanumeric`
 | 
			
		||||
	// External Issue Tracker Number Format, either `numeric`, `alphanumeric`, or `regexp`
 | 
			
		||||
	ExternalTrackerStyle string `json:"external_tracker_style"`
 | 
			
		||||
	// External Issue Tracker issue regular expression
 | 
			
		||||
	ExternalTrackerRegexpPattern string `json:"external_tracker_regexp_pattern"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ExternalWiki represents setting for external wiki
 | 
			
		||||
 | 
			
		||||
@ -755,9 +755,10 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
 | 
			
		||||
				RepoID: repo.ID,
 | 
			
		||||
				Type:   unit_model.TypeExternalTracker,
 | 
			
		||||
				Config: &repo_model.ExternalTrackerConfig{
 | 
			
		||||
					ExternalTrackerURL:    opts.ExternalTracker.ExternalTrackerURL,
 | 
			
		||||
					ExternalTrackerFormat: opts.ExternalTracker.ExternalTrackerFormat,
 | 
			
		||||
					ExternalTrackerStyle:  opts.ExternalTracker.ExternalTrackerStyle,
 | 
			
		||||
					ExternalTrackerURL:           opts.ExternalTracker.ExternalTrackerURL,
 | 
			
		||||
					ExternalTrackerFormat:        opts.ExternalTracker.ExternalTrackerFormat,
 | 
			
		||||
					ExternalTrackerStyle:         opts.ExternalTracker.ExternalTrackerStyle,
 | 
			
		||||
					ExternalTrackerRegexpPattern: opts.ExternalTracker.ExternalTrackerRegexpPattern,
 | 
			
		||||
				},
 | 
			
		||||
			})
 | 
			
		||||
			deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeIssues)
 | 
			
		||||
 | 
			
		||||
@ -16015,8 +16015,13 @@
 | 
			
		||||
          "type": "string",
 | 
			
		||||
          "x-go-name": "ExternalTrackerFormat"
 | 
			
		||||
        },
 | 
			
		||||
        "external_tracker_regexp_pattern": {
 | 
			
		||||
          "description": "External Issue Tracker issue regular expression",
 | 
			
		||||
          "type": "string",
 | 
			
		||||
          "x-go-name": "ExternalTrackerRegexpPattern"
 | 
			
		||||
        },
 | 
			
		||||
        "external_tracker_style": {
 | 
			
		||||
          "description": "External Issue Tracker Number Format, either `numeric` or `alphanumeric`",
 | 
			
		||||
          "description": "External Issue Tracker Number Format, either `numeric`, `alphanumeric`, or `regexp`",
 | 
			
		||||
          "type": "string",
 | 
			
		||||
          "x-go-name": "ExternalTrackerStyle"
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
@ -40,9 +40,10 @@ func getRepoEditOptionFromRepo(repo *repo_model.Repository) *api.EditRepoOption
 | 
			
		||||
		config := unit.ExternalTrackerConfig()
 | 
			
		||||
		hasIssues = true
 | 
			
		||||
		externalTracker = &api.ExternalTracker{
 | 
			
		||||
			ExternalTrackerURL:    config.ExternalTrackerURL,
 | 
			
		||||
			ExternalTrackerFormat: config.ExternalTrackerFormat,
 | 
			
		||||
			ExternalTrackerStyle:  config.ExternalTrackerStyle,
 | 
			
		||||
			ExternalTrackerURL:           config.ExternalTrackerURL,
 | 
			
		||||
			ExternalTrackerFormat:        config.ExternalTrackerFormat,
 | 
			
		||||
			ExternalTrackerStyle:         config.ExternalTrackerStyle,
 | 
			
		||||
			ExternalTrackerRegexpPattern: config.ExternalTrackerRegexpPattern,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	hasWiki := false
 | 
			
		||||
@ -220,6 +221,17 @@ func TestAPIRepoEdit(t *testing.T) {
 | 
			
		||||
		assert.Equal(t, *repo1editedOption.HasWiki, true)
 | 
			
		||||
		assert.Equal(t, *repo1editedOption.ExternalWiki, *repoEditOption.ExternalWiki)
 | 
			
		||||
 | 
			
		||||
		repoEditOption.ExternalTracker.ExternalTrackerStyle = "regexp"
 | 
			
		||||
		repoEditOption.ExternalTracker.ExternalTrackerRegexpPattern = `(\d+)`
 | 
			
		||||
		req = NewRequestWithJSON(t, "PATCH", url, &repoEditOption)
 | 
			
		||||
		resp = session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
		DecodeJSON(t, resp, &repo)
 | 
			
		||||
		assert.NotNil(t, repo)
 | 
			
		||||
		repo1edited = unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
 | 
			
		||||
		repo1editedOption = getRepoEditOptionFromRepo(repo1edited)
 | 
			
		||||
		assert.Equal(t, *repo1editedOption.HasIssues, true)
 | 
			
		||||
		assert.Equal(t, *repo1editedOption.ExternalTracker, *repoEditOption.ExternalTracker)
 | 
			
		||||
 | 
			
		||||
		// Do some tests with invalid URL for external tracker and wiki
 | 
			
		||||
		repoEditOption.ExternalTracker.ExternalTrackerURL = "htp://www.somewebsite.com"
 | 
			
		||||
		req = NewRequestWithJSON(t, "PATCH", url, &repoEditOption)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user