github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/testing/factory/factory_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package factory_test
     5  
     6  import (
     7  	"fmt"
     8  	"regexp"
     9  	"time"
    10  
    11  	"github.com/juju/errors"
    12  	"github.com/juju/names"
    13  	jc "github.com/juju/testing/checkers"
    14  	"github.com/juju/utils"
    15  	gc "gopkg.in/check.v1"
    16  	"gopkg.in/juju/charm.v4"
    17  
    18  	"github.com/juju/juju/instance"
    19  	"github.com/juju/juju/state"
    20  	statetesting "github.com/juju/juju/state/testing"
    21  	"github.com/juju/juju/testing"
    22  	"github.com/juju/juju/testing/factory"
    23  )
    24  
    25  type factorySuite struct {
    26  	statetesting.StateSuite
    27  	Factory *factory.Factory
    28  }
    29  
    30  var _ = gc.Suite(&factorySuite{})
    31  
    32  func (s *factorySuite) SetUpTest(c *gc.C) {
    33  	s.Policy = new(statetesting.MockPolicy)
    34  	s.StateSuite.SetUpTest(c)
    35  	s.Factory = factory.NewFactory(s.State)
    36  }
    37  
    38  func (s *factorySuite) TestMakeUserNil(c *gc.C) {
    39  	user := s.Factory.MakeUser(c, nil)
    40  	c.Assert(user.IsDisabled(), jc.IsFalse)
    41  
    42  	saved, err := s.State.User(user.UserTag())
    43  	c.Assert(err, jc.ErrorIsNil)
    44  	c.Assert(saved.Tag(), gc.Equals, user.Tag())
    45  	c.Assert(saved.Name(), gc.Equals, user.Name())
    46  	c.Assert(saved.DisplayName(), gc.Equals, user.DisplayName())
    47  	c.Assert(saved.CreatedBy(), gc.Equals, user.CreatedBy())
    48  	c.Assert(saved.DateCreated(), gc.Equals, user.DateCreated())
    49  	c.Assert(saved.LastLogin(), gc.Equals, user.LastLogin())
    50  	c.Assert(saved.IsDisabled(), gc.Equals, user.IsDisabled())
    51  }
    52  
    53  func (s *factorySuite) TestMakeUserParams(c *gc.C) {
    54  	username := "bob"
    55  	displayName := "Bob the Builder"
    56  	creator := s.Factory.MakeUser(c, nil)
    57  	password := "sekrit"
    58  	user := s.Factory.MakeUser(c, &factory.UserParams{
    59  		Name:        username,
    60  		DisplayName: displayName,
    61  		Creator:     creator.Tag(),
    62  		Password:    password,
    63  	})
    64  	c.Assert(user.IsDisabled(), jc.IsFalse)
    65  	c.Assert(user.Name(), gc.Equals, username)
    66  	c.Assert(user.DisplayName(), gc.Equals, displayName)
    67  	c.Assert(user.CreatedBy(), gc.Equals, creator.UserTag().Name())
    68  	c.Assert(user.PasswordValid(password), jc.IsTrue)
    69  
    70  	saved, err := s.State.User(user.UserTag())
    71  	c.Assert(err, jc.ErrorIsNil)
    72  	c.Assert(saved.Tag(), gc.Equals, user.Tag())
    73  	c.Assert(saved.Name(), gc.Equals, user.Name())
    74  	c.Assert(saved.DisplayName(), gc.Equals, user.DisplayName())
    75  	c.Assert(saved.CreatedBy(), gc.Equals, user.CreatedBy())
    76  	c.Assert(saved.DateCreated(), gc.Equals, user.DateCreated())
    77  	c.Assert(saved.LastLogin(), gc.Equals, user.LastLogin())
    78  	c.Assert(saved.IsDisabled(), gc.Equals, user.IsDisabled())
    79  
    80  	_, err = s.State.EnvironmentUser(user.UserTag())
    81  	c.Assert(err, jc.ErrorIsNil)
    82  }
    83  
    84  func (s *factorySuite) TestMakeUserInvalidCreator(c *gc.C) {
    85  	invalidFunc := func() {
    86  		s.Factory.MakeUser(c, &factory.UserParams{
    87  			Name:        "bob",
    88  			DisplayName: "Bob",
    89  			Creator:     names.NewMachineTag("0"),
    90  			Password:    "bob",
    91  		})
    92  	}
    93  
    94  	c.Assert(invalidFunc, gc.PanicMatches, `interface conversion: .*`)
    95  	saved, err := s.State.User(names.NewUserTag("bob"))
    96  	c.Assert(err, jc.Satisfies, errors.IsNotFound)
    97  	c.Assert(saved, gc.IsNil)
    98  }
    99  
   100  func (s *factorySuite) TestMakeUserNoEnvUser(c *gc.C) {
   101  	username := "bob"
   102  	displayName := "Bob the Builder"
   103  	creator := names.NewLocalUserTag("eric")
   104  	password := "sekrit"
   105  	user := s.Factory.MakeUser(c, &factory.UserParams{
   106  		Name:        username,
   107  		DisplayName: displayName,
   108  		Creator:     creator,
   109  		Password:    password,
   110  		NoEnvUser:   true,
   111  	})
   112  
   113  	_, err := s.State.User(user.UserTag())
   114  	c.Assert(err, jc.ErrorIsNil)
   115  	_, err = s.State.EnvironmentUser(user.UserTag())
   116  	c.Assert(err, jc.Satisfies, errors.IsNotFound)
   117  }
   118  
   119  func (s *factorySuite) TestMakeEnvUserNil(c *gc.C) {
   120  	envUser := s.Factory.MakeEnvUser(c, nil)
   121  	saved, err := s.State.EnvironmentUser(envUser.UserTag())
   122  	c.Assert(err, jc.ErrorIsNil)
   123  	c.Assert(saved.EnvironmentTag().Id(), gc.Equals, envUser.EnvironmentTag().Id())
   124  	c.Assert(saved.UserName(), gc.Equals, envUser.UserName())
   125  	c.Assert(saved.DisplayName(), gc.Equals, envUser.DisplayName())
   126  	c.Assert(saved.CreatedBy(), gc.Equals, envUser.CreatedBy())
   127  }
   128  
   129  func (s *factorySuite) TestMakeEnvUserPartialParams(c *gc.C) {
   130  	s.Factory.MakeUser(c, &factory.UserParams{Name: "foobar123", NoEnvUser: true})
   131  	envUser := s.Factory.MakeEnvUser(c, &factory.EnvUserParams{
   132  		User: "foobar123"})
   133  
   134  	saved, err := s.State.EnvironmentUser(envUser.UserTag())
   135  	c.Assert(err, jc.ErrorIsNil)
   136  	c.Assert(saved.EnvironmentTag().Id(), gc.Equals, envUser.EnvironmentTag().Id())
   137  	c.Assert(saved.UserName(), gc.Equals, "foobar123@local")
   138  	c.Assert(saved.DisplayName(), gc.Equals, envUser.DisplayName())
   139  	c.Assert(saved.CreatedBy(), gc.Equals, envUser.CreatedBy())
   140  }
   141  
   142  func (s *factorySuite) TestMakeEnvUserParams(c *gc.C) {
   143  	s.Factory.MakeUser(c, &factory.UserParams{Name: "createdby"})
   144  	s.Factory.MakeUser(c, &factory.UserParams{
   145  		Name:      "foobar",
   146  		Creator:   names.NewUserTag("createdby"),
   147  		NoEnvUser: true,
   148  	})
   149  	envUser := s.Factory.MakeEnvUser(c, &factory.EnvUserParams{
   150  		User:      "foobar",
   151  		CreatedBy: names.NewUserTag("createdby"),
   152  	})
   153  
   154  	saved, err := s.State.EnvironmentUser(envUser.UserTag())
   155  	c.Assert(err, jc.ErrorIsNil)
   156  	c.Assert(saved.EnvironmentTag().Id(), gc.Equals, envUser.EnvironmentTag().Id())
   157  	c.Assert(saved.UserName(), gc.Equals, "foobar@local")
   158  	c.Assert(saved.CreatedBy(), gc.Equals, "createdby@local")
   159  }
   160  
   161  func (s *factorySuite) TestMakeEnvUserInvalidCreatedBy(c *gc.C) {
   162  	invalidFunc := func() {
   163  		s.Factory.MakeEnvUser(c, &factory.EnvUserParams{
   164  			User:      "bob",
   165  			CreatedBy: names.NewMachineTag("0"),
   166  		})
   167  	}
   168  
   169  	c.Assert(invalidFunc, gc.PanicMatches, `interface conversion: .*`)
   170  	saved, err := s.State.EnvironmentUser(names.NewLocalUserTag("bob"))
   171  	c.Assert(err, jc.Satisfies, errors.IsNotFound)
   172  	c.Assert(saved, gc.IsNil)
   173  }
   174  
   175  func (s *factorySuite) TestMakeEnvUserNonLocalUser(c *gc.C) {
   176  	creator := s.Factory.MakeUser(c, &factory.UserParams{Name: "created-by"})
   177  	envUser := s.Factory.MakeEnvUser(c, &factory.EnvUserParams{
   178  		User:      "foobar@ubuntuone",
   179  		CreatedBy: creator.UserTag(),
   180  	})
   181  
   182  	saved, err := s.State.EnvironmentUser(envUser.UserTag())
   183  	c.Assert(err, jc.ErrorIsNil)
   184  	c.Assert(saved.EnvironmentTag().Id(), gc.Equals, envUser.EnvironmentTag().Id())
   185  	c.Assert(saved.UserName(), gc.Equals, "foobar@ubuntuone")
   186  	c.Assert(saved.CreatedBy(), gc.Equals, creator.UserTag().Username())
   187  }
   188  
   189  func (s *factorySuite) TestMakeMachineNil(c *gc.C) {
   190  	machine, password := s.Factory.MakeMachineReturningPassword(c, nil)
   191  	c.Assert(machine, gc.NotNil)
   192  
   193  	saved, err := s.State.Machine(machine.Id())
   194  	c.Assert(err, jc.ErrorIsNil)
   195  
   196  	c.Assert(saved.Series(), gc.Equals, machine.Series())
   197  	c.Assert(saved.Id(), gc.Equals, machine.Id())
   198  	c.Assert(saved.Series(), gc.Equals, machine.Series())
   199  	c.Assert(saved.Tag(), gc.Equals, machine.Tag())
   200  	c.Assert(saved.Life(), gc.Equals, machine.Life())
   201  	c.Assert(saved.Jobs(), gc.DeepEquals, machine.Jobs())
   202  	c.Assert(saved.PasswordValid(password), jc.IsTrue)
   203  	savedInstanceId, err := saved.InstanceId()
   204  	c.Assert(err, jc.ErrorIsNil)
   205  	machineInstanceId, err := machine.InstanceId()
   206  	c.Assert(err, jc.ErrorIsNil)
   207  	c.Assert(savedInstanceId, gc.Equals, machineInstanceId)
   208  	c.Assert(saved.Clean(), gc.Equals, machine.Clean())
   209  }
   210  
   211  func (s *factorySuite) TestMakeMachine(c *gc.C) {
   212  	series := "quantal"
   213  	jobs := []state.MachineJob{state.JobManageEnviron}
   214  	password, err := utils.RandomPassword()
   215  	c.Assert(err, jc.ErrorIsNil)
   216  	nonce := "some-nonce"
   217  	id := instance.Id("some-id")
   218  
   219  	machine, pwd := s.Factory.MakeMachineReturningPassword(c, &factory.MachineParams{
   220  		Series:     series,
   221  		Jobs:       jobs,
   222  		Password:   password,
   223  		Nonce:      nonce,
   224  		InstanceId: id,
   225  	})
   226  	c.Assert(machine, gc.NotNil)
   227  	c.Assert(pwd, gc.Equals, password)
   228  
   229  	c.Assert(machine.Series(), gc.Equals, series)
   230  	c.Assert(machine.Jobs(), gc.DeepEquals, jobs)
   231  	machineInstanceId, err := machine.InstanceId()
   232  	c.Assert(err, jc.ErrorIsNil)
   233  	c.Assert(machineInstanceId, gc.Equals, id)
   234  	c.Assert(machine.CheckProvisioned(nonce), jc.IsTrue)
   235  	c.Assert(machine.PasswordValid(password), jc.IsTrue)
   236  
   237  	saved, err := s.State.Machine(machine.Id())
   238  	c.Assert(err, jc.ErrorIsNil)
   239  
   240  	c.Assert(saved.Id(), gc.Equals, machine.Id())
   241  	c.Assert(saved.Series(), gc.Equals, machine.Series())
   242  	c.Assert(saved.Tag(), gc.Equals, machine.Tag())
   243  	c.Assert(saved.Life(), gc.Equals, machine.Life())
   244  	c.Assert(saved.Jobs(), gc.DeepEquals, machine.Jobs())
   245  	savedInstanceId, err := saved.InstanceId()
   246  	c.Assert(err, jc.ErrorIsNil)
   247  	c.Assert(savedInstanceId, gc.Equals, machineInstanceId)
   248  	c.Assert(saved.Clean(), gc.Equals, machine.Clean())
   249  }
   250  
   251  func (s *factorySuite) TestMakeCharmNil(c *gc.C) {
   252  	charm := s.Factory.MakeCharm(c, nil)
   253  	c.Assert(charm, gc.NotNil)
   254  
   255  	saved, err := s.State.Charm(charm.URL())
   256  	c.Assert(err, jc.ErrorIsNil)
   257  
   258  	c.Assert(saved.URL(), gc.DeepEquals, charm.URL())
   259  	c.Assert(saved.Meta(), gc.DeepEquals, charm.Meta())
   260  	c.Assert(saved.StoragePath(), gc.Equals, charm.StoragePath())
   261  	c.Assert(saved.BundleSha256(), gc.Equals, charm.BundleSha256())
   262  }
   263  
   264  func (s *factorySuite) TestMakeCharm(c *gc.C) {
   265  	series := "quantal"
   266  	name := "wordpress"
   267  	revision := 13
   268  	url := fmt.Sprintf("cs:%s/%s-%d", series, name, revision)
   269  	ch := s.Factory.MakeCharm(c, &factory.CharmParams{
   270  		Name: name,
   271  		URL:  url,
   272  	})
   273  	c.Assert(ch, gc.NotNil)
   274  
   275  	c.Assert(ch.URL(), gc.DeepEquals, charm.MustParseURL(url))
   276  
   277  	saved, err := s.State.Charm(ch.URL())
   278  	c.Assert(err, jc.ErrorIsNil)
   279  
   280  	c.Assert(saved.URL(), gc.DeepEquals, ch.URL())
   281  	c.Assert(saved.Meta(), gc.DeepEquals, ch.Meta())
   282  	c.Assert(saved.Meta().Name, gc.Equals, name)
   283  	c.Assert(saved.StoragePath(), gc.Equals, ch.StoragePath())
   284  	c.Assert(saved.BundleSha256(), gc.Equals, ch.BundleSha256())
   285  }
   286  
   287  func (s *factorySuite) TestMakeServiceNil(c *gc.C) {
   288  	service := s.Factory.MakeService(c, nil)
   289  	c.Assert(service, gc.NotNil)
   290  
   291  	saved, err := s.State.Service(service.Name())
   292  	c.Assert(err, jc.ErrorIsNil)
   293  
   294  	c.Assert(saved.Name(), gc.Equals, service.Name())
   295  	c.Assert(saved.Tag(), gc.Equals, service.Tag())
   296  	c.Assert(saved.Life(), gc.Equals, service.Life())
   297  }
   298  
   299  func (s *factorySuite) TestMakeService(c *gc.C) {
   300  	charm := s.Factory.MakeCharm(c, &factory.CharmParams{Name: "wordpress"})
   301  	creator := s.Factory.MakeUser(c, &factory.UserParams{Name: "bill"}).Tag()
   302  	service := s.Factory.MakeService(c, &factory.ServiceParams{
   303  		Charm:   charm,
   304  		Creator: creator,
   305  	})
   306  	c.Assert(service, gc.NotNil)
   307  
   308  	c.Assert(service.Name(), gc.Equals, "wordpress")
   309  	c.Assert(service.GetOwnerTag(), gc.Equals, creator.String())
   310  	curl, _ := service.CharmURL()
   311  	c.Assert(curl, gc.DeepEquals, charm.URL())
   312  
   313  	saved, err := s.State.Service(service.Name())
   314  	c.Assert(err, jc.ErrorIsNil)
   315  
   316  	c.Assert(saved.Name(), gc.Equals, service.Name())
   317  	c.Assert(saved.Tag(), gc.Equals, service.Tag())
   318  	c.Assert(saved.Life(), gc.Equals, service.Life())
   319  }
   320  
   321  func (s *factorySuite) TestMakeServiceInvalidCreator(c *gc.C) {
   322  	serviceName := "mysql"
   323  	invalidFunc := func() {
   324  		s.Factory.MakeService(c, &factory.ServiceParams{
   325  			Name:    serviceName,
   326  			Creator: names.NewMachineTag("0"),
   327  		})
   328  	}
   329  	c.Assert(invalidFunc, gc.PanicMatches, `interface conversion: .*`)
   330  	saved, err := s.State.Service(serviceName)
   331  	c.Assert(err, jc.Satisfies, errors.IsNotFound)
   332  	c.Assert(saved, gc.IsNil)
   333  }
   334  
   335  func (s *factorySuite) TestMakeUnitNil(c *gc.C) {
   336  	unit := s.Factory.MakeUnit(c, nil)
   337  	c.Assert(unit, gc.NotNil)
   338  
   339  	saved, err := s.State.Unit(unit.Name())
   340  	c.Assert(err, jc.ErrorIsNil)
   341  
   342  	c.Assert(saved.Name(), gc.Equals, unit.Name())
   343  	c.Assert(saved.ServiceName(), gc.Equals, unit.ServiceName())
   344  	c.Assert(saved.Series(), gc.Equals, unit.Series())
   345  	c.Assert(saved.Life(), gc.Equals, unit.Life())
   346  }
   347  
   348  func (s *factorySuite) TestMakeUnit(c *gc.C) {
   349  	service := s.Factory.MakeService(c, nil)
   350  	unit := s.Factory.MakeUnit(c, &factory.UnitParams{
   351  		Service:     service,
   352  		SetCharmURL: true,
   353  	})
   354  	c.Assert(unit, gc.NotNil)
   355  
   356  	c.Assert(unit.ServiceName(), gc.Equals, service.Name())
   357  
   358  	saved, err := s.State.Unit(unit.Name())
   359  	c.Assert(err, jc.ErrorIsNil)
   360  
   361  	c.Assert(saved.Name(), gc.Equals, unit.Name())
   362  	c.Assert(saved.ServiceName(), gc.Equals, unit.ServiceName())
   363  	c.Assert(saved.Series(), gc.Equals, unit.Series())
   364  	c.Assert(saved.Life(), gc.Equals, unit.Life())
   365  
   366  	serviceCharmURL, _ := service.CharmURL()
   367  	unitCharmURL, _ := saved.CharmURL()
   368  	c.Assert(unitCharmURL, gc.DeepEquals, serviceCharmURL)
   369  }
   370  
   371  func (s *factorySuite) TestMakeRelationNil(c *gc.C) {
   372  	relation := s.Factory.MakeRelation(c, nil)
   373  	c.Assert(relation, gc.NotNil)
   374  
   375  	saved, err := s.State.Relation(relation.Id())
   376  	c.Assert(err, jc.ErrorIsNil)
   377  
   378  	c.Assert(saved.Id(), gc.Equals, relation.Id())
   379  	c.Assert(saved.Tag(), gc.Equals, relation.Tag())
   380  	c.Assert(saved.Life(), gc.Equals, relation.Life())
   381  	c.Assert(saved.Endpoints(), gc.DeepEquals, relation.Endpoints())
   382  }
   383  
   384  func (s *factorySuite) TestMakeRelation(c *gc.C) {
   385  	s1 := s.Factory.MakeService(c, &factory.ServiceParams{
   386  		Name: "service1",
   387  		Charm: s.Factory.MakeCharm(c, &factory.CharmParams{
   388  			Name: "wordpress",
   389  		}),
   390  	})
   391  	e1, err := s1.Endpoint("db")
   392  	c.Assert(err, jc.ErrorIsNil)
   393  
   394  	s2 := s.Factory.MakeService(c, &factory.ServiceParams{
   395  		Name: "service2",
   396  		Charm: s.Factory.MakeCharm(c, &factory.CharmParams{
   397  			Name: "mysql",
   398  		}),
   399  	})
   400  	e2, err := s2.Endpoint("server")
   401  	c.Assert(err, jc.ErrorIsNil)
   402  
   403  	relation := s.Factory.MakeRelation(c, &factory.RelationParams{
   404  		Endpoints: []state.Endpoint{e1, e2},
   405  	})
   406  	c.Assert(relation, gc.NotNil)
   407  
   408  	saved, err := s.State.Relation(relation.Id())
   409  	c.Assert(err, jc.ErrorIsNil)
   410  
   411  	c.Assert(saved.Id(), gc.Equals, relation.Id())
   412  	c.Assert(saved.Tag(), gc.Equals, relation.Tag())
   413  	c.Assert(saved.Life(), gc.Equals, relation.Life())
   414  	c.Assert(saved.Endpoints(), gc.DeepEquals, relation.Endpoints())
   415  }
   416  
   417  func (s *factorySuite) TestMakeMetricNil(c *gc.C) {
   418  	metric := s.Factory.MakeMetric(c, nil)
   419  	c.Assert(metric, gc.NotNil)
   420  
   421  	saved, err := s.State.MetricBatch(metric.UUID())
   422  	c.Assert(err, jc.ErrorIsNil)
   423  
   424  	c.Assert(saved.UUID(), gc.Equals, metric.UUID())
   425  	c.Assert(saved.Unit(), gc.Equals, metric.Unit())
   426  	c.Assert(saved.Sent(), gc.Equals, metric.Sent())
   427  	c.Assert(saved.CharmURL(), gc.Equals, metric.CharmURL())
   428  	c.Assert(saved.Sent(), gc.Equals, metric.Sent())
   429  	c.Assert(saved.Metrics(), gc.HasLen, 1)
   430  	c.Assert(saved.Metrics()[0].Key, gc.Equals, metric.Metrics()[0].Key)
   431  	c.Assert(saved.Metrics()[0].Value, gc.Equals, metric.Metrics()[0].Value)
   432  	c.Assert(saved.Metrics()[0].Time.Equal(metric.Metrics()[0].Time), jc.IsTrue)
   433  }
   434  
   435  func (s *factorySuite) TestMakeMetric(c *gc.C) {
   436  	now := time.Now().Round(time.Second).UTC()
   437  	meteredCharm := s.Factory.MakeCharm(c, &factory.CharmParams{Name: "metered", URL: "cs:quantal/metered"})
   438  	meteredService := s.Factory.MakeService(c, &factory.ServiceParams{Charm: meteredCharm})
   439  	unit := s.Factory.MakeUnit(c, &factory.UnitParams{Service: meteredService, SetCharmURL: true})
   440  	metric := s.Factory.MakeMetric(c, &factory.MetricParams{
   441  		Unit:    unit,
   442  		Time:    &now,
   443  		Sent:    true,
   444  		Metrics: []state.Metric{{"pings", "1", now}},
   445  	})
   446  	c.Assert(metric, gc.NotNil)
   447  
   448  	saved, err := s.State.MetricBatch(metric.UUID())
   449  	c.Assert(err, jc.ErrorIsNil)
   450  
   451  	c.Assert(saved.UUID(), gc.Equals, metric.UUID())
   452  	c.Assert(saved.Unit(), gc.Equals, metric.Unit())
   453  	c.Assert(saved.CharmURL(), gc.Equals, metric.CharmURL())
   454  	c.Assert(metric.Sent(), jc.IsTrue)
   455  	c.Assert(saved.Sent(), jc.IsTrue)
   456  	c.Assert(saved.Metrics(), gc.HasLen, 1)
   457  	c.Assert(saved.Metrics()[0].Key, gc.Equals, "pings")
   458  	c.Assert(saved.Metrics()[0].Value, gc.Equals, "1")
   459  	c.Assert(saved.Metrics()[0].Time.Equal(now), jc.IsTrue)
   460  }
   461  
   462  func (s *factorySuite) TestMakeEnvironmentNil(c *gc.C) {
   463  	st := s.Factory.MakeEnvironment(c, nil)
   464  	defer st.Close()
   465  
   466  	env, err := st.Environment()
   467  	c.Assert(err, jc.ErrorIsNil)
   468  	re := regexp.MustCompile(`^testenv-\d+$`)
   469  	c.Assert(re.MatchString(env.Name()), jc.IsTrue)
   470  	c.Assert(env.UUID() == s.State.EnvironUUID(), jc.IsFalse)
   471  	origEnv, err := s.State.Environment()
   472  	c.Assert(err, jc.ErrorIsNil)
   473  	c.Assert(env.Owner(), gc.Equals, origEnv.Owner())
   474  
   475  	cfg, err := st.EnvironConfig()
   476  	c.Assert(err, jc.ErrorIsNil)
   477  	c.Assert(cfg.AllAttrs()["default-series"], gc.Equals, "trusty")
   478  }
   479  
   480  func (s *factorySuite) TestMakeEnvironment(c *gc.C) {
   481  	owner := s.Factory.MakeUser(c, &factory.UserParams{
   482  		Name: "owner",
   483  	})
   484  	params := &factory.EnvParams{
   485  		Name:        "foo",
   486  		Owner:       owner.UserTag(),
   487  		ConfigAttrs: testing.Attrs{"default-series": "precise"},
   488  	}
   489  
   490  	st := s.Factory.MakeEnvironment(c, params)
   491  	defer st.Close()
   492  
   493  	env, err := st.Environment()
   494  	c.Assert(err, jc.ErrorIsNil)
   495  	c.Assert(env.Name(), gc.Equals, "foo")
   496  	c.Assert(env.UUID() == s.State.EnvironUUID(), jc.IsFalse)
   497  	c.Assert(env.Owner(), gc.Equals, owner.UserTag())
   498  
   499  	cfg, err := st.EnvironConfig()
   500  	c.Assert(err, jc.ErrorIsNil)
   501  	c.Assert(cfg.AllAttrs()["default-series"], gc.Equals, "precise")
   502  }