示例#1
0
 def __testuser(self):
     uname = '00000000%s' % randomName(5)
     self.users.append(uname)
     try:
         self.conn.newuser(uname, randomName(20))
     except ldb.LdbError:
         pass # Ignore password issues
     return uname
示例#2
0
    def test_delegation(self):
        fzone_name = ('00000000.%s.com' % randomName(10)).lower()
        create_zone(self.creds.get_domain(), fzone_name, self.creds.get_username(), self.creds.get_password())
        self.zones.append(fzone_name)
        self.__open_dns()
        self.press('Tab')
        for _ in range(0, 2):
            self.press('Down')
        self.press('Space') # Expand Forward Lookup Zones
        self.__select_zone(fzone_name)

        ### Create a delegation ###
        self.press('BTab')
        self.press('Enter') # Action
        for _ in range(0, 3):
            self.press('Down')
        self.assertSeen('New Delegation...')
        self.press('Enter') # New Delegation
        self.assertSeen('New Delegation Wizard')
        dname = randomName(10)
        self.press(dname)
        self.press('Tab')
        self.press('Enter') # Next
        self.assertSeen('Specify the names and IP addresses of the DNS servers')
        self.press('Tab')
        self.press('Enter') # Add
        self.assertSeen('New Name Server Record')
        self.press(self.creds.get_domain())
        self.press('Tab')
        self.press('Enter') # Resolve
        for _ in range(0, 3):
            self.press('Tab')
        self.press('Enter') # OK
        for _ in range(0, 4):
            self.press('Tab')
        self.press('Enter') # Finish
        self.assertSeen(dname)

        ### Validate new delegation ###
        fqdn = '%s.%s' % (dname, fzone_name)
        self.press('Enter') # Properties
        self.assertSeen('%s Properties' % fqdn)
        self.press('BTab')
        self.press('Enter') # Cancel

        ### Delete the new delegation ###
        for _ in range(0, 2):
            self.press('Tab')
        self.press('Enter') # Action
        self.assertSeen('Delete')
        self.press('Enter') # Delete
        self.assertSeen('Do you want to delete the record %s from the server?' % fqdn)
        self.press('Enter') # Yes
        self.assertSeen('Record deleted successfully')
        self.press('Enter') # Ok
        sleep(3)
        self.assertNotSeen(dname)
示例#3
0
    def test_create_delete_txt_record(self):
        fzone_name = ('00000000.%s.com' % randomName(10)).lower()
        create_zone(self.creds.get_domain(), fzone_name, self.creds.get_username(), self.creds.get_password())
        self.zones.append(fzone_name)
        self.__open_dns()
        self.press('Tab')
        for _ in range(0, 2):
            self.press('Down')
        self.press('Space') # Expand Forward Lookup Zones
        self.__select_zone(fzone_name)

        ### Create the TXT record ###
        self.press('BTab')
        self.press('Enter') # Action
        self.assertSeen('Other New Records...')
        for _ in range(0, 4):
            self.press('Down')
        self.press('Enter') # Other New Records
        self.assertSeen('New Resource Record Type')
        for _ in range(0, 5):
            self.press('Down') # Text (TXT)
        self.press('Tab')
        self.press('Enter') # Create Record
        self.assertSeen('Record name')
        self.press('Tab')
        rname = randomName(10)
        self.press(rname)
        self.press('Tab')
        rtext = ' '.join([randomName(5) for _ in range(0, 4)])
        self.press(rtext)
        self.press('Tab')
        self.press('Enter') # OK
        for _ in range(0, 2):
            self.press('Tab')
        self.press('Enter') # Done
        self.assertSeen('Record added successfully')
        self.press('Enter') # Ok

        ### Verify the TXT record ###
        self.press('Enter') # Record Properties
        self.assertSeen('%s Properties' % rname)
        self.assertSeen(rtext)
        for _ in range(0, 3):
            self.press('Tab')
        self.press('Enter') # Cancel

        ### Delete the TXT record ###
        for _ in range(0, 2):
            self.press('Tab')
        self.press('Enter') # Action
        self.assertSeen('Delete')
        self.press('Enter') # Delete
        self.assertSeen('Do you want to delete the record %s from the server?' % rname)
        self.press('Enter') # Yes
        self.assertSeen('Record deleted successfully')
        self.press('Enter') # Ok
        self.assertNotSeen(rname)
