github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/state/resources_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package state_test 5 6 import ( 7 "bytes" 8 "time" 9 10 jc "github.com/juju/testing/checkers" 11 gc "gopkg.in/check.v1" 12 charmresource "gopkg.in/juju/charm.v6-unstable/resource" 13 14 "github.com/juju/juju/component/all" 15 "github.com/juju/juju/resource" 16 "github.com/juju/juju/resource/resourcetesting" 17 ) 18 19 func init() { 20 if err := all.RegisterForServer(); err != nil { 21 panic(err) 22 } 23 } 24 25 var _ = gc.Suite(&ResourcesSuite{}) 26 27 type ResourcesSuite struct { 28 ConnSuite 29 } 30 31 func (s *ResourcesSuite) TestFunctional(c *gc.C) { 32 ch := s.ConnSuite.AddTestingCharm(c, "wordpress") 33 s.ConnSuite.AddTestingService(c, "a-service", ch) 34 35 st, err := s.State.Resources() 36 c.Assert(err, jc.ErrorIsNil) 37 38 resources, err := st.ListResources("a-service") 39 c.Assert(err, jc.ErrorIsNil) 40 41 c.Check(resources.Resources, gc.HasLen, 0) 42 43 data := "spamspamspam" 44 res := newResource(c, "spam", data) 45 file := bytes.NewBufferString(data) 46 47 _, err = st.SetResource("a-service", res.Username, res.Resource, file) 48 c.Assert(err, jc.ErrorIsNil) 49 50 csResources := []charmresource.Resource{res.Resource} 51 err = st.SetCharmStoreResources("a-service", csResources, time.Now()) 52 c.Assert(err, jc.ErrorIsNil) 53 54 resources, err = st.ListResources("a-service") 55 c.Assert(err, jc.ErrorIsNil) 56 57 res.Timestamp = resources.Resources[0].Timestamp 58 c.Check(resources, jc.DeepEquals, resource.ServiceResources{ 59 Resources: []resource.Resource{res}, 60 CharmStoreResources: csResources, 61 }) 62 63 // TODO(ericsnow) Add more as state.Resources grows more functionality. 64 } 65 66 func newResource(c *gc.C, name, data string) resource.Resource { 67 opened := resourcetesting.NewResource(c, nil, name, "a-service", data) 68 res := opened.Resource 69 res.Timestamp = time.Unix(res.Timestamp.Unix(), 0) 70 return res 71 }