...

Source file src/sigs.k8s.io/kustomize/api/testutils/valtest/fakevalidator.go

Documentation: sigs.k8s.io/kustomize/api/testutils/valtest

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  // Package valtest_test defines a fakeValidator that can be used in tests
     5  package valtest_test
     6  
     7  import (
     8  	"errors"
     9  	"regexp"
    10  	"testing"
    11  )
    12  
    13  // fakeValidator can be used in tests.
    14  type fakeValidator struct {
    15  	happy  bool
    16  	called bool
    17  	t      *testing.T
    18  }
    19  
    20  // SAD is an error string.
    21  const SAD = "i'm not happy Bob, NOT HAPPY"
    22  
    23  // MakeHappyMapValidator makes a fakeValidator that always passes.
    24  func MakeHappyMapValidator(t *testing.T) *fakeValidator {
    25  	t.Helper()
    26  	return &fakeValidator{happy: true, t: t}
    27  }
    28  
    29  // MakeSadMapValidator makes a fakeValidator that always fails.
    30  func MakeSadMapValidator(t *testing.T) *fakeValidator {
    31  	t.Helper()
    32  	return &fakeValidator{happy: false, t: t}
    33  }
    34  
    35  // MakeFakeValidator makes an empty Fake Validator.
    36  func MakeFakeValidator() *fakeValidator {
    37  	return &fakeValidator{}
    38  }
    39  
    40  // ErrIfInvalidKey returns nil
    41  func (v *fakeValidator) ErrIfInvalidKey(_ string) error {
    42  	return nil
    43  }
    44  
    45  // IsEnvVarName returns nil
    46  func (v *fakeValidator) IsEnvVarName(_ string) error {
    47  	return nil
    48  }
    49  
    50  // MakeAnnotationValidator returns a nil function
    51  func (v *fakeValidator) MakeAnnotationValidator() func(map[string]string) error {
    52  	return nil
    53  }
    54  
    55  // MakeAnnotationNameValidator returns a nil function
    56  func (v *fakeValidator) MakeAnnotationNameValidator() func([]string) error {
    57  	return nil
    58  }
    59  
    60  // MakeLabelValidator returns a nil function
    61  func (v *fakeValidator) MakeLabelValidator() func(map[string]string) error {
    62  	return nil
    63  }
    64  
    65  // MakeLabelNameValidator returns a nil function
    66  func (v *fakeValidator) MakeLabelNameValidator() func([]string) error {
    67  	return nil
    68  }
    69  
    70  // ValidateNamespace validates namespace by regexp
    71  func (v *fakeValidator) ValidateNamespace(s string) []string {
    72  	pattern := regexp.MustCompile(`^[a-zA-Z].*`)
    73  	if pattern.MatchString(s) {
    74  		return nil
    75  	}
    76  	return []string{"doesn't match"}
    77  }
    78  
    79  // Validator replaces apimachinery validation in tests.
    80  // Can be set to fail or succeed to test error handling.
    81  // Can confirm if run or not run by surrounding code.
    82  func (v *fakeValidator) Validator(_ map[string]string) error {
    83  	v.called = true
    84  	if v.happy {
    85  		return nil
    86  	}
    87  	return errors.New(SAD)
    88  }
    89  
    90  func (v *fakeValidator) ValidatorArray(_ []string) error {
    91  	v.called = true
    92  	if v.happy {
    93  		return nil
    94  	}
    95  	return errors.New(SAD)
    96  }
    97  
    98  // VerifyCall returns true if Validator was used.
    99  func (v *fakeValidator) VerifyCall() {
   100  	if !v.called {
   101  		v.t.Errorf("should have called Validator")
   102  	}
   103  }
   104  
   105  // VerifyNoCall returns true if Validator was not used.
   106  func (v *fakeValidator) VerifyNoCall() {
   107  	if v.called {
   108  		v.t.Errorf("should not have called Validator")
   109  	}
   110  }
   111  

View as plain text