示例#4
0
    def test_create_delete_gpo(self):
        self.__open_gpmc()

        ### Create a GPO ###
        self.press('Down')
        self.press('BTab')
        self.press('Enter')  # Action menu
        self.assertSeen('Create a GPO in this domain, and Link it here...')
        self.press('Enter')
        self.assertSeen('New GPO')
        gpo_name = '00000000%s' % randomName(10)
        self.press(gpo_name)
        self.press('Tab')
        self.press('Enter')  # OK

        ### Verify creation ###
        self.assertSeen(gpo_name)
        sleep(3)
        self.press('Tab')
        self.__select_gpo_by_name(gpo_name)

        ### Delete the GPO ###
        self.press('BTab')
        self.press('Enter')  # Action menu
        self.press('Down')
        self.press('Enter')  # Delete
        self.assertSeen('Do you want to delete this GPO and all links')
        self.press('Enter')  # Yes
        self.assertNotSeen(gpo_name)
示例#5
0
    def test_create_delete_mx_record(self):
        fzone_name = ('00000000.%s.com' % randomName(10)).lower()
        create_zone(self.creds.get_domain(), fzone_name, self.creds.get_username(), self.creds.get_password())
        self.zones.append(fzone_name)
        self.__open_dns()
        self.press('Tab')
        for _ in range(0, 2):
            self.press('Down')
        self.press('Space') # Expand Forward Lookup Zones
        self.__select_zone(fzone_name)

        ### Create MX record ###
        self.press('BTab')
        self.press('Enter') # Action
        self.assertSeen('│New Mail Exchanger \(MX\)\.\.\.\s*│')
        for _ in range(0, 2):
            self.press('Down')
        self.press('Enter') # New Mail Exchanger
        self.assertSeen('New Resource Record')
        self.press('Tab')
        mx = '00000000%s' % randomName(10)
        self.press(mx)
        self.press('Tab')
        self.press(self.creds.get_domain().lower())
        for _ in range(0, 2):
            self.press('Tab')
        self.press('Enter') # OK
        self.assertSeen('Record added successfully')
        self.press('Enter') # Ok
        self.assertSeen('│%s\s*│Mail Exchanger \(MX\)\s*│\[10\] %s\.\s*│' % (mx, self.creds.get_domain().lower()))

        ### Delete MX record ###
        self.press('Up')
        self.press('Down')
        for _ in range(0, 2):
            self.press('Tab')
        self.press('Enter') # Action
        self.assertSeen('│Delete\s*│')
        self.press('Enter') # Delete
        self.assertSeen('Do you want to delete the record %s from the server\?' % mx)
        self.press('Enter') # Yes
        self.assertSeen('Record deleted successfully')
        self.press('Enter') # Ok
        sleep(3)
        self.assertNotSeen(mx)
示例#6
0
    def test_create_delete_forward_zone(self):
        self.__open_dns()
        self.press('Tab')
        for _ in range(0, 2):
            self.press('Down')

        ### Create a forward lookup zone ###
        fzone_name = ('00000000.%s.com' % randomName(10)).lower()
        self.press('BTab')
        self.press('Enter') # Action
        self.assertSeen('New Zone...')
        self.press('Enter')
        self.assertSeen('New Zone Wizard')
        self.press(fzone_name)
        self.press('Tab')
        self.press('Enter') # Finish
        self.assertSeen('Zone %s created successfully' % fzone_name)
        self.press('Enter') # Ok
        for _ in range(0, 3):
            self.press('Tab')
        self.press('Space') # Expand Forward Lookup Zones
        self.__select_zone(fzone_name)
        self.assertSeen(fzone_name)
        results = zonelist(self.creds.get_domain(), self.creds.get_username(), self.creds.get_password())
        self.assertIn(fzone_name, results.keys())

        ### Delete a forward lookup zone ###
        self.press('BTab')
        self.press('Enter') # Action
        for _ in range(0, 5):
            self.press('Down')
        self.assertSeen('│Delete\s*│')
        self.press('Enter')
        self.assertSeen('Do you want to delete the zone %s from the server?' % fzone_name)
        self.press('Enter') # Yes
        self.assertSeen('Zone %s deleted successfully' % fzone_name)
        self.press('Enter') # Ok
        sleep(3)
        for _ in range(0, 3):
            self.press('Tab')
        for _ in range(0, 2):
            self.press('Down')
        self.press('Space')
        sleep(1)
        self.assertNotSeen(fzone_name)
        results = zonelist(self.creds.get_domain(), self.creds.get_username(), self.creds.get_password())
        self.assertNotIn(fzone_name, results.keys())
