func (*EnvironsCertSuite) TestGenerateCertificate(c *C) { defer testing.MakeSampleHome(c).Restore() env, err := NewFromName(testing.SampleEnvName) c.Assert(err, IsNil) var savedCerts testCerts writeFunc := func(name string, cert, key []byte) error { savedCerts.cert = cert savedCerts.key = key return nil } generateCertificate(env, writeFunc) // Check that the cert and key have been set correctly in the configuration cfgCertPEM, cfgCertOK := env.Config().CACert() cfgKeyPEM, cfgKeyOK := env.Config().CAPrivateKey() c.Assert(cfgCertOK, Equals, true) c.Assert(cfgKeyOK, Equals, true) c.Assert(cfgCertPEM, DeepEquals, savedCerts.cert) c.Assert(cfgKeyPEM, DeepEquals, savedCerts.key) // Check the common name of the generated cert caCert, _, err := cert.ParseCertAndKey(cfgCertPEM, cfgKeyPEM) c.Assert(err, IsNil) c.Assert(caCert.Subject.CommonName, Equals, `juju-generated CA for environment `+testing.SampleEnvName) }
func (suite) TestConfigPerm(c *C) { defer testing.MakeSampleHome(c).Restore() path := testing.HomePath(".juju") info, err := os.Lstat(path) c.Assert(err, IsNil) oldPerm := info.Mode().Perm() env := ` environments: only: type: dummy state-server: false authorized-keys: i-am-a-key ` outfile, err := environs.WriteEnvirons("", env) c.Assert(err, IsNil) info, err = os.Lstat(outfile) c.Assert(err, IsNil) c.Assert(info.Mode().Perm(), Equals, os.FileMode(0600)) info, err = os.Lstat(filepath.Dir(outfile)) c.Assert(err, IsNil) c.Assert(info.Mode().Perm(), Equals, oldPerm) }
func (*NewConnSuite) TestNewConnFromNameNotSetGetsDefault(c *C) { defer coretesting.MakeSampleHome(c).Restore() bootstrapEnv(c, "") conn, err := juju.NewConnFromName("") c.Assert(err, IsNil) defer conn.Close() c.Assert(conn.Environ.Name(), Equals, coretesting.SampleEnvName) }
func (*NewConnSuite) TestConnMultipleCloseOk(c *C) { defer coretesting.MakeSampleHome(c).Restore() bootstrapEnv(c, "") // Error return from here is tested in TestNewConnFromNameNotSetGetsDefault. conn, _ := juju.NewConnFromName("") conn.Close() conn.Close() conn.Close() }
func (*EnvironsCertSuite) TestEnsureCertificateExisting(c *C) { defer testing.MakeSampleHome(c).Restore() env, err := environs.NewFromName(testing.SampleEnvName) c.Assert(err, IsNil) writeCalled := false created, err := environs.EnsureCertificate(env, func(name string, cert, key []byte) error { writeCalled = true return nil }) c.Assert(err, IsNil) c.Assert(created, Equals, environs.CertExists) c.Assert(writeCalled, Equals, false) }
func (*NewConnSuite) TestNewConnFromNameGetUnbootstrapped(c *C) { defer coretesting.MakeSampleHome(c).Restore() _, err := juju.NewConnFromName("") c.Assert(err, ErrorMatches, "dummy environment not bootstrapped") }
func (suite *PluginSuite) SetUpTest(c *C) { suite.LoggingSuite.SetUpTest(c) suite.oldPath = os.Getenv("PATH") suite.home = testing.MakeSampleHome(c) os.Setenv("PATH", "/bin:"+testing.HomePath()) }
func (suite *HelpToolSuite) SetUpTest(c *C) { suite.home = testing.MakeSampleHome(c) }
func (s *MainSuite) TestRunMain(c *C) { defer testing.MakeSampleHome(c).Restore() // The test array structure needs to be inline here as some of the // expected values below use deployHelpText(). This constructs the deploy // command and runs gets the help for it. When the deploy command is // setting the flags (which is needed for the help text) it is accessing // config.JujuHome(), which panics if SetJujuHome has not been called. // The FakeHome from testing does this. for i, t := range []struct { summary string args []string code int out string }{{ summary: "no params shows help", args: []string{}, code: 0, out: strings.TrimLeft(helpBasics, "\n"), }, { summary: "juju help is the same as juju", args: []string{"help"}, code: 0, out: strings.TrimLeft(helpBasics, "\n"), }, { summary: "juju --help works too", args: []string{"--help"}, code: 0, out: strings.TrimLeft(helpBasics, "\n"), }, { summary: "juju help basics is the same as juju", args: []string{"help", "basics"}, code: 0, out: strings.TrimLeft(helpBasics, "\n"), }, { summary: "juju help foo doesn't exist", args: []string{"help", "foo"}, code: 1, out: "error: unknown command or topic for foo\n", }, { summary: "juju help deploy shows the default help without global options", args: []string{"help", "deploy"}, code: 0, out: deployHelpText(), }, { summary: "juju --help deploy shows the same help as 'help deploy'", args: []string{"--help", "deploy"}, code: 0, out: deployHelpText(), }, { summary: "juju deploy --help shows the same help as 'help deploy'", args: []string{"deploy", "--help"}, code: 0, out: deployHelpText(), }, { summary: "unknown command", args: []string{"discombobulate"}, code: 1, out: "error: unrecognized command: juju discombobulate\n", }, { summary: "unknown option before command", args: []string{"--cheese", "bootstrap"}, code: 2, out: "error: flag provided but not defined: --cheese\n", }, { summary: "unknown option after command", args: []string{"bootstrap", "--cheese"}, code: 2, out: "error: flag provided but not defined: --cheese\n", }, { summary: "known option, but specified before command", args: []string{"--environment", "blah", "bootstrap"}, code: 2, out: "error: flag provided but not defined: --environment\n", }, { summary: "juju sync-tools registered properly", args: []string{"sync-tools", "--help"}, code: 0, out: syncToolsHelpText(), }, { summary: "check version command registered properly", args: []string{"version"}, code: 0, out: version.Current.String() + "\n", }, } { c.Logf("test %d: %s", i, t.summary) out := badrun(c, t.code, t.args...) c.Assert(out, Equals, t.out) } }