示例#1
0
 def test_add(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     imap = self.login_imap(username, password)
     self.validate_mailbox(username)
示例#2
0
 def setUp(self):
     super(DomainTestMixin, self).setUp()
     self.MASTER_ADDR = os.environ['ORCHESTRA_DNS_MASTER_ADDR']
     self.SLAVE_ADDR = os.environ['ORCHESTRA_DNS_SLAVE_ADDR']
     self.domain_name = 'orchestra%s.lan' % random_ascii(10)
     self.domain_records = (
         (Record.MX, '10 mail.orchestra.lan.'),
         (Record.MX, '20 mail2.orchestra.lan.'),
         (Record.NS, 'ns1.%s.' % self.domain_name),
         (Record.NS, 'ns2.%s.' % self.domain_name),
     )
     self.domain_update_records = (
         (Record.MX, '30 mail3.orchestra.lan.'),
         (Record.MX, '40 mail4.orchestra.lan.'),
         (Record.NS, 'ns1.%s.' % self.domain_name),
         (Record.NS, 'ns2.%s.' % self.domain_name),
     )
     self.subdomain1_name = 'ns1.%s' % self.domain_name
     self.subdomain1_records = (
         (Record.A, '%s' % self.SLAVE_ADDR),
     )
     self.subdomain2_name = 'ns2.%s' % self.domain_name
     self.subdomain2_records = (
         (Record.A, '%s' % self.MASTER_ADDR),
     )
     self.subdomain3_name = 'www.%s' % self.domain_name
     self.subdomain3_records = (
         (Record.CNAME, 'external.server.org.'),
     )
     self.second_domain_name = 'django%s.lan' % random_ascii(10)
示例#3
0
    def test_disable_account(self):
        username = '******' % random_ascii(10)
        password = '******' % random_ascii(5)
        self.add(username, password)
        self.addCleanup(self.delete, username)
        self.validate_ftp(username, password)
        self.disable(username)
        self.validate_user(username)

        disable = reverse('admin:accounts_account_disable',
                          args=(self.account.pk, ))
        url = self.live_server_url + disable
        self.selenium.get(url)
        confirmation = self.selenium.find_element_by_name('post')
        confirmation.submit()
        self.assertNotEqual(url, self.selenium.current_url)

        self.assertRaises(ftplib.error_perm, self.validate_ftp, username,
                          password)
        self.selenium.get(url)
        self.assertNotEqual(url, self.selenium.current_url)

        # Reenable for test cleanup
        self.account.is_active = True
        self.account.save()
        self.admin_login()
示例#4
0
 def test_add(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     imap = self.login_imap(username, password)
     self.validate_mailbox(username)
示例#5
0
 def test_sftp(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password, shell='/bin/rssh')
     self.addCleanup(self.delete, username)
     self.validate_sftp(username, password)
     self.assertRaises(AssertionError, self.validate_ssh, username, password)
示例#6
0
 def test_create_account(self):
     url = self.live_server_url + reverse('admin:accounts_account_add')
     self.selenium.get(url)
     
     account_username = '******' % random_ascii(10)
     username = self.selenium.find_element_by_id('id_username')
     username.send_keys(account_username)
     
     account_password = '******' % random_ascii(5)
     password = self.selenium.find_element_by_id('id_password1')
     password.send_keys(account_password)
     password = self.selenium.find_element_by_id('id_password2')
     password.send_keys(account_password)
     
     full_name = random_ascii(10)
     full_name_field = self.selenium.find_element_by_id('id_full_name')
     full_name_field.send_keys(full_name)
     
     account_email = '*****@*****.**'
     email = self.selenium.find_element_by_id('id_email')
     email.send_keys(account_email)
     
     contact_short_name = random_ascii(10)
     short_name = self.selenium.find_element_by_id('id_contacts-0-short_name')
     short_name.send_keys(contact_short_name)
     
     email = self.selenium.find_element_by_id('id_contacts-0-email')
     email.send_keys(account_email)
     email.submit()
     self.assertNotEqual(url, self.selenium.current_url)
     
     self.addCleanup(self.delete_account, account_username)
     self.assertEqual(0, sshr(self.MASTER_SERVER, "id %s" % account_username).return_code)
示例#7
0
 def setUp(self):
     djsettings.DEBUG = True
     super(DomainTestMixin, self).setUp()
     self.domain_name = 'orchestra%s.lan' % random_ascii(10)
     self.domain_records = (
         (Record.MX, '10 mail.orchestra.lan.'),
         (Record.MX, '20 mail2.orchestra.lan.'),
         (Record.NS, 'ns1.%s.' % self.domain_name),
         (Record.NS, 'ns2.%s.' % self.domain_name),
     )
     self.domain_update_records = (
         (Record.MX, '30 mail3.orchestra.lan.'),
         (Record.MX, '40 mail4.orchestra.lan.'),
         (Record.NS, 'ns1.%s.' % self.domain_name),
         (Record.NS, 'ns2.%s.' % self.domain_name),
     )
     self.ns1_name = 'ns1.%s' % self.domain_name
     self.ns1_records = (
         (Record.A, self.SLAVE_SERVER_ADDR),
     )
     self.ns2_name = 'ns2.%s' % self.domain_name
     self.ns2_records = (
         (Record.A, self.MASTER_SERVER_ADDR),
     )
     self.www_name = 'www.%s' % self.domain_name
     self.www_records = (
         (Record.CNAME, 'external.server.org.'),
     )
     self.django_domain_name = 'django%s.lan' % random_ascii(10)
示例#8
0
 def test_add(self):
     name = '%s_list' % random_ascii(10)
     password = '******' % random_ascii(5)
     admin_email = '*****@*****.**'
     self.add(name, password, admin_email)
     self.validate_add(name)
     self.validate_login(name, password)
     self.addCleanup(self.delete, name)
示例#9
0
 def test_add(self):
     name = "%s_list" % random_ascii(10)
     password = "******" % random_ascii(5)
     admin_email = "*****@*****.**"
     self.add(name, password, admin_email)
     self.validate_add(name)
     self.validate_login(name, password)
     self.addCleanup(self.delete, name)
示例#10
0
 def test_sftp(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password, shell='/bin/rssh')
     self.addCleanup(self.delete, username)
     self.validate_sftp(username, password)
     self.assertRaises(AssertionError, self.validate_ssh, username,
                       password)
示例#11
0
 def test_delete(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.validate_user(username)
     self.delete(username)
     self.validate_delete(username)
     self.assertRaises(Exception, self.delete, self.account.username)
示例#12
0
 def test_delete(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.validate_user(username)
     self.delete(username)
     self.validate_delete(username)
     self.assertRaises(Exception, self.delete, self.account.username)
示例#13
0
    def test_disable(self):
        username = '******' % random_ascii(10)
        password = '******' % random_ascii(5)
        self.add(username, password)
        self.validate_mailbox(username)
#        self.addCleanup(self.delete, username)
        imap = self.login_imap(username, password)
        self.disable(username)
        self.assertRaises(imap.error, self.login_imap, username, password)
示例#14
0
 def test_disable(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.validate_mailbox(username)
     #        self.addCleanup(self.delete, username)
     imap = self.login_imap(username, password)
     self.disable(username)
     self.assertRaises(imap.error, self.login_imap, username, password)
示例#15
0
 def test_ftp(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password, shell='/dev/null')
     self.addCleanup(self.delete, username)
     self.assertRaises(paramiko.AuthenticationException, self.validate_sftp,
                       username, password)
     self.assertRaises(paramiko.AuthenticationException, self.validate_ssh,
                       username, password)
示例#16
0
 def test_change_password(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     self.validate_ftp(username, password)
     new_password = '******' % random_ascii(5)
     self.change_password(username, new_password)
     self.validate_ftp(username, new_password)
示例#17
0
 def test_disable(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password, shell='/dev/null')
     self.addCleanup(self.delete, username)
     self.validate_ftp(username, password)
     self.disable(username)
     self.validate_user(username)
     self.assertRaises(ftplib.error_perm, self.validate_ftp, username, password)
示例#18
0
 def test_ftp(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password, shell='/dev/null')
     self.addCleanup(self.delete, username)
     self.assertRaises(paramiko.AuthenticationException,
             self.validate_sftp, username, password)
     self.assertRaises(paramiko.AuthenticationException,
             self.validate_ssh, username, password)
示例#19
0
 def test_change_password(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     self.validate_ftp(username, password)
     new_password = '******' % random_ascii(5)
     self.change_password(username, new_password)
     self.validate_ftp(username, new_password)
示例#20
0
 def test_disable(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password, shell='/dev/null')
     self.addCleanup(self.delete, username)
     self.validate_ftp(username, password)
     self.disable(username)
     self.validate_user(username)
     self.assertRaises(ftplib.error_perm, self.validate_ftp, username,
                       password)
示例#21
0
 def test_delete(self):
     dbname = '%s_database' % random_ascii(5)
     username = '******' % random_ascii(5)
     password = '******' % random_ascii(5)
     self.add(dbname, username, password)
     self.validate_create_table(dbname, username, password)
     self.delete(dbname)
     self.delete_user(username)
     self.validate_delete(dbname, username, password)
     self.validate_delete_user(dbname, username)
示例#22
0
 def test_change_password(self):
     name = '%s_list' % random_ascii(10)
     password = '******' % random_ascii(5)
     admin_email = '*****@*****.**'
     self.add(name, password, admin_email)
     self.addCleanup(self.delete, name)
     self.validate_login(name, password)
     new_password = '******' % random_ascii(5)
     self.change_password(name, new_password)
     self.validate_login(name, new_password)
示例#23
0
 def test_delete(self):
     dbname = '%s_database' % random_ascii(5)
     username = '******' % random_ascii(5)
     password = '******' % random_ascii(5)
     self.add(dbname, username, password)
     self.validate_create_table(dbname, username, password)
     self.delete(dbname)
     self.delete_user(username)
     self.validate_delete(dbname, username, password)
     self.validate_delete_user(dbname, username)
示例#24
0
 def test_add_with_address(self):
     name = "%s_list" % random_ascii(10)
     password = "******" % random_ascii(5)
     admin_email = "*****@*****.**"
     address_name = "%s_name" % random_ascii(10)
     domain_name = "%sdomain.lan" % random_ascii(10)
     address_domain = Domain.objects.create(name=domain_name, account=self.account)
     self.add(name, password, admin_email, address_name=address_name, address_domain=address_domain)
     self.addCleanup(self.delete, name)
     # Mailman doesn't support changing the address, only the domain
     self.validate_add(name, address="%s@%s" % (address_name, address_domain))
示例#25
0
 def test_change_password(self):
     dbname = '%s_database' % random_ascii(5)
     username = '******' % random_ascii(5)
     password = '******' % random_ascii(5)
     self.add(dbname, username, password)
     self.addCleanup(self.delete, dbname)
     self.addCleanup(self.delete_user, username)
     self.validate_create_table(dbname, username, password)
     new_password = '******' % random_ascii(5)
     self.change_password(username, new_password)
     self.validate_login_error(dbname, username, password)
     self.validate_create_table(dbname, username, new_password)
示例#26
0
 def test_change_password(self):
     dbname = '%s_database' % random_ascii(5)
     username = '******' % random_ascii(5)
     password = '******' % random_ascii(5)
     self.add(dbname, username, password)
     self.addCleanup(self.delete, dbname)
     self.addCleanup(self.delete_user, username)
     self.validate_create_table(dbname, username, password)
     new_password = '******' % random_ascii(5)
     self.change_password(username, new_password)
     self.validate_login_error(dbname, username, password)
     self.validate_create_table(dbname, username, new_password)
示例#27
0
 def test_address(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     domain = '%s_domain.lan' % random_ascii(5)
     name = '%s_name' % random_ascii(5)
     domain = self.account.domains.create(name=domain)
     self.add_address(username, name, domain)
     token = random_ascii(100)
     self.send_email("%s@%s" % (name, domain), token)
     self.validate_email(username, token)
示例#28
0
 def test_address(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     domain = '%s_domain.lan' % random_ascii(5)
     name = '%s_name' % random_ascii(5)
     domain = self.account.domains.create(name=domain)
     self.add_address(username, name, domain)
     token = random_ascii(100)
     self.send_email("%s@%s" % (name, domain), token)
     self.validate_email(username, token)
示例#29
0
 def test_quota(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add_quota_resource()
     quota = 100
     self.add(username, password, quota=quota)
     self.addCleanup(self.delete, username)
     get_quota = "doveadm quota get -u %s 2>&1|grep STORAGE|awk {'print $5'}" % username
     stdout = sshrun(self.MASTER_SERVER, get_quota, display=False).stdout
     self.assertEqual(quota*1024, int(stdout))
     imap = self.login_imap(username, password)
     imap_quota = int(imap.getquotaroot("INBOX")[1][1][0].split(' ')[-1].split(')')[0])
     self.assertEqual(quota*1024, imap_quota)
示例#30
0
 def test_change_address_name(self):
     name = '%s_list' % random_ascii(10)
     password = '******' % random_ascii(5)
     admin_email = '*****@*****.**'
     address_name = '%s_name' % random_ascii(10)
     domain_name = '%sdomain.lan' % random_ascii(10)
     address_domain = Domain.objects.create(name=domain_name, account=self.account)
     self.add(name, password, admin_email, address_name=address_name, address_domain=address_domain)
     self.addCleanup(self.delete, name)
     # Mailman doesn't support changing the address, only the domain
     address_name = '%s_name' % random_ascii(10)
     self.update_address_name(name, address_name)
     self.validate_add(name, address="%s@%s" % (address_name, address_domain))
示例#31
0
 def test_delete(self):
     name = '%s_list' % random_ascii(10)
     password = '******' % random_ascii(5)
     admin_email = '*****@*****.**'
     address_name = '%s_name' % random_ascii(10)
     domain_name = '%sdomain.lan' % random_ascii(10)
     address_domain = Domain.objects.create(name=domain_name, account=self.account)
     self.add(name, password, admin_email, address_name=address_name, address_domain=address_domain)
     # Mailman doesn't support changing the address, only the domain
     self.validate_add(name, address="%s@%s" % (address_name, address_domain))
     self.delete(name)
     self.assertRaises(AssertionError, self.validate_login, name, password)
     self.validate_delete(name)
示例#32
0
 def test_add(self):
     # TODO domains with "_" bad name!
     domain_name = "%sdomain.lan" % random_ascii(10)
     domain = Domain.objects.create(name=domain_name, account=self.account)
     domain.records.create(type=Record.A, value=self.MASTER_SERVER_ADDR)
     self.save_domain(domain)
     webapp = "%s_%s_webapp" % (random_ascii(10), self.type_value)
     self.add_webapp(webapp)
     self.addCleanup(self.delete_webapp, webapp)
     self.upload_webapp(webapp)
     website = "%s_website" % random_ascii(10)
     self.add_website(website, domain, webapp)
     self.addCleanup(self.delete_website, website)
     self.validate_add_website(website, domain)
示例#33
0
 def test_quota(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add_quota_resource()
     quota = 100
     self.add(username, password, quota=quota)
     self.addCleanup(self.delete, username)
     get_quota = "doveadm quota get -u %s 2>&1|grep STORAGE|awk {'print $5'}" % username
     stdout = sshrun(self.MASTER_SERVER, get_quota, display=False).stdout
     self.assertEqual(quota * 1024, int(stdout))
     imap = self.login_imap(username, password)
     imap_quota = int(
         imap.getquotaroot("INBOX")[1][1][0].split(' ')[-1].split(')')[0])
     self.assertEqual(quota * 1024, imap_quota)
示例#34
0
 def test_add(self):
     # TODO domains with "_" bad name!
     domain_name = '%sdomain.lan' % random_ascii(10)
     domain = Domain.objects.create(name=domain_name, account=self.account)
     domain.records.create(type=Record.A, value=self.MASTER_SERVER_ADDR)
     self.save_domain(domain)
     webapp = '%s_%s_webapp' % (random_ascii(10), self.type_value)
     self.add_webapp(webapp)
     self.addCleanup(self.delete_webapp, webapp)
     self.upload_webapp(webapp)
     website = '%s_website' % random_ascii(10)
     self.add_website(website, domain, webapp)
     self.addCleanup(self.delete_website, website)
     self.validate_add_website(website, domain)
示例#35
0
 def test_delete(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     imap = self.login_imap(username, password)
     self.validate_mailbox(username)
     mailbox = Mailbox.objects.get(name=username)
     home = mailbox.get_home()
     self.delete(username)
     self.assertRaises(Mailbox.DoesNotExist, Mailbox.objects.get, name=username)
     self.assertRaises(CommandError, self.validate_mailbox, username)
     self.assertRaises(imap.error, self.login_imap, username, password)
     self.assertRaises(CommandError,
             sshrun, self.MASTER_SERVER, 'ls %s' % home, display=False)
示例#36
0
 def test_send_email(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     msg = MIMEText("Hola bishuns")
     msg['To'] = '*****@*****.**'
     msg['From'] = '%s@%s' % (username, self.MASTER_SERVER)
     msg['Subject'] = "test"
     server = smtplib.SMTP(self.MASTER_SERVER, 25)
     server.login(username, password)
     try:
         server.sendmail(msg['From'], msg['To'], msg.as_string())
     finally:
         server.quit()
示例#37
0
 def test_swap_user(self):
     dbname = '%s_database' % random_ascii(5)
     username = '******' % random_ascii(5)
     password = '******' % random_ascii(5)
     self.add(dbname, username, password)
     self.addCleanup(self.delete, dbname)
     self.addCleanup(self.delete_user, username)
     self.validate_create_table(dbname, username, password)
     username2 = '%s_dbuser' % random_ascii(5)
     password2 = '@!?%spppP001' % random_ascii(5)
     self.add_user(username2, password2)
     self.addCleanup(self.delete_user, username2)
     self.swap_user(username, username2, dbname)
     self.validate_login_error(dbname, username, password)
     self.validate_create_table(dbname, username2, password2)
示例#38
0
 def test_send_email(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     msg = MIMEText("Hola bishuns")
     msg['To'] = '*****@*****.**'
     msg['From'] = '%s@%s' % (username, self.MASTER_SERVER)
     msg['Subject'] = "test"
     server = smtplib.SMTP(self.MASTER_SERVER, 25)
     server.login(username, password)
     try:
         server.sendmail(msg['From'], msg['To'], msg.as_string())
     finally:
         server.quit()
示例#39
0
 def test_swap_user(self):
     dbname = '%s_database' % random_ascii(5)
     username = '******' % random_ascii(5)
     password = '******' % random_ascii(5)
     self.add(dbname, username, password)
     self.addCleanup(self.delete, dbname)
     self.addCleanup(self.delete_user, username)
     self.validate_create_table(dbname, username, password)
     username2 = '%s_dbuser' % random_ascii(5)
     password2 = '@!?%spppP001' % random_ascii(5)
     self.add_user(username2, password2)
     self.addCleanup(self.delete_user, username2)
     self.swap_user(username, username2, dbname)
     self.validate_login_error(dbname, username, password)
     self.validate_create_table(dbname, username2, password2)
示例#40
0
 def test_add_group(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     self.validate_user(username)
     username2 = '%s_systemuser' % random_ascii(10)
     password2 = '@!?%spppP001' % random_ascii(5)
     self.add(username2, password2)
     self.addCleanup(self.delete, username2)
     self.validate_user(username2)
     self.add_group(username, username2)
     user = SystemUser.objects.get(username=username)
     groups = list(user.groups.values_list('username', flat=True))
     self.assertIn(username2, groups)
     self.validate_user(username)
示例#41
0
 def test_add_group(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     self.validate_user(username)
     username2 = '%s_systemuser' % random_ascii(10)
     password2 = '@!?%spppP001' % random_ascii(5)
     self.add(username2, password2)
     self.addCleanup(self.delete, username2)
     self.validate_user(username2)
     self.add_group(username, username2)
     user = SystemUser.objects.get(username=username)
     groups = list(user.groups.values_list('username', flat=True))
     self.assertIn(username2, groups)
     self.validate_user(username)
示例#42
0
 def create_domain(self, account=None):
     if not account:
         account = self.create_account()
     domain_name = '%s.es' % random_ascii(10)
     domain_service, __ = MiscService.objects.get_or_create(name='domain .es',
             description='Domain .ES')
     return account.miscellaneous.create(service=domain_service, description=domain_name)
示例#43
0
 def test_add_with_address(self):
     name = '%s_list' % random_ascii(10)
     password = '******' % random_ascii(5)
     admin_email = '*****@*****.**'
     address_name = '%s_name' % random_ascii(10)
     domain_name = '%sdomain.lan' % random_ascii(10)
     address_domain = Domain.objects.create(name=domain_name,
                                            account=self.account)
     self.add(name,
              password,
              admin_email,
              address_name=address_name,
              address_domain=address_domain)
     self.addCleanup(self.delete, name)
     # Mailman doesn't support changing the address, only the domain
     self.validate_add(name,
                       address="%s@%s" % (address_name, address_domain))
示例#44
0
 def create_domain(self, account=None):
     if not account:
         account = self.create_account()
     domain_name = '%s.es' % random_ascii(10)
     domain_service, __ = MiscService.objects.get_or_create(
         name='domain .es', description='Domain .ES')
     return account.miscellaneous.create(service=domain_service,
                                         description=domain_name)
示例#45
0
 def validate_create_table(self, name, username, password):
     db = MySQLdb.connect(host=self.MASTER_SERVER,
                          port=3306,
                          user=username,
                          passwd=password,
                          db=name)
     cur = db.cursor()
     cur.execute('CREATE TABLE table_%s ( id INT ) ;' % random_ascii(10))
示例#46
0
class PHPFPMWebAppMixin(StaticWebAppMixin):
    backend = backends.php.PHPController
    type_value = 'php5.5'
    token = random_ascii(100)
    page = (
        'index.php',
        '<?php print("Hello World! %s");\n?>\n' % token,
        'Hello World! %s' % token,
    )
示例#47
0
 def create_job(self, amount, account=None):
     if not account:
         account = self.create_account()
     description = 'Random Job %s' % random_ascii(10)
     service, __ = MiscService.objects.get_or_create(name='job',
                                                     has_amount=True)
     return account.miscellaneous.create(service=service,
                                         description=description,
                                         amount=amount)
示例#48
0
class PHPFcidWebAppMixin(StaticWebAppMixin):
    backend = backends.phpfcgid.PHPFcgidBackend
    type_value = 'php5.2'
    token = random_ascii(100)
    page = (
        'index.php',
        '<?php print("Hello World! %s");\n?>\n' % token,
        'Hello World! %s' % token,
    )
示例#49
0
class StaticWebAppMixin(object):
    backend = backends.static.StaticController
    type_value = 'static'
    token = random_ascii(100)
    page = (
        'index.html',
        '<html>Hello World! %s </html>\n' % token,
        '<html>Hello World! %s </html>\n' % token,
    )
示例#50
0
 def test_delete(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     imap = self.login_imap(username, password)
     self.validate_mailbox(username)
     mailbox = Mailbox.objects.get(name=username)
     home = mailbox.get_home()
     self.delete(username)
     self.assertRaises(Mailbox.DoesNotExist,
                       Mailbox.objects.get,
                       name=username)
     self.assertRaises(CommandError, self.validate_mailbox, username)
     self.assertRaises(imap.error, self.login_imap, username, password)
     self.assertRaises(CommandError,
                       sshrun,
                       self.MASTER_SERVER,
                       'ls %s' % home,
                       display=False)
示例#51
0
 def test_custom_filtering(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     folder = random_ascii(5)
     filtering = textwrap.dedent("""
         require "fileinto";
         if true { 
             fileinto "%s";
             stop;
         }""" % folder)
     self.add(username, password, filtering=filtering)
     self.addCleanup(self.delete, username)
     imap = self.login_imap(username, password)
     imap.create(folder)
     self.validate_mailbox(username)
     token = random_ascii(100)
     self.send_email("%s@%s" % (username, settings.MAILBOXES_VIRTUAL_MAILBOX_DEFAULT_DOMAIN), token)
     home = Mailbox.objects.get(name=username).get_home()
     sshrun(self.MASTER_SERVER,
            "grep '%s' %s/Maildir/.%s/new/*" % (token, home, folder), display=False)
示例#52
0
    def test_mix_webapps(self):
        domain_name = '%sdomain.lan' % random_ascii(10)
        domain = Domain.objects.create(name=domain_name, account=self.account)
        domain.records.create(type=Record.A, value=self.MASTER_SERVER_ADDR)
        self.save_domain(domain)
        webapp = '%s_%s_webapp' % (random_ascii(10), self.type_value)
        self.add_webapp(webapp)
        self.addCleanup(self.delete_webapp, webapp)
        self.upload_webapp(webapp)
        website = '%s_website' % random_ascii(10)
        self.add_website(website, domain, webapp)
        self.addCleanup(self.delete_website, website)
        self.validate_add_website(website, domain)

        self.type_value = PHPFcidWebAppMixin.type_value
        self.backend = PHPFcidWebAppMixin.backend
        self.page = PHPFcidWebAppMixin.page
        self.add_route()
        webapp = '%s_%s_webapp' % (random_ascii(10), self.type_value)
        self.add_webapp(webapp)
        self.addCleanup(self.delete_webapp, webapp)
        self.upload_webapp(webapp)
        path = '/%s' % webapp
        self.add_content(website, webapp, path)
        url = 'http://%s%s/%s' % (domain.name, path, self.page[0])
        self.assertEqual(self.page[2], requests.get(url).content)

        self.type_value = PHPFPMWebAppMixin.type_value
        self.backend = PHPFPMWebAppMixin.backend
        self.page = PHPFPMWebAppMixin.page
        self.add_route()
        webapp = '%s_%s_webapp' % (random_ascii(10), self.type_value)
        self.add_webapp(webapp)
        self.addCleanup(self.delete_webapp, webapp)
        self.upload_webapp(webapp)
        path = '/%s' % webapp

        self.add_content(website, webapp, path)
        url = 'http://%s%s/%s' % (domain.name, path, self.page[0])
        self.assertEqual(self.page[2], requests.get(url).content)
示例#53
0
    def test_mix_webapps(self):
        domain_name = "%sdomain.lan" % random_ascii(10)
        domain = Domain.objects.create(name=domain_name, account=self.account)
        domain.records.create(type=Record.A, value=self.MASTER_SERVER_ADDR)
        self.save_domain(domain)
        webapp = "%s_%s_webapp" % (random_ascii(10), self.type_value)
        self.add_webapp(webapp)
        self.addCleanup(self.delete_webapp, webapp)
        self.upload_webapp(webapp)
        website = "%s_website" % random_ascii(10)
        self.add_website(website, domain, webapp)
        self.addCleanup(self.delete_website, website)
        self.validate_add_website(website, domain)

        self.type_value = PHPFcidWebAppMixin.type_value
        self.backend = PHPFcidWebAppMixin.backend
        self.page = PHPFcidWebAppMixin.page
        self.add_route()
        webapp = "%s_%s_webapp" % (random_ascii(10), self.type_value)
        self.add_webapp(webapp)
        self.addCleanup(self.delete_webapp, webapp)
        self.upload_webapp(webapp)
        path = "/%s" % webapp
        self.add_content(website, webapp, path)
        url = "http://%s%s/%s" % (domain.name, path, self.page[0])
        self.assertEqual(self.page[2], requests.get(url).content)

        self.type_value = PHPFPMWebAppMixin.type_value
        self.backend = PHPFPMWebAppMixin.backend
        self.page = PHPFPMWebAppMixin.page
        self.add_route()
        webapp = "%s_%s_webapp" % (random_ascii(10), self.type_value)
        self.add_webapp(webapp)
        self.addCleanup(self.delete_webapp, webapp)
        self.upload_webapp(webapp)
        path = "/%s" % webapp

        self.add_content(website, webapp, path)
        url = "http://%s%s/%s" % (domain.name, path, self.page[0])
        self.assertEqual(self.page[2], requests.get(url).content)
示例#54
0
 def setUp(self):
     djsettings.DEBUG = True
     super(DomainTestMixin, self).setUp()
     self.domain_name = 'orchestra%s.lan' % random_ascii(10)
     self.domain_records = (
         (Record.MX, '10 mail.orchestra.lan.'),
         (Record.MX, '20 mail2.orchestra.lan.'),
         (Record.NS, 'ns1.%s.' % self.domain_name),
         (Record.NS, 'ns2.%s.' % self.domain_name),
     )
     self.domain_update_records = (
         (Record.MX, '30 mail3.orchestra.lan.'),
         (Record.MX, '40 mail4.orchestra.lan.'),
         (Record.NS, 'ns1.%s.' % self.domain_name),
         (Record.NS, 'ns2.%s.' % self.domain_name),
     )
     self.ns1_name = 'ns1.%s' % self.domain_name
     self.ns1_records = ((Record.A, self.SLAVE_SERVER_ADDR), )
     self.ns2_name = 'ns2.%s' % self.domain_name
     self.ns2_records = ((Record.A, self.MASTER_SERVER_ADDR), )
     self.www_name = 'www.%s' % self.domain_name
     self.www_records = ((Record.CNAME, 'external.server.org.'), )
     self.django_domain_name = 'django%s.lan' % random_ascii(10)
示例#55
0
    def test_create_account(self):
        url = self.live_server_url + reverse('admin:accounts_account_add')
        self.selenium.get(url)

        account_username = '******' % random_ascii(10)
        username = self.selenium.find_element_by_id('id_username')
        username.send_keys(account_username)

        account_password = '******' % random_ascii(5)
        password = self.selenium.find_element_by_id('id_password1')
        password.send_keys(account_password)
        password = self.selenium.find_element_by_id('id_password2')
        password.send_keys(account_password)

        full_name = random_ascii(10)
        full_name_field = self.selenium.find_element_by_id('id_full_name')
        full_name_field.send_keys(full_name)

        account_email = '*****@*****.**'
        email = self.selenium.find_element_by_id('id_email')
        email.send_keys(account_email)

        contact_short_name = random_ascii(10)
        short_name = self.selenium.find_element_by_id(
            'id_contacts-0-short_name')
        short_name.send_keys(contact_short_name)

        email = self.selenium.find_element_by_id('id_contacts-0-email')
        email.send_keys(account_email)
        email.submit()
        self.assertNotEqual(url, self.selenium.current_url)

        self.addCleanup(self.delete_account, account_username)
        self.assertEqual(
            0,
            sshr(self.MASTER_SERVER, "id %s" % account_username).exit_code)
示例#56
0
 def test_custom_filtering(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     folder = random_ascii(5)
     filtering = textwrap.dedent("""
         require "fileinto";
         if true {
             fileinto "%s";
             stop;
         }""" % folder)
     self.add(username, password, filtering=filtering)
     self.addCleanup(self.delete, username)
     imap = self.login_imap(username, password)
     imap.create(folder)
     self.validate_mailbox(username)
     token = random_ascii(100)
     self.send_email(
         "%s@%s" %
         (username, settings.MAILBOXES_VIRTUAL_MAILBOX_DEFAULT_DOMAIN),
         token)
     home = Mailbox.objects.get(name=username).get_home()
     sshrun(self.MASTER_SERVER,
            "grep '%s' %s/Maildir/.%s/new/*" % (token, home, folder),
            display=False)
示例#57
0
 def test_disable_account(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password)
     self.addCleanup(self.delete, username)
     self.validate_ftp(username, password)
     self.disable(username)
     self.validate_user(username)
     
     disable = reverse('admin:accounts_account_disable', args=(self.account.pk,))
     url = self.live_server_url + disable
     self.selenium.get(url)
     confirmation = self.selenium.find_element_by_name('post')
     confirmation.submit()
     self.assertNotEqual(url, self.selenium.current_url)
     
     self.assertRaises(ftplib.error_perm, self.validate_ftp, username, password)
     self.selenium.get(url)
     self.assertNotEqual(url, self.selenium.current_url)
     
     # Reenable for test cleanup
     self.account.is_active = True
     self.account.save()
     self.admin_login()
示例#58
0
 def test_add(self):
     name = '%s_%s_webapp' % (random_ascii(10), self.type_value)
     self.add_webapp(name)
     self.addCleanup(self.delete_webapp, name)
     self.upload_webapp(name)
示例#59
0
 def test_ssh(self):
     username = '******' % random_ascii(10)
     password = '******' % random_ascii(5)
     self.add(username, password, shell='/bin/bash')
     self.addCleanup(self.delete, username)
     self.validate_ssh(username, password)
示例#60
0
 def create_mailbox(self, account=None):
     if not account:
         account = self.create_account()
     mailbox_name = '*****@*****.**' % random_ascii(10)
     return Mailbox.objects.create(name=mailbox_name, account=account)