示例#7
0
    def test_create_delete_ou(self):
        self.__open_aduc()
        # Highlight the domain
        for _ in range(0, 50):
            self.press('Up')
        self.press('Tab')
        self.press('Tab')

        # Open the Action Menu
        self.press('BTab')
        self.press('Enter')
        self.assertSeen('New')
        # Select New
        self.press('Down')
        self.press('Enter')
        # Select Organizational Unit
        self.assertSeen('Organizational Unit')
        for _ in range(0, 5):
            self.press('Down')
        self.press('Enter')
        self.assertSeen('New Object - Organizationalunit')

        # Provide an OU name
        name = '00000000%s' % randomName(10)
        self.press(name)
        self.press('Tab')
        self.press('Enter')

        self.assertSeen(name, 'OU not found')

        # Delete the OU
        self.press('Tab')
        self.press('Tab')
        self.press('Down')
        self.press('Up')
        self.press('Tab')
        self.press('Tab')
        self.press('Enter') # Action menu
        self.assertSeen('Delete')
        self.press('Down')
        self.press('Enter') # Delete
        self.assertSeen("Are you sure you want to delete '%s'?" % name)
        self.press('Enter') # Yes
        self.assertNotSeen(name, 'OU found after deletion!')
示例#8
0
    def test_create_delete_group(self):
        self.__open_aduc()
        # Open the Action Menu
        self.press('BTab')
        self.press('Enter')
        self.assertSeen('New')
        # Select New
        self.press('Down')
        self.press('Enter')
        # Select Group
        self.assertSeen('Group')
        for _ in range(0, 2):
            self.press('Down')
        self.press('Enter')
        self.assertSeen('New Object - Group')

        # Group name, etc
        gname = '00000000%s' % randomName(5)
        self.press(gname)
        self.press('Tab')
        self.press(gname)
        self.press('BTab')
        self.press('BTab')
        self.press('BTab')
        self.press('Enter')

        self.assertSeen(gname, 'Group not found')

        # Delete the group
        self.press('Tab')
        self.press('Tab')
        self.press('Down')
        self.press('Up') # ADUC automatically selects the object, but does not update the menu
        self.press('Tab')
        self.press('Tab')
        self.press('Enter') # Action menu
        self.assertSeen('Delete')
        self.press('Down')
        self.press('Enter') # Delete
        self.assertSeen("Are you sure you want to delete '%s'?" % gname)
        self.press('Enter') # Yes
        self.assertNotSeen(gname, 'Group found after deletion!')
