github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/logfwd/origin-type_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package logfwd_test 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/testing" 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/logfwd" 13 ) 14 15 type OriginTypeSuite struct { 16 testing.IsolationSuite 17 } 18 19 var _ = gc.Suite(&OriginTypeSuite{}) 20 21 func (s *OriginTypeSuite) TestZeroValue(c *gc.C) { 22 var ot logfwd.OriginType 23 24 c.Check(ot, gc.Equals, logfwd.OriginTypeUnknown) 25 } 26 27 func (s *OriginTypeSuite) TestParseOriginTypeValid(c *gc.C) { 28 tests := map[string]logfwd.OriginType{ 29 "unknown": logfwd.OriginTypeUnknown, 30 "user": logfwd.OriginTypeUser, 31 "machine": logfwd.OriginTypeMachine, 32 "unit": logfwd.OriginTypeUnit, 33 } 34 for str, expected := range tests { 35 c.Logf("trying %q", str) 36 37 ot, err := logfwd.ParseOriginType(str) 38 c.Assert(err, jc.ErrorIsNil) 39 40 c.Check(ot, gc.Equals, expected) 41 } 42 } 43 44 func (s *OriginTypeSuite) TestParseOriginTypeEmpty(c *gc.C) { 45 _, err := logfwd.ParseOriginType("") 46 47 c.Check(err, gc.ErrorMatches, `unrecognized origin type ""`) 48 } 49 50 func (s *OriginTypeSuite) TestParseOriginTypeInvalid(c *gc.C) { 51 _, err := logfwd.ParseOriginType("spam") 52 53 c.Check(err, gc.ErrorMatches, `unrecognized origin type "spam"`) 54 } 55 56 func (s *OriginTypeSuite) TestString(c *gc.C) { 57 tests := map[logfwd.OriginType]string{ 58 logfwd.OriginTypeUnknown: "unknown", 59 logfwd.OriginTypeUser: "user", 60 logfwd.OriginTypeMachine: "machine", 61 logfwd.OriginTypeUnit: "unit", 62 } 63 for ot, expected := range tests { 64 c.Logf("trying %q", ot) 65 66 str := ot.String() 67 68 c.Check(str, gc.Equals, expected) 69 } 70 } 71 72 func (s *OriginTypeSuite) TestValidateValid(c *gc.C) { 73 tests := []logfwd.OriginType{ 74 logfwd.OriginTypeUnknown, 75 logfwd.OriginTypeUser, 76 logfwd.OriginTypeMachine, 77 logfwd.OriginTypeUnit, 78 } 79 for _, ot := range tests { 80 c.Logf("trying %q", ot) 81 82 err := ot.Validate() 83 84 c.Check(err, jc.ErrorIsNil) 85 } 86 } 87 88 func (s *OriginTypeSuite) TestValidateZero(c *gc.C) { 89 var ot logfwd.OriginType 90 91 err := ot.Validate() 92 93 c.Check(err, jc.ErrorIsNil) 94 } 95 96 func (s *OriginTypeSuite) TestValidateInvalid(c *gc.C) { 97 ot := logfwd.OriginType(999) 98 99 err := ot.Validate() 100 101 c.Check(err, jc.Satisfies, errors.IsNotValid) 102 c.Check(err, gc.ErrorMatches, `unsupported origin type`) 103 } 104 105 func (s *OriginTypeSuite) TestValidateNameValid(c *gc.C) { 106 tests := map[logfwd.OriginType]string{ 107 logfwd.OriginTypeUnknown: "", 108 logfwd.OriginTypeUser: "a-user", 109 logfwd.OriginTypeMachine: "99", 110 logfwd.OriginTypeUnit: "svc-a/0", 111 } 112 for ot, name := range tests { 113 c.Logf("trying %q + %q", ot, name) 114 115 err := ot.ValidateName(name) 116 117 c.Check(err, jc.ErrorIsNil) 118 } 119 } 120 121 func (s *OriginTypeSuite) TestValidateNameInvalid(c *gc.C) { 122 tests := []struct { 123 ot logfwd.OriginType 124 name string 125 err string 126 }{{ 127 ot: logfwd.OriginTypeUnknown, 128 name: "...", 129 err: `origin name must not be set if type is unknown`, 130 }, { 131 ot: logfwd.OriginTypeUser, 132 name: "...", 133 err: `bad user name`, 134 }, { 135 ot: logfwd.OriginTypeMachine, 136 name: "...", 137 err: `bad machine name`, 138 }, { 139 ot: logfwd.OriginTypeUnit, 140 name: "...", 141 err: `bad unit name`, 142 }} 143 for _, test := range tests { 144 c.Logf("trying %q + %q", test.ot, test.name) 145 146 err := test.ot.ValidateName(test.name) 147 148 c.Check(err, jc.Satisfies, errors.IsNotValid) 149 c.Check(err, gc.ErrorMatches, test.err) 150 } 151 }