|
|
- // Copyright 2017 The Gitea Authors. All rights reserved.
- // Use of this source code is governed by a MIT-style
- // license that can be found in the LICENSE file.
-
- package validation
-
- import (
- "testing"
-
- "github.com/go-macaron/binding"
- )
-
- var gitRefNameValidationTestCases = []validationTestCase{
- {
- description: "Referece contains only characters",
- data: TestForm{
- BranchName: "test",
- },
- expectedErrors: binding.Errors{},
- },
- {
- description: "Reference name contains single slash",
- data: TestForm{
- BranchName: "feature/test",
- },
- expectedErrors: binding.Errors{},
- },
- {
- description: "Reference name contains backslash",
- data: TestForm{
- BranchName: "feature\\test",
- },
- expectedErrors: binding.Errors{
- binding.Error{
- FieldNames: []string{"BranchName"},
- Classification: ErrGitRefName,
- Message: "GitRefName",
- },
- },
- },
- {
- description: "Reference name starts with dot",
- data: TestForm{
- BranchName: ".test",
- },
- expectedErrors: binding.Errors{
- binding.Error{
- FieldNames: []string{"BranchName"},
- Classification: ErrGitRefName,
- Message: "GitRefName",
- },
- },
- },
- {
- description: "Reference name ends with dot",
- data: TestForm{
- BranchName: "test.",
- },
- expectedErrors: binding.Errors{
- binding.Error{
- FieldNames: []string{"BranchName"},
- Classification: ErrGitRefName,
- Message: "GitRefName",
- },
- },
- },
- {
- description: "Reference name starts with slash",
- data: TestForm{
- BranchName: "/test",
- },
- expectedErrors: binding.Errors{
- binding.Error{
- FieldNames: []string{"BranchName"},
- Classification: ErrGitRefName,
- Message: "GitRefName",
- },
- },
- },
- {
- description: "Reference name ends with slash",
- data: TestForm{
- BranchName: "test/",
- },
- expectedErrors: binding.Errors{
- binding.Error{
- FieldNames: []string{"BranchName"},
- Classification: ErrGitRefName,
- Message: "GitRefName",
- },
- },
- },
- {
- description: "Reference name ends with .lock",
- data: TestForm{
- BranchName: "test.lock",
- },
- expectedErrors: binding.Errors{
- binding.Error{
- FieldNames: []string{"BranchName"},
- Classification: ErrGitRefName,
- Message: "GitRefName",
- },
- },
- },
- {
- description: "Reference name contains multiple consecutive dots",
- data: TestForm{
- BranchName: "te..st",
- },
- expectedErrors: binding.Errors{
- binding.Error{
- FieldNames: []string{"BranchName"},
- Classification: ErrGitRefName,
- Message: "GitRefName",
- },
- },
- },
- {
- description: "Reference name contains multiple consecutive slashes",
- data: TestForm{
- BranchName: "te//st",
- },
- expectedErrors: binding.Errors{
- binding.Error{
- FieldNames: []string{"BranchName"},
- Classification: ErrGitRefName,
- Message: "GitRefName",
- },
- },
- },
- }
-
- func Test_GitRefNameValidation(t *testing.T) {
- AddBindingRules()
-
- for _, testCase := range gitRefNameValidationTestCases {
- t.Run(testCase.description, func(t *testing.T) {
- performValidationTest(t, testCase)
- })
- }
- }
|