示例#9
0
    def test_modify_account_policy_gpo(self):
        self.__open_gpmc()

        ### Create a GPO ###
        self.press('Down')
        self.press('BTab')
        self.press('Enter')  # Action menu
        self.assertSeen('Create a GPO in this domain, and Link it here...')
        self.press('Enter')
        self.assertSeen('New GPO')
        gpo_name = '00000000%s' % randomName(10)
        self.press(gpo_name)
        self.press('Tab')
        self.press('Enter')  # OK

        ### Verify creation ###
        self.assertSeen(gpo_name)
        sleep(3)
        self.press('Tab')
        self.__select_gpo_by_name(gpo_name)

        ### Modify Password Policy ###
        self.press('BTab')
        self.press('Enter')  # Action menu
        self.assertSeen('Edit...')
        self.press('Enter')  # Edit
        self.assertSeen('Group Policy Management Editor')
        self.press('Down')  # Policies
        self.press('Space')
        self.assertSeen('OS Settings')
        self.press('Down')  # OS Settings
        self.press('Space')
        self.assertSeen('Security Settings')
        self.press('Down')  # Security Settings
        self.press('Space')
        self.assertSeen('Account Policy')
        self.press('Down')  # Account Policy
        self.press('Space')
        self.assertSeen('Password Policy')
        self.press('Down')  # Password Policy
        self.assertSeen('Minimum password age\s*│Not Defined')
        self.press('Tab')
        self.press('Enter')  # Minimum password age
        self.assertSeen('MinimumPasswordAge Properties')
        self.press('1')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen('Minimum password age\s*│1 days')
        self.press('Down')
        self.assertSeen('Maximum password age\s*│Not Defined')
        self.press('Enter')  # Maximum password age
        self.assertSeen('MaximumPasswordAge Properties')
        self.press('99')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen('Maximum password age\s*│99 days')
        for _ in range(0, 2):
            self.press('Down')
        self.assertSeen('Minimum password length\s*│Not Defined')
        self.press('Enter')  # Minimum password length
        self.assertSeen('MinimumPasswordLength Properties')
        self.press('10')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen('Minimum password length\s*│10 characters')
        for _ in range(0, 3):
            self.press('Down')
        self.assertSeen(
            'Password must meet complexity requirements\s*│Not Defined')
        self.press('Enter')  # Password must meet complexity requirements
        self.assertSeen('PasswordComplexity Properties')
        self.press('Down')
        self.press('Enter')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen(
            'Password must meet complexity requirements\s*│Enabled')
        for _ in range(0, 4):
            self.press('Down')
        self.assertSeen('Enforce password history\s*│Not Defined')
        self.press('Enter')  # Enforce password history
        self.assertSeen('PasswordHistorySize Properties')
        self.press('10')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen('Enforce password history\s*│10 passwords remembered')
        for _ in range(0, 5):
            self.press('Down')
        self.assertSeen(
            'Store passwords using reversible encryption\s*│Not Defined')
        self.press('Enter')  # Store passwords using reversible encryption
        self.assertSeen('ClearTextPassword Properties')
        self.press('Down')
        self.press('Enter')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen(
            'Store passwords using reversible encryption\s*│Enabled')

        ### Modify Account Lockout Policy ###
        self.press('BTab')
        self.press('Down')
        self.press('Tab')
        self.assertSeen('Account lockout duration\s*│Not Defined')
        self.press('Enter')  # Account lockout duration
        self.assertSeen('LockoutDuration Properties')
        self.press('10')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen('Account lockout duration\s*│10 minutes')
        self.press('Down')
        self.assertSeen('Account lockout threshold\s*│Not Defined')
        self.press('Enter')  # Account lockout threshold
        self.assertSeen('LockoutBadCount Properties')
        self.press('3')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen(
            'Account lockout threshold\s*│3 invalid logon attempts')
        for _ in range(0, 2):
            self.press('Down')
        self.assertSeen('Reset account lockout counter after\s*│Not Defined')
        self.press('Enter')  # Reset account lockout counter after
        self.assertSeen('ResetLockoutCount Properties')
        self.press('10')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen('Reset account lockout counter after\s*│10 minutes')

        ### Modify Kerberos Policy ###
        self.press('BTab')
        self.press('Down')
        self.press('Tab')
        self.assertSeen('Maximum lifetime for user ticket\s*│Not Defined')
        self.press('Enter')  # Maximum lifetime for user ticket
        self.assertSeen('MaxTicketAge Properties')
        self.press('10')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen('Maximum lifetime for user ticket\s*│10 hours')
        self.press('Down')
        self.assertSeen(
            'Maximum lifetime for user ticket renewal\s*│Not Defined')
        self.press('Enter')  # Maximum lifetime for user ticket renewal
        self.assertSeen('MaxRenewAge Properties')
        self.press('600')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen(
            'Maximum lifetime for user ticket renewal\s*│600 minutes')
        for _ in range(0, 2):
            self.press('Down')
        self.assertSeen('Maximum lifetime for service ticket\s*│Not Defined')
        self.press('Enter')  # Maximum lifetime for service ticket
        self.assertSeen('MaxServiceAge Properties')
        self.press('600')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen('Maximum lifetime for service ticket\s*│600 minutes')
        for _ in range(0, 3):
            self.press('Down')
        self.assertSeen(
            'Maximum tolerance for computer clock synchronization\s*│Not Defined'
        )
        self.press(
            'Enter')  # Maximum tolerance for computer clock synchronization
        self.assertSeen('MaxClockSkew Properties')
        self.press('5')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen(
            'Maximum tolerance for computer clock synchronization\s*│5 minutes'
        )
        for _ in range(0, 4):
            self.press('Down')
        self.assertSeen('Enforce user logon restrictions\s*│Not Defined')
        self.press('Enter')  # Enforce user logon restrictions
        self.assertSeen('TicketValidateClient Properties')
        self.press('Down')
        self.press('Enter')
        self.press('Tab')
        self.press('Enter')  # OK
        self.assertSeen('Enforce user logon restrictions\s*│Enabled')

        ### Close the Group Policy Management Editor ###
        self.press('Tab')
        self.press('Enter')  # File
        self.press('Enter')  # Exit
        self.__select_gpo_by_name(gpo_name)

        ### Delete the GPO ###
        self.press('BTab')
        self.press('Enter')  # Action menu
        self.press('Down')
        self.press('Enter')  # Delete
        self.assertSeen('Do you want to delete this GPO and all links')
        self.press('Enter')  # Yes
        self.assertNotSeen(gpo_name)
