launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/cmd/juju/scp_test.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package main 5 6 import ( 7 "bytes" 8 "fmt" 9 "io/ioutil" 10 "net/url" 11 "path/filepath" 12 13 gc "launchpad.net/gocheck" 14 15 "launchpad.net/juju-core/charm" 16 "launchpad.net/juju-core/cmd" 17 coretesting "launchpad.net/juju-core/testing" 18 ) 19 20 var _ = gc.Suite(&SCPSuite{}) 21 22 type SCPSuite struct { 23 SSHCommonSuite 24 } 25 26 var scpTests = []struct { 27 args []string 28 result string 29 }{ 30 { 31 []string{"0:foo", "."}, 32 commonArgs + "ubuntu@dummyenv-0.dns:foo .\n", 33 }, 34 { 35 []string{"foo", "0:"}, 36 commonArgs + "foo ubuntu@dummyenv-0.dns:\n", 37 }, 38 { 39 []string{"0:foo", "mysql/0:/foo"}, 40 commonArgs + "ubuntu@dummyenv-0.dns:foo ubuntu@dummyenv-0.dns:/foo\n", 41 }, 42 { 43 []string{"a", "b", "mysql/0"}, 44 commonArgs + "a b\n", 45 }, 46 { 47 []string{"mongodb/1:foo", "mongodb/0:"}, 48 commonArgs + "ubuntu@dummyenv-2.dns:foo ubuntu@dummyenv-1.dns:\n", 49 }, 50 } 51 52 func (s *SCPSuite) TestSCPCommand(c *gc.C) { 53 m := s.makeMachines(3, c, true) 54 ch := coretesting.Charms.Dir("dummy") 55 curl := charm.MustParseURL( 56 fmt.Sprintf("local:quantal/%s-%d", ch.Meta().Name, ch.Revision()), 57 ) 58 bundleURL, err := url.Parse("http://bundles.testing.invalid/dummy-1") 59 c.Assert(err, gc.IsNil) 60 dummy, err := s.State.AddCharm(ch, curl, bundleURL, "dummy-1-sha256") 61 c.Assert(err, gc.IsNil) 62 srv := s.AddTestingService(c, "mysql", dummy) 63 s.addUnit(srv, m[0], c) 64 65 srv = s.AddTestingService(c, "mongodb", dummy) 66 s.addUnit(srv, m[1], c) 67 s.addUnit(srv, m[2], c) 68 69 for _, t := range scpTests { 70 c.Logf("testing juju scp %s", t.args) 71 ctx := coretesting.Context(c) 72 code := cmd.Main(&SCPCommand{}, ctx, t.args) 73 c.Check(code, gc.Equals, 0) 74 // we suppress stdout from scp 75 c.Check(ctx.Stderr.(*bytes.Buffer).String(), gc.Equals, "") 76 c.Check(ctx.Stdout.(*bytes.Buffer).String(), gc.Equals, "") 77 data, err := ioutil.ReadFile(filepath.Join(s.bin, "scp.args")) 78 c.Assert(err, gc.IsNil) 79 c.Assert(string(data), gc.Equals, t.result) 80 } 81 }