def track_create(self): """ Update expected state for staged user creation """ self.attrs = dict( dn=self.dn, uid=[self.uid], givenname=[self.givenname], sn=[self.sn], homedirectory=[u'/home/%s' % self.uid], displayname=[u'%s %s' % (self.givenname, self.sn)], cn=[u'%s %s' % (self.givenname, self.sn)], initials=[u'%s%s' % (self.givenname[0], self.sn[0])], objectclass=objectclasses.user_base, description=[u'__no_upg__'], ipauniqueid=[u'autogenerate'], uidnumber=[u'-1'], gidnumber=[u'-1'], krbprincipalname=[u'%s@%s' % (self.uid, self.api.env.realm)], krbcanonicalname=[u'%s@%s' % (self.uid, self.api.env.realm)], mail=[u'%s@%s' % (self.uid, self.api.env.domain)], gecos=[u'%s %s' % (self.givenname, self.sn)], loginshell=[u'/bin/sh'], has_keytab=False, has_password=False, nsaccountlock=[u'true'], ) for key in self.kwargs: if key == u'krbprincipalname': self.attrs[key] = [ u'%s@%s' % ((self.kwargs[key].split('@'))[0].lower(), (self.kwargs[key].split('@'))[1]) ] self.attrs[u'krbcanonicalname'] = self.attrs[key] elif key == u'manager': self.attrs[key] = [self.kwargs[key]] elif key == u'ipasshpubkey': self.attrs[u'sshpubkeyfp'] = [sshpubkeyfp] self.attrs[key] = [self.kwargs[key]] elif key == u'random' or key == u'userpassword': self.attrs[u'krbextradata'] = [Fuzzy(type=bytes)] self.attrs[u'krbpasswordexpiration'] = [ fuzzy_dergeneralizedtime ] self.attrs[u'krblastpwdchange'] = [fuzzy_dergeneralizedtime] self.attrs[u'krbprincipalkey'] = [Fuzzy(type=bytes)] self.attrs[u'userpassword'] = [Fuzzy(type=bytes)] self.attrs[u'has_keytab'] = True self.attrs[u'has_password'] = True if key == u'random': self.attrs[u'randompassword'] = fuzzy_string else: self.attrs[key] = [self.kwargs[key]] self.exists = True
def test_create_with_random_passwd(self): """ Create user with random password """ testuser = UserTracker(name=u'tuser1', givenname=u'Test', sn=u'Tuser1', random=True) testuser.track_create() testuser.attrs.update(randompassword=fuzzy_password, has_keytab=True, has_password=True, krbextradata=[Fuzzy(type=bytes)], krbpasswordexpiration=[fuzzy_dergeneralizedtime], krblastpwdchange=[fuzzy_dergeneralizedtime]) command = testuser.make_create_command() result = command() testuser.check_create(result) testuser.delete()