示例#10
0
    def test_modify_browser_maintenance_gpo(self):
        self.__open_gpmc()

        ### Create a GPO ###
        self.press('Down')
        self.press('BTab')
        self.press('Enter')  # Action menu
        self.assertSeen('Create a GPO in this domain, and Link it here...')
        self.press('Enter')
        self.assertSeen('New GPO')
        gpo_name = '00000000%s' % randomName(10)
        self.press(gpo_name)
        self.press('Tab')
        self.press('Enter')  # OK

        ### Verify creation ###
        self.assertSeen(gpo_name)
        sleep(3)
        self.press('Tab')
        self.__select_gpo_by_name(gpo_name)

        ### Modify Browser Proxy Settings Policy ###
        self.press('BTab')
        self.press('Enter')  # Action menu
        self.assertSeen('Edit...')
        self.press('Enter')  # Edit
        self.assertSeen('Group Policy Management Editor')
        for _ in range(0, 3):
            self.press('Down')
        self.press('Space')  # Policies
        self.assertSeen('OS Settings')
        self.press('Down')
        self.press('Space')  # OS Settings
        self.assertSeen('Internet Browser Maintenance')
        self.press('Down')
        self.press('Space')  # Internet Browser Maintenance
        self.assertSeen('Connection')
        self.press('Down')  # Connection
        self.press('Tab')
        self.assertSeen('Proxy Settings\s*│Settings for proxy')
        self.press('Enter')  # Proxy Settings
        self.assertSeen('Proxy Settings Properties')
        self.press('Down')
        self.press('Up')
        self.press('Enter')  # Enable proxy settings
        self.press('Tab')
        self.press('example.com')  # Address of HTTP proxy
        for _ in range(0, 5):
            self.press('Tab')
        self.press('Down')
        self.press('Up')
        self.press('Enter')  # Use the same proxy server for all addresses
        for _ in range(0, 2):
            self.press('Tab')
        self.press('Enter')  # OK
        self.assertNotSeen('Proxy Settings Properties')
        ### Reopen the dialog and ensure the settings were saved ###
        self.press('Enter')  # Proxy Settings
        self.assertSeen('Enable proxy settings\s*│\s*│\s*│\s*│\s*Enabled')
        self.assertSeen('Address of HTTP proxy\s*│\s*│\s*│\s*│\s*example.com')
        self.assertSeen(
            'Use the same proxy server for all addresses\s*│\s*│\s*│\s*│\s*Enabled'
        )
        for _ in range(0, 2):
            self.press('BTab')
        self.press('Enter')  # Cancel

        ### Modify Browser User Agent String Policy ###
        self.press('Down')
        self.assertSeen('User Agent String\s*│Settings for user agent string')
        self.press('Enter')
        self.assertSeen('User Agent String Properties')
        self.press('AppleTV6,2/11.1')
        self.press('Tab')
        self.press('Enter')  # OK
        ### Reopen the dialog and ensure the settings were saved ###
        self.press('Down')
        self.press('Enter')
        self.assertSeen('AppleTV6,2/11.1')
        for _ in range(0, 2):
            self.press('BTab')
        self.press('Enter')  # Cancel

        ### Close the Group Policy Management Editor ###
        self.press('Tab')
        self.press('Enter')  # File
        self.press('Enter')  # Exit
        self.__select_gpo_by_name(gpo_name)

        ### Delete the GPO ###
        self.press('BTab')
        self.press('Enter')  # Action menu
        self.press('Down')
        self.press('Enter')  # Delete
        self.assertSeen('Do you want to delete this GPO and all links')
        self.press('Enter')  # Yes
        self.assertNotSeen(gpo_name)
