github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/state/lease/client_validation_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package lease_test 5 6 import ( 7 "time" // Only used for time types. 8 9 gc "gopkg.in/check.v1" 10 11 corelease "github.com/juju/juju/core/lease" 12 "github.com/juju/juju/state/lease" 13 ) 14 15 // ClientValidationSuite sends bad data into all of Client's methods. 16 type ClientValidationSuite struct { 17 FixtureSuite 18 } 19 20 var _ = gc.Suite(&ClientValidationSuite{}) 21 22 func (s *ClientValidationSuite) TestNewClientId(c *gc.C) { 23 fix := s.EasyFixture(c) 24 fix.Config.Id = "$bad" 25 _, err := lease.NewClient(fix.Config) 26 c.Check(err, gc.ErrorMatches, "invalid id: string contains forbidden characters") 27 } 28 29 func (s *ClientValidationSuite) TestNewClientNamespace(c *gc.C) { 30 fix := s.EasyFixture(c) 31 fix.Config.Namespace = "$bad" 32 _, err := lease.NewClient(fix.Config) 33 c.Check(err, gc.ErrorMatches, "invalid namespace: string contains forbidden characters") 34 } 35 36 func (s *ClientValidationSuite) TestNewClientCollection(c *gc.C) { 37 fix := s.EasyFixture(c) 38 fix.Config.Collection = "$bad" 39 _, err := lease.NewClient(fix.Config) 40 c.Check(err, gc.ErrorMatches, "invalid collection: string contains forbidden characters") 41 } 42 43 func (s *ClientValidationSuite) TestNewClientMongo(c *gc.C) { 44 fix := s.EasyFixture(c) 45 fix.Config.Mongo = nil 46 _, err := lease.NewClient(fix.Config) 47 c.Check(err, gc.ErrorMatches, "missing mongo") 48 } 49 50 func (s *ClientValidationSuite) TestNewClientClock(c *gc.C) { 51 fix := s.EasyFixture(c) 52 fix.Config.Clock = nil 53 _, err := lease.NewClient(fix.Config) 54 c.Check(err, gc.ErrorMatches, "missing clock") 55 } 56 57 func (s *ClientValidationSuite) TestClaimLeaseName(c *gc.C) { 58 fix := s.EasyFixture(c) 59 err := fix.Client.ClaimLease("$name", corelease.Request{"holder", time.Minute}) 60 c.Check(err, gc.ErrorMatches, "invalid name: string contains forbidden characters") 61 } 62 63 func (s *ClientValidationSuite) TestClaimLeaseHolder(c *gc.C) { 64 fix := s.EasyFixture(c) 65 err := fix.Client.ClaimLease("name", corelease.Request{"$holder", time.Minute}) 66 c.Check(err, gc.ErrorMatches, "invalid request: invalid holder: string contains forbidden characters") 67 } 68 69 func (s *ClientValidationSuite) TestClaimLeaseDuration(c *gc.C) { 70 fix := s.EasyFixture(c) 71 err := fix.Client.ClaimLease("name", corelease.Request{"holder", 0}) 72 c.Check(err, gc.ErrorMatches, "invalid request: invalid duration") 73 } 74 75 func (s *ClientValidationSuite) TestExtendLeaseName(c *gc.C) { 76 fix := s.EasyFixture(c) 77 err := fix.Client.ExtendLease("$name", corelease.Request{"holder", time.Minute}) 78 c.Check(err, gc.ErrorMatches, "invalid name: string contains forbidden characters") 79 } 80 81 func (s *ClientValidationSuite) TestExtendLeaseHolder(c *gc.C) { 82 fix := s.EasyFixture(c) 83 err := fix.Client.ExtendLease("name", corelease.Request{"$holder", time.Minute}) 84 c.Check(err, gc.ErrorMatches, "invalid request: invalid holder: string contains forbidden characters") 85 } 86 87 func (s *ClientValidationSuite) TestExtendLeaseDuration(c *gc.C) { 88 fix := s.EasyFixture(c) 89 err := fix.Client.ExtendLease("name", corelease.Request{"holder", 0}) 90 c.Check(err, gc.ErrorMatches, "invalid request: invalid duration") 91 } 92 93 func (s *ClientValidationSuite) TestExpireLeaseName(c *gc.C) { 94 fix := s.EasyFixture(c) 95 err := fix.Client.ExpireLease("$name") 96 c.Check(err, gc.ErrorMatches, "invalid name: string contains forbidden characters") 97 }