1
0
mirror of https://github.com/quay/quay.git synced 2026-01-26 06:21:37 +03:00
Files
quay/config-tool/pkg/lib/fieldgroups/gitlabbuildtrigger/gitlabbuildtrigger_validator.go

91 lines
2.7 KiB
Go

package gitlabbuildtrigger
import (
"strings"
"github.com/quay/quay/config-tool/pkg/lib/shared"
)
// Validate checks the configuration settings for this field group
func (fg *GitLabBuildTriggerFieldGroup) Validate(opts shared.Options) []shared.ValidationError {
fgName := "GitLabBuildTrigger"
// Make empty errors
errors := []shared.ValidationError{}
// If build support is off, return false
if fg.FeatureBuildSupport == false {
return errors
}
// If github trigger is off
if fg.FeatureGitlabBuild == false {
return errors
}
// Check for config
if fg.GitlabTriggerConfig == nil {
newError := shared.ValidationError{
Tags: []string{"GITLAB_TRIGGER_CONFIG"},
FieldGroup: fgName,
Message: "GITLAB_TRIGGER_CONFIG is required for GitLabBuildTrigger",
}
errors = append(errors, newError)
return errors
}
// Check for endpoint
if fg.GitlabTriggerConfig.GitlabEndpoint == "" {
newError := shared.ValidationError{
Tags: []string{"GITLAB_TRIGGER_CONFIG.GITLAB_ENDPOINT"},
FieldGroup: fgName,
Message: "GITLAB_TRIGGER_CONFIG.GITLAB_ENDPOINT is required for GitLabBuildTrigger",
}
errors = append(errors, newError)
}
// Check for endpoint
if !strings.HasPrefix(fg.GitlabTriggerConfig.GitlabEndpoint, "http://") && !strings.HasPrefix(fg.GitlabTriggerConfig.GitlabEndpoint, "https://") {
newError := shared.ValidationError{
Tags: []string{"GITLAB_TRIGGER_CONFIG.GITLAB_ENDPOINT"},
FieldGroup: fgName,
Message: "GITLAB_TRIGGER_CONFIG.GITLAB_ENDPOINT must be a url",
}
errors = append(errors, newError)
}
// Check for client id
if fg.GitlabTriggerConfig.ClientId == "" {
newError := shared.ValidationError{
Tags: []string{"GITLAB_TRIGGER_CONFIG.CLIENT_ID"},
FieldGroup: fgName,
Message: "GITLAB_TRIGGER_CONFIG.CLIENT_ID is required for GitLabBuildTrigger",
}
errors = append(errors, newError)
}
// Check for endpoint
if fg.GitlabTriggerConfig.ClientSecret == "" {
newError := shared.ValidationError{
Tags: []string{"GITLAB_TRIGGER_CONFIG.CLIENT_SECRET"},
FieldGroup: fgName,
Message: "GITLAB_TRIGGER_CONFIG.CLIENT_SECRET is required for GitLabBuildTrigger",
}
errors = append(errors, newError)
}
// Check OAuth endpoint
success := shared.ValidateGitLabOAuth(fg.GitlabTriggerConfig.ClientId, fg.GitlabTriggerConfig.ClientSecret, fg.GitlabTriggerConfig.GitlabEndpoint)
if !success {
newError := shared.ValidationError{
Tags: []string{"GITLAB_TRIGGER_CONFIG.CLIENT_ID", "GITLAB_TRIGGER_CONFIG.CLIENT_SECRET"},
FieldGroup: fgName,
Message: "Could not verify GitLab OAuth credentials",
}
errors = append(errors, newError)
}
return errors
}