示例#11
0
    def test_create_delete_user(self):
        self.__open_aduc()
        # Open the Action Menu
        self.press('BTab')
        self.press('Enter')
        self.assertSeen('New')
        # Select New
        self.press('Down')
        self.press('Enter')
        # Select User
        self.assertSeen('User')
        for _ in range(0, 6):
            self.press('Down')
        self.press('Enter')
        self.assertSeen('New Object - User')

        # Username, etc
        fname = '00000000%s' % randomName(5)
        ini = randomName(1)
        lname = randomName(8)
        self.press(fname)
        self.press('Tab')
        self.press(ini)
        self.press('Tab')
        self.press(lname)
        self.press('Tab')
        self.press(' '.join([fname, ini, lname]))
        uname = ('%s%s' % (fname[0], lname)).lower()
        self.press('Tab')
        self.press(uname)
        self.press('Tab')
        self.press(uname)
        self.press('Tab')
        self.press('Enter') # Next

        self.assertSeen('UID number:')

        # Enter a GID
        self.press('Tab')
        self.press('1000')
        for _ in range(0, 5):
            self.press('Tab')
        self.press('Enter') # Next

        self.assertSeen('User must change password at next logon')

        # Enter password, etc
        self.press('locDCpass1')
        self.press('Tab')
        self.press('locDCpass1')
        self.press('Tab')
        self.press('Space') # Uncheck User must change password
        self.press('Tab')
        self.press('Space') # Check Password never expires
        self.press('Tab')
        # Do not disable the account
        self.press('Tab')
        self.press('Tab')
        self.press('Enter') # Click finish

        self.assertSeen(' '.join([fname, ini, lname]), 'User not found')

        # Delete the user
        self.press('Tab')
        self.press('Tab')
        self.press('Down')
        self.press('Up') # ADUC automatically selects the object, but does not update the menu
        self.press('Tab')
        self.press('Tab')
        self.press('Enter') # Action menu
        self.assertSeen('Delete')
        for _ in range(0, 3):
            self.press('Down')
        self.press('Enter') # Delete
        self.assertSeen("Are you sure you want to delete '%s'?" % ' '.join([fname, ini, lname]))
        self.press('Enter') # Yes
        self.assertNotSeen(' '.join([fname, ini, lname]), 'User found after deletion!')
示例#12
0
 def __testgroup(self):
     gname = '00000000%s' % randomName(5)
     self.groups.append(gname)
     self.conn.newgroup(gname)
     return gname
