github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/logfwd/origin_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  	"github.com/juju/version"
    11  	gc "gopkg.in/check.v1"
    12  	"gopkg.in/juju/names.v2"
    13  
    14  	"github.com/juju/juju/logfwd"
    15  )
    16  
    17  type OriginSuite struct {
    18  	testing.IsolationSuite
    19  }
    20  
    21  var _ = gc.Suite(&OriginSuite{})
    22  
    23  func (s *OriginSuite) TestOriginForMachineAgent(c *gc.C) {
    24  	tag := names.NewMachineTag("99")
    25  
    26  	origin := logfwd.OriginForMachineAgent(tag, validOrigin.ControllerUUID, validOrigin.ModelUUID, validOrigin.Software.Version)
    27  
    28  	c.Check(origin, jc.DeepEquals, logfwd.Origin{
    29  		ControllerUUID: validOrigin.ControllerUUID,
    30  		ModelUUID:      validOrigin.ModelUUID,
    31  		Hostname:       "machine-99." + validOrigin.ModelUUID,
    32  		Type:           logfwd.OriginTypeMachine,
    33  		Name:           "99",
    34  		Software: logfwd.Software{
    35  			PrivateEnterpriseNumber: 28978,
    36  			Name:    "jujud-machine-agent",
    37  			Version: version.MustParse("2.0.1"),
    38  		},
    39  	})
    40  }
    41  
    42  func (s *OriginSuite) TestOriginForUnitAgent(c *gc.C) {
    43  	tag := names.NewUnitTag("svc-a/0")
    44  
    45  	origin := logfwd.OriginForUnitAgent(tag, validOrigin.ControllerUUID, validOrigin.ModelUUID, validOrigin.Software.Version)
    46  
    47  	c.Check(origin, jc.DeepEquals, logfwd.Origin{
    48  		ControllerUUID: validOrigin.ControllerUUID,
    49  		ModelUUID:      validOrigin.ModelUUID,
    50  		Hostname:       "unit-svc-a-0." + validOrigin.ModelUUID,
    51  		Type:           logfwd.OriginTypeUnit,
    52  		Name:           "svc-a/0",
    53  		Software: logfwd.Software{
    54  			PrivateEnterpriseNumber: 28978,
    55  			Name:    "jujud-unit-agent",
    56  			Version: version.MustParse("2.0.1"),
    57  		},
    58  	})
    59  }
    60  
    61  func (s *OriginSuite) TestOriginForJuju(c *gc.C) {
    62  	tag := names.NewUserTag("bob")
    63  
    64  	origin, err := logfwd.OriginForJuju(tag, validOrigin.ControllerUUID, validOrigin.ModelUUID, validOrigin.Software.Version)
    65  	c.Assert(err, jc.ErrorIsNil)
    66  
    67  	c.Check(origin, jc.DeepEquals, logfwd.Origin{
    68  		ControllerUUID: validOrigin.ControllerUUID,
    69  		ModelUUID:      validOrigin.ModelUUID,
    70  		Hostname:       "",
    71  		Type:           logfwd.OriginTypeUser,
    72  		Name:           "bob",
    73  		Software: logfwd.Software{
    74  			PrivateEnterpriseNumber: 28978,
    75  			Name:    "juju",
    76  			Version: version.MustParse("2.0.1"),
    77  		},
    78  	})
    79  }
    80  
    81  func (s *OriginSuite) TestValidateValid(c *gc.C) {
    82  	origin := validOrigin
    83  
    84  	err := origin.Validate()
    85  
    86  	c.Check(err, jc.ErrorIsNil)
    87  }
    88  
    89  func (s *OriginSuite) TestValidateEmpty(c *gc.C) {
    90  	var origin logfwd.Origin
    91  
    92  	err := origin.Validate()
    93  
    94  	c.Check(err, jc.Satisfies, errors.IsNotValid)
    95  }
    96  
    97  func (s *OriginSuite) TestValidateEmptyControllerUUID(c *gc.C) {
    98  	origin := validOrigin
    99  	origin.ControllerUUID = ""
   100  
   101  	err := origin.Validate()
   102  
   103  	c.Check(err, jc.Satisfies, errors.IsNotValid)
   104  	c.Check(err, gc.ErrorMatches, `empty ControllerUUID`)
   105  }
   106  
   107  func (s *OriginSuite) TestValidateBadControllerUUID(c *gc.C) {
   108  	origin := validOrigin
   109  	origin.ControllerUUID = "..."
   110  
   111  	err := origin.Validate()
   112  
   113  	c.Check(err, jc.Satisfies, errors.IsNotValid)
   114  	c.Check(err, gc.ErrorMatches, `ControllerUUID "..." not a valid UUID`)
   115  }
   116  
   117  func (s *OriginSuite) TestValidateEmptyModelUUID(c *gc.C) {
   118  	origin := validOrigin
   119  	origin.ModelUUID = ""
   120  
   121  	err := origin.Validate()
   122  
   123  	c.Check(err, jc.Satisfies, errors.IsNotValid)
   124  	c.Check(err, gc.ErrorMatches, `empty ModelUUID`)
   125  }
   126  
   127  func (s *OriginSuite) TestValidateBadModelUUID(c *gc.C) {
   128  	origin := validOrigin
   129  	origin.ModelUUID = "..."
   130  
   131  	err := origin.Validate()
   132  
   133  	c.Check(err, jc.Satisfies, errors.IsNotValid)
   134  	c.Check(err, gc.ErrorMatches, `ModelUUID "..." not a valid UUID`)
   135  }
   136  
   137  func (s *OriginSuite) TestValidateEmptyHostname(c *gc.C) {
   138  	origin := validOrigin
   139  	origin.Hostname = ""
   140  
   141  	err := origin.Validate()
   142  
   143  	c.Check(err, jc.ErrorIsNil)
   144  }
   145  
   146  func (s *OriginSuite) TestValidateBadOriginType(c *gc.C) {
   147  	origin := validOrigin
   148  	origin.Type = logfwd.OriginType(999)
   149  
   150  	err := origin.Validate()
   151  
   152  	c.Check(err, jc.Satisfies, errors.IsNotValid)
   153  	c.Check(err, gc.ErrorMatches, `invalid Type: unsupported origin type`)
   154  }
   155  
   156  func (s *OriginSuite) TestValidateEmptyName(c *gc.C) {
   157  	origin := validOrigin
   158  	origin.Name = ""
   159  
   160  	err := origin.Validate()
   161  
   162  	c.Check(err, jc.Satisfies, errors.IsNotValid)
   163  	c.Check(err, gc.ErrorMatches, `empty Name`)
   164  }
   165  
   166  func (s *OriginSuite) TestValidateBadName(c *gc.C) {
   167  	origin := validOrigin
   168  	origin.Name = "..."
   169  
   170  	err := origin.Validate()
   171  
   172  	c.Check(err, jc.Satisfies, errors.IsNotValid)
   173  	c.Check(err, gc.ErrorMatches, `invalid Name "...": bad user name`)
   174  }
   175  
   176  func (s *OriginSuite) TestValidateEmptySoftware(c *gc.C) {
   177  	origin := validOrigin
   178  	origin.Software = logfwd.Software{}
   179  
   180  	err := origin.Validate()
   181  
   182  	c.Check(err, jc.ErrorIsNil)
   183  }
   184  
   185  func (s *OriginSuite) TestValidateBadSoftware(c *gc.C) {
   186  	origin := validOrigin
   187  	origin.Software.Version = version.Zero
   188  
   189  	err := origin.Validate()
   190  
   191  	c.Check(err, jc.Satisfies, errors.IsNotValid)
   192  	c.Check(err, gc.ErrorMatches, `invalid Software: empty Version`)
   193  }
   194  
   195  var validOrigin = logfwd.Origin{
   196  	ControllerUUID: "9f484882-2f18-4fd2-967d-db9663db7bea",
   197  	ModelUUID:      "deadbeef-2f18-4fd2-967d-db9663db7bea",
   198  	Hostname:       "spam.x.y.z.com",
   199  	Type:           logfwd.OriginTypeUser,
   200  	Name:           "a-user",
   201  	Software: logfwd.Software{
   202  		PrivateEnterpriseNumber: 28978,
   203  		Name:    "juju",
   204  		Version: version.MustParse("2.0.1"),
   205  	},
   206  }