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  }