func (s *createUserSuite) TestAddSudoUser(c *check.C) { mockSudoers := c.MkDir() restorer := osutil.MockSudoersDotD(mockSudoers) defer restorer() err := osutil.AddUser("karl.sagan", &osutil.AddUserOptions{ Gecos: "my gecos", Sudoer: true, ExtraUsers: true, }) c.Assert(err, check.IsNil) c.Check(s.mockAddUser.Calls(), check.DeepEquals, [][]string{ {"adduser", "--force-badname", "--gecos", "my gecos", "--disabled-password", "--extrausers", "karl.sagan"}, }) fs, _ := filepath.Glob(filepath.Join(mockSudoers, "*")) c.Assert(fs, check.HasLen, 1) c.Assert(filepath.Base(fs[0]), check.Equals, "create-user-karl%2Esagan") bs, err := ioutil.ReadFile(fs[0]) c.Assert(err, check.IsNil) c.Check(string(bs), check.Equals, ` # Created by snap create-user # User rules for karl.sagan karl.sagan ALL=(ALL) NOPASSWD:ALL `) }
func (s *createUserSuite) TestAddUserSSHKeys(c *check.C) { err := osutil.AddUser("karl.sagan", &osutil.AddUserOptions{ SSHKeys: []string{"ssh-key1", "ssh-key2"}, }) c.Assert(err, check.IsNil) sshKeys, err := ioutil.ReadFile(filepath.Join(s.mockHome, ".ssh", "authorized_keys")) c.Assert(err, check.IsNil) c.Check(string(sshKeys), check.Equals, "ssh-key1\nssh-key2") }
func (s *createUserSuite) TestAddUserExtraUsersTrue(c *check.C) { err := osutil.AddUser("lakatos", &osutil.AddUserOptions{ Gecos: "my gecos", ExtraUsers: true, }) c.Assert(err, check.IsNil) c.Check(s.mockAddUser.Calls(), check.DeepEquals, [][]string{ {"adduser", "--force-badname", "--gecos", "my gecos", "--disabled-password", "--extrausers", "lakatos"}, }) }
func (s *createUserSuite) TestAddUserWithPassword(c *check.C) { mockSudoers := c.MkDir() restorer := osutil.MockSudoersDotD(mockSudoers) defer restorer() err := osutil.AddUser("karl.sagan", &osutil.AddUserOptions{ Gecos: "my gecos", Password: "******", }) c.Assert(err, check.IsNil) c.Check(s.mockAddUser.Calls(), check.DeepEquals, [][]string{ {"adduser", "--force-badname", "--gecos", "my gecos", "--disabled-password", "karl.sagan"}, }) c.Check(s.mockUserMod.Calls(), check.DeepEquals, [][]string{ {"usermod", "--password", "$6$salt$hash", "karl.sagan"}, }) }
func (s *createUserSuite) TestAddUserInvalidUsername(c *check.C) { err := osutil.AddUser("k!", nil) c.Assert(err, check.ErrorMatches, `cannot add user "k!": name contains invalid characters`) }