示例#13
0
    def test_modify_user(self):
        self.__open_aduc()
        # Open the Action Menu
        self.press('BTab')
        self.press('Enter')
        self.assertSeen('New')
        # Select New
        self.press('Down')
        self.press('Enter')
        # Select User
        self.assertSeen('User')
        for _ in range(0, 6):
            self.press('Down')
        self.press('Enter')
        self.assertSeen('New Object - User')

        # Username, etc
        fname = '00000000%s' % randomName(5)
        ini = randomName(1)
        lname = randomName(8)
        self.press(fname)
        self.press('Tab')
        self.press(ini)
        self.press('Tab')
        self.press(lname)
        self.press('Tab')
        self.press(' '.join([fname, ini, lname]))
        uname = ('%s%s' % (fname[0], lname)).lower()
        self.press('Tab')
        self.press(uname)
        self.press('Tab')
        self.press(uname)
        self.press('Tab')
        self.press('Enter') # Next

        self.assertSeen('UID number:')

        # Enter a GID
        self.press('Tab')
        self.press('1000')
        for _ in range(0, 5):
            self.press('Tab')
        self.press('Enter') # Next

        self.assertSeen('User must change password at next logon')

        # Enter password, etc
        self.press('locDCpass1')
        self.press('Tab')
        self.press('locDCpass1')
        self.press('Tab')
        self.press('Space') # Uncheck User must change password
        self.press('Tab')
        self.press('Space') # Check Password never expires
        self.press('Tab')
        # Do not disable the account
        self.press('Tab')
        self.press('Tab')
        self.press('Enter') # Click finish

        self.assertSeen(' '.join([fname, ini, lname]), 'User not found')

        ### Disable the user ###
        self.press('Tab')
        self.press('Tab')
        self.press('Enter')
        self.assertSeen('%s Properties' % ' '.join([fname, ini, lname]), 'Properties dialog not found')
        self.press('Right')
        self.assertSeen('Street:') # Address Tab
        self.press('Right') # Account Tab
        self.assertSeen('\[ \] Account is disabled', 'Account should not be disabled!')
        for _ in range(0, 5):
            self.press('Tab')
        self.press('Space') # Check 'Account is disabled'
        self.press('Tab')
        self.press('Enter') # OK

        ### Verify account is disabled ###
        for _ in range(0, 3):
            self.press('Tab')
        self.press('Enter')
        self.assertSeen('%s Properties' % ' '.join([fname, ini, lname]), 'Properties dialog not found')
        self.press('Right')
        self.assertSeen('Street:') # Address Tab
        self.press('Right') # Account Tab
        self.assertSeen('\[x\] Account is disabled', 'Account should be disabled!')

        ### Modify user shell ###
        self.press('Right') # Unix Attributes tab
        self.assertSeen('/bin/sh', 'Should have seen the default shell for test user')
        for _ in range(0, 5):
            self.press('Tab')
        self.press('BSpace')
        self.press('BSpace')
        self.press('bash')
        self.assertSeen('/bin/bash')
        self.press('Tab')
        self.press('Enter') # OK

        ### Verify user shell has changed ###
        for _ in range(0, 3):
            self.press('Tab')
        self.press('Enter')
        self.assertSeen('%s Properties' % ' '.join([fname, ini, lname]), 'Properties dialog not found')
        for _ in range(0, 3):
            self.press('Right')
        self.assertSeen('/bin/bash', 'Should have seen the modified shell for test user')
        self.press('BTab')
        self.press('BTab')
        self.press('Enter') # Cancel

        # Delete the user
        self.press('Tab')
        self.press('Tab')
        self.press('Tab')
        self.press('Down')
        self.press('Up') # ADUC automatically selects the object, but does not update the menu
        self.press('Tab')
        self.press('Tab')
        self.press('Enter') # Action menu
        self.assertSeen('Delete')
        for _ in range(0, 3):
            self.press('Down')
        self.press('Enter') # Delete
        self.assertSeen("Are you sure you want to delete '%s'?" % ' '.join([fname, ini, lname]))
        self.press('Enter') # Yes
        self.assertNotSeen(' '.join([fname, ini, lname]), 'User found after deletion!')
示例#14
0
    def test_move_group(self):
        self.__open_aduc()
        ### Create a test OU ###
        # Highlight the domain
        for _ in range(0, 50):
            self.press('Up')
        self.press('Tab')
        self.press('Tab')

        # Open the Action Menu
        self.press('BTab')
        self.press('Enter')
        self.assertSeen('New')
        # Select New
        self.press('Down')
        self.press('Enter')
        # Select Organizational Unit
        self.assertSeen('Organizational Unit')
        for _ in range(0, 5):
            self.press('Down')
        self.press('Enter')
        self.assertSeen('New Object - Organizationalunit')

        # Provide an OU name
        name = '00000000%s' % randomName(10)
        self.press(name)
        self.press('Tab')
        self.press('Enter')

        self.assertSeen(name, 'OU not found')

        ### Create a test Group ###
        self.press('Tab')
        for _ in range(0, 50): # Select Users
            self.press('Down')

        # Open the Action Menu
        self.press('BTab')
        self.press('Enter')
        self.assertSeen('New')
        # Select New
        self.press('Down')
        self.press('Enter')
        # Select Group
        self.assertSeen('Group')
        for _ in range(0, 2):
            self.press('Down')
        self.press('Enter')
        self.assertSeen('New Object - Group')

        # Group name, etc
        gname = '00000000%s' % randomName(5)
        self.press(gname)
        self.press('Tab')
        self.press(gname)
        self.press('BTab')
        self.press('BTab')
        self.press('BTab')
        self.press('Enter')

        self.assertSeen(gname, 'Group not found')

        ### Move the test group to the test OU ###
        self.press('Tab')
        self.press('Tab')
        self.press('Down')
        self.press('Up') # ADUC automatically selects the object, but does not update the menu
        self.press('Tab')
        self.press('Tab')
        self.press('Enter') # Action menu
        self.assertSeen('Move...')
        self.press('Enter') # Move
        self.assertSeen('Move object into container:')
        self.press('Down') # Select the test OU
        self.press('Tab')
        self.press('Enter') # OK
        self.assertSeen('Are you sure you want to move this object?')
        self.press('Enter') # Yes
        # Select the test OU
        self.press('Tab')
        for _ in range(0, 50):
            self.press('Up')
        self.press('Tab')
        self.press('Tab')
        self.press('Down')
        self.press('Tab')

        self.assertSeen(gname, 'Group not found after object move')

        ### Delete the test group ###
        # No easy way to hightlight the test group when there is only one object
        self.press('Enter') # Open the properties window
        self.assertSeen('%s Properties' % gname)
        self.press('BTab')
        self.press('BTab')
        self.press('Enter') # Cancel (now the object is selected)
        self.assertNotSeen('%s Properties' % gname)
        self.press('Tab')
        self.press('Tab')
        self.press('Enter') # Action menu
        self.assertSeen('Delete')
        self.press('Down')
        self.press('Enter') # Delete
        self.assertSeen("Are you sure you want to delete '%s'?" % gname)
        self.press('Enter') # Yes
        self.assertNotSeen(gname, 'Group found after deletion!')

        ### Delete the test OU ###
        self.press('Tab')
        self.press('Up') # For some reason selecting the domain moves the cursor to the file menu
        self.press('Tab')
        self.press('Tab')
        self.press('Tab')
        self.press('Down')
        self.press('Up')
        self.press('Tab')
        self.press('Tab')
        self.press('Enter') # Action menu
        self.assertSeen('Delete')
        self.press('Down')
        self.press('Enter') # Delete
        self.assertSeen("Are you sure you want to delete '%s'?" % name)
        self.press('Enter') # Yes
        self.assertNotSeen(name, 'OU found after deletion!')
