def setUp(self): b = self.browser = self.get_browser() try: login(b, user=self.problem_reporter.user_name, password='******') except NoSuchElementException: pass #Already logged in self.mail_capture = MailCaptureThread() self.mail_capture.start() self.addCleanup(self.mail_capture.stop)
def setUp(self): b = self.browser try: login(b, user=self.problem_reporter.user_name, password='******') except NoSuchElementException: pass #Already logged in self.mail_capture = MailCaptureThread() self.mail_capture.start()
assert slapadd.returncode == 0 log.info('Populating slapd data') subprocess.check_call([ 'slapadd', '-F', slapd_config_dir, '-n1', '-l', pkg_resources.resource_filename('bkr.inttest', 'ldap-data.ldif') ], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) def cleanup_slapd(): shutil.rmtree(slapd_data_dir, ignore_errors=True) shutil.rmtree(slapd_config_dir, ignore_errors=True) mail_capture_thread = MailCaptureThread() def _glance(): if not has_keystoneclient: raise RuntimeError('python-keystoneclient is not installed') if not has_glanceclient: raise RuntimeError('python-glanceclient is not installed') # We upload the ipxe image to Glance using the same dummy credentials and # tenant on whose behalf we will be creating VMs later. username = os.environ['OPENSTACK_DUMMY_USERNAME'] password = os.environ['OPENSTACK_DUMMY_PASSWORD'] project_name = os.environ['OPENSTACK_DUMMY_PROJECT_NAME'] auth_url = turbogears.config.get('openstack.identity_api_url') user_domain_name = os.environ.get('OPENSTACK_DUMMY_USER_DOMAIN_NAME') project_domain_name = os.environ.get('OPENSTACK_DUMMY_PROJECT_DOMAIN_NAME')
class SystemAction(WebDriverTestCase): @classmethod def setUpClass(cls): with session.begin(): cls.owner_email_address = data_setup.unique_name(u'*****@*****.**') cls.system_owner = data_setup.create_user( email_address=cls.owner_email_address) cls.system_fqdn = data_setup.unique_name('ncc1701d%s') cls.system = data_setup.create_system(fqdn=cls.system_fqdn, owner=cls.system_owner) lc = data_setup.create_labcontroller() cls.system.lab_controller = lc lender = u'amd' location = u'bne' vendor = u'intel' cls.system.lender = lender cls.system.location = location cls.system.vendor = vendor cls.reporter_email_address = data_setup.unique_name(u'*****@*****.**') cls.problem_reporter = data_setup.create_user(password=u'password', display_name=data_setup.unique_name('Crusher Lady%s'), email_address=cls.reporter_email_address) cls.problem_reporter.use_old_job_page = True def setUp(self): b = self.browser = self.get_browser() try: login(b, user=self.problem_reporter.user_name, password='******') except NoSuchElementException: pass #Already logged in self.mail_capture = MailCaptureThread() self.mail_capture.start() self.addCleanup(self.mail_capture.stop) def _std_check_mail(self, sender, rcpts, raw_msg, notification, payload, subject, system=None, reporter=None): if not system: system = self.system if not reporter: reporter = self.problem_reporter self.assertEqual(rcpts, [system.owner.email_address, reporter.email_address]) msg = email.message_from_string(raw_msg) self.assertEqual(msg['From'], r'"%s \(via Beaker\)" <%s>' % (reporter.display_name, reporter.email_address )) self.assertEqual(msg['To'], '%s' % system.owner.email_address) self.assertEqual(msg['Subject'], '%s' % subject) self.assertEqual(msg['Cc'], reporter.email_address) self.assertEqual(msg['X-Beaker-Notification'], notification) self.assertEqual(msg['X-Lender'], system.lender) self.assertEqual(msg['X-Owner'], system.owner.user_name) self.assertEqual(msg['X-Location'], system.location) self.assertEqual(msg['X-Lab-Controller'], system.lab_controller.fqdn) self.assertEqual(msg['X-Vendor'], system.vendor) self.assertEqual(msg['X-Type'], system.type.value) # This will break with multiple arched system... self.assertEqual(msg['X-Arch'], system.arch[0].arch) self.assertEqual(msg.get_payload(decode=True),payload) def test_anonymous_cant_contact_owner(self): b = self.browser logout(b) # Test can't access when not logged in b.get(get_server_base() + 'view/%s' % self.system.fqdn) b.find_element_by_link_text('Loan').click() b.find_element_by_xpath('//div[@id="loan" and not(.//button[text()="Request Loan"])]') # https://bugzilla.redhat.com/show_bug.cgi?id=652334 def test_system_activity_entry_is_correctly_truncated(self): with session.begin(): system = data_setup.create_system() b = self.browser b.get(get_server_base() + 'view/%s' % system.fqdn) b.find_element_by_xpath('//button[text()="Report problem"]').click() b.find_element_by_name('message').send_keys(u'a' + u'\u044f' * 100) b.find_element_by_xpath('//button[text()="Report"]').click() # Wait for our success box b.find_element_by_xpath('//div[contains(@class, "alert-success")]' '/h4[text()="Report sent"]') def test_reporter_and_system_cc_list_are_cced(self): with session.begin(): interested_party_email = data_setup.unique_name(u'*****@*****.**') system = data_setup.create_system() system.cc = [interested_party_email] b = self.browser b.get(get_server_base() + 'view/%s' % system.fqdn) b.find_element_by_xpath('//button[text()="Report problem"]').click() b.find_element_by_name('message').send_keys('I broke it') b.find_element_by_xpath('//button[text()="Report"]').click() b.find_element_by_xpath('//div[contains(@class, "alert-success")]' '/h4[text()="Report sent"]') self.assertEqual(len(self.mail_capture.captured_mails), 1) sender, rcpts, raw_msg = self.mail_capture.captured_mails[0] self.assertEqual(rcpts, [system.owner.email_address, self.problem_reporter.email_address, interested_party_email]) msg = email.message_from_string(raw_msg) self.assertEqual(msg['Cc'], '%s, %s' % (self.problem_reporter.email_address, interested_party_email)) def test_report_problem_via_recipe(self): with session.begin(): owner = data_setup.create_user() job = data_setup.create_completed_job(owner=owner) # Completing a job creates an email which we don't need self.mail_capture.captured_mails[:] = [] b = self.browser b.get(get_server_base() + 'recipes/%s' % job.recipesets[0].recipes[0].id) b.find_element_by_link_text('Report Problem with System').click() b.find_element_by_id('problem_description').send_keys('I broke it') b.find_element_by_xpath('//input[@value=\'Report\']').click() b.find_element_by_xpath('//div/span[text()=\'Success\']') self.assertEqual(len(self.mail_capture.captured_mails), 1) def test_report_problem(self): b = self.browser # Test can send problem report succesfully b.get(get_server_base() + 'view/%s' % self.system.fqdn) b.find_element_by_xpath('//button[text()="Report problem"]').click() b.find_element_by_name('message').send_keys('testing problem') b.find_element_by_xpath('//button[text()="Report"]').click() # Wait for our success box b.find_element_by_xpath('//div[contains(@class, "alert-success")]' '/h4[text()="Report sent"]') # Check the email was sent wait_for_condition(lambda: len(self.mail_capture.captured_mails) == 1) sender, rcpts, raw_msg = self.mail_capture.captured_mails[0] payload = 'A Beaker user has reported a problem with system \n' \ '%s <%sview/%s>.\n\n' \ 'Reported by: %s\n\n' \ 'Problem description:\n' \ 'testing problem' \ % (self.system_fqdn, get_server_base(), self.system_fqdn, self.problem_reporter.display_name) self._std_check_mail(sender, rcpts, raw_msg, 'system-problem', payload, 'Problem reported for %s' % self.system.fqdn) def test_loan_request(self): b = self.browser # Test can send loan request succesfully b.get(get_server_base() + 'view/%s' % self.system.fqdn) b.find_element_by_link_text('Loan').click() b.find_element_by_xpath('//button[text()="Request Loan"]').click() b.find_element_by_name('message').send_keys('request loan') b.find_element_by_xpath('//button[text()="Request"]').click() # Wait for our success box b.find_element_by_xpath('//div[contains(@class, "alert-success")]' '/h4[text()="Request sent"]') # Check the email was sent wait_for_condition(lambda: len(self.mail_capture.captured_mails) == 1) sender, rcpts, raw_msg = self.mail_capture.captured_mails[0] payload = 'A Beaker user has requested you loan them the system\n' \ '%s <%sview/%s>.\n' \ 'Here is a copy of their request:\n' \ 'request loan\n Requested by: %s' \ % (self.system_fqdn, get_server_base(), self.system_fqdn, self.problem_reporter.display_name) self._std_check_mail(sender, rcpts, raw_msg, 'loan-request', payload, 'Loan request for %s' % self.system.fqdn)