github.com/Venafi/vcert/v5@v5.10.2/pkg/certificate/ellipticCurve_test.go (about) 1 package certificate 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/suite" 8 "gopkg.in/yaml.v3" 9 ) 10 11 type EllipticCurveSuite struct { 12 suite.Suite 13 testYaml string 14 testCases []struct { 15 keyCurve EllipticCurve 16 strValue string 17 } 18 } 19 20 func (s *EllipticCurveSuite) SetupTest() { 21 s.testCases = []struct { 22 keyCurve EllipticCurve 23 strValue string 24 }{ 25 {keyCurve: EllipticCurveP256, strValue: strEccP256}, 26 {keyCurve: EllipticCurveP384, strValue: strEccP384}, 27 {keyCurve: EllipticCurveP521, strValue: strEccP521}, 28 {keyCurve: EllipticCurveED25519, strValue: strEccED25519}, 29 } 30 31 s.testYaml = `--- 32 cn: foobar 33 keyCurve: %s 34 ` 35 } 36 37 func TestEllipticCurve(t *testing.T) { 38 suite.Run(t, new(EllipticCurveSuite)) 39 } 40 41 func (s *EllipticCurveSuite) TestEllipticCurve_MarshalYAML() { 42 for _, tc := range s.testCases { 43 s.Run(tc.strValue, func() { 44 data, err := tc.keyCurve.MarshalYAML() 45 s.Nil(err) 46 s.Equal(tc.strValue, data.(string)) 47 }) 48 } 49 } 50 51 func (s *EllipticCurveSuite) TestEllipticCurve_String() { 52 for _, tc := range s.testCases { 53 s.Run(tc.strValue, func() { 54 str := tc.keyCurve.String() 55 s.Equal(tc.strValue, str) 56 }) 57 } 58 } 59 60 func (s *EllipticCurveSuite) TestEllipticCurve_UnmarshalYAML() { 61 for _, tc := range s.testCases { 62 s.Run(tc.strValue, func() { 63 result := struct { 64 Cn string `yaml:"cn"` 65 KeyCurve EllipticCurve `yaml:"keyCurve"` 66 }{} 67 parsedYaml := fmt.Sprintf(s.testYaml, tc.strValue) 68 err := yaml.Unmarshal([]byte(parsedYaml), &result) 69 70 s.Nil(err) 71 s.Equal(tc.keyCurve, result.KeyCurve) 72 }) 73 } 74 }