示例#15
0
    def test_create_delete_host_pointer_records(self):
        fzone_name = ('00000000.%s.com' % randomName(10)).lower()
        create_zone(self.creds.get_domain(), fzone_name, self.creds.get_username(), self.creds.get_password())
        self.zones.append(fzone_name)
        ip1 = randint(1, 254)
        ip2 = randint(1, 254)
        ip3 = randint(1, 254)
        rzone_name = '%d.%d.%d.in-addr.arpa' % (ip3, ip2, ip1)
        create_zone(self.creds.get_domain(), rzone_name, self.creds.get_username(), self.creds.get_password())
        self.zones.append(rzone_name)
        self.__open_dns()
        self.press('Tab')
        for _ in range(0, 2):
            self.press('Down')
        self.press('Space') # Expand Forward Lookup Zones
        self.__select_zone(fzone_name)

        ### Create Host/Pointer records ###
        self.press('BTab')
        self.press('Enter') # Action
        self.assertSeen('│New Host \(A or AAAA\)\.\.\.\s*│')
        self.press('Enter') # New Host
        self.assertSeen('Name \(uses parent domain name if blank\):')
        name = '00000000%s' % randomName(10)
        self.press(name)
        self.press('Tab')
        ip4 = randint(1,254)
        ip_addr = '%d.%d.%d.%d' % (ip1, ip2, ip3, ip4)
        self.press(ip_addr)
        self.press('Tab')
        self.press('Space')
        self.assertSeen('\[x\] Create associated pointer \(PTR\) record')
        self.press('Tab')
        self.press('Enter') # Add Host
        self.assertSeen('Record added successfully')
        self.press('Enter') # Ok
        self.assertSeen('%s\s*│Host \(A\)\s*│%s' % (name, ip_addr))
        ### Delete Host record ###
        self.press('Up')
        self.press('Down')
        for _ in range(0, 2):
            self.press('Tab')
        self.press('Enter') # Action
        self.assertSeen('│Delete\s*│')
        self.press('Enter') # Delete
        self.assertSeen('Do you want to delete the record %s from the server?' % name)
        self.press('Enter') # Yes
        self.assertSeen('Record deleted successfully')
        self.press('Enter') # Ok
        ### Verify deletion of Pointer record ###
        sleep(3)
        self.press('BTab')
        timeout = 0
        while timeout < 50:
            self.press('Down')
            if '%s│\s*│' % ip_addr in self.at.screenshot():
                break
            timeout+=1
        self.press('Space')
        self.assertSeen('[└├]──%s' % rzone_name)
        timeout = 0
        while timeout < 50:
            self.press('Down')
            self.assertNotSeen(ip_addr)
            timeout+=1