Example #1
0
 def runTest(self):
     """Test for regression of http://trac.edgewall.org/ticket/5765
     Unable to turn off 'Enable access keys' in Preferences
     """
     self._tester.go_to_front()
     # [BLOODHOUND] Preferences link removed
     tc.follow('/prefs')
     tc.follow('Keyboard Shortcuts')
     tc.formvalue('userprefs', 'accesskeys', True)
     tc.submit()
     tc.find('name="accesskeys".*checked="checked"')
     tc.formvalue('userprefs', 'accesskeys', False)
     tc.submit()
     tc.notfind('name="accesskeys".*checked="checked"')
Example #2
0
    def _post_create_ticket(self):
        """Look at the newly created ticket page after creating it
        """
        # we should be looking at the newly created ticket
        tc.url(self.url + '/ticket/%s' % (self.ticketcount + 1))
        # Increment self.ticketcount /after/ we've verified that the ticket
        # was created so a failure does not trigger spurious later
        # failures.
        self.ticketcount += 1

        # verify the ticket creation event shows up in the timeline
        self.go_to_timeline()
        tc.formvalue('prefs', 'ticket', True)
        tc.submit()
        tc.find('Ticket.*#%s.*created' % self.ticketcount)
Example #3
0
    def _post_create_ticket(self):
        """Look at the newly created ticket page after creating it
        """
        # we should be looking at the newly created ticket
        tc.url(self.url + '/ticket/%s' % (self.ticketcount + 1))
        # Increment self.ticketcount /after/ we've verified that the ticket
        # was created so a failure does not trigger spurious later
        # failures.
        self.ticketcount += 1

        # verify the ticket creation event shows up in the timeline
        self.go_to_timeline()
        tc.formvalue('prefs', 'ticket', True)
        tc.submit()
        tc.find('Ticket.*#%s.*created' % self.ticketcount)
Example #4
0
    def runTest(self):
        """Rename product from the console."""
        prefix, name, owner = self._tester.admin_create_product(owner='admin')
        with self.in_product(prefix) as (testenv, tester):
            t1 = tester.create_ticket()
            t2 = tester.create_ticket()
        new_name = '%s%s' % (name, str(uuid.uuid4()).split('-')[0])

        self._testenv._tracadmin('product', 'rename', prefix, new_name)

        with self.in_product(prefix) as (testenv, tester):
            tester.go_to_ticket(t1)
            comment = "Product %s renamed to %s" % (name, new_name)
            tc.find(comment)
            tester.go_to_ticket(t2)
            tc.find(comment)
Example #5
0
    def runTest(self):
        """Rename product from the console."""
        prefix, name, owner = self._tester.admin_create_product(owner='admin')
        with self.in_product(prefix) as (testenv, tester):
            t1 = tester.create_ticket()
            t2 = tester.create_ticket()
        new_name = '%s%s' % (name, str(uuid.uuid4()).split('-')[0])

        self._testenv._tracadmin('product', 'rename', prefix, new_name)

        with self.in_product(prefix) as (testenv, tester):
            tester.go_to_ticket(t1)
            comment = "Product %s renamed to %s" % (name, new_name)
            tc.find(comment)
            tester.go_to_ticket(t2)
            tc.find(comment)
Example #6
0
    def runTest(self):
        """Setup new product"""
        prefix, name = self._tester.create_product()
        base_url = self._testenv.get_env_href(prefix=prefix)
        tc.url(base_url())

        tc.follow('Index')
        tc.find('Index by Title')
        tc.find('<a[^>]*>Index by Date')
        pages = ('TitleIndex', 'RecentChanges', 'InterTrac', 'InterWiki')
        for page in pages:
            tc.find('<a[^>]*>%s' % (page, ))

        tc.follow('Index by Date')
        tc.find('Index by Date')
        tc.find('<a[^>]*>Index by Title')
Example #7
0
    def runTest(self):
        """Setup new product"""
        prefix, name = self._tester.create_product()
        base_url = self._testenv.get_env_href(prefix=prefix)
        tc.url(base_url())

        tc.follow('Index')
        tc.find('Index by Title')
        tc.find('<a[^>]*>Index by Date')
        pages = ('TitleIndex', 'RecentChanges', 'InterTrac', 'InterWiki')
        for page in pages:
            tc.find('<a[^>]*>%s' % (page,))

        tc.follow('Index by Date')
        tc.find('Index by Date')
        tc.find('<a[^>]*>Index by Title')
Example #8
0
    def runTest(self):
        """Admin set default product"""
        prefix, name, owner = self._tester.admin_create_product(owner='admin')
        products_url = self._tester.url + '/admin/ticket/products'
        tc.go(products_url)
        tc.formvalue('product_table', 'default', prefix)
        tc.submit('apply')
        tc.find('type="radio" name="default" value="%s" checked="checked"'
                % prefix)
        tc.go(self._tester.url + '/newticket')
        tc.find('<option selected="selected" value="%s">%s</option>'
                % (prefix, name))

        # Test the "Clear default" button
        tc.go(products_url)
        tc.submit('clear', 'product_table')
        tc.notfind('type="radio" name="default" value=".+" checked="checked"')
Example #9
0
    def runTest(self):
        """Admin set default product"""
        prefix, name, owner = self._tester.admin_create_product(owner='admin')
        products_url = self._tester.url + '/admin/ticket/products'
        tc.go(products_url)
        tc.formvalue('product_table', 'default', prefix)
        tc.submit('apply')
        tc.find('type="radio" name="default" value="%s" checked="checked"' %
                prefix)
        tc.go(self._tester.url + '/newticket')
        tc.find('<option selected="selected" value="%s">%s</option>' %
                (prefix, name))

        # Test the "Clear default" button
        tc.go(products_url)
        tc.submit('clear', 'product_table')
        tc.notfind('type="radio" name="default" value=".+" checked="checked"')
Example #10
0
    def create_milestone(self, name=None, due=None):
        """Creates the specified milestone, with a random name if none is
        provided.  Returns the name of the milestone.
        """
        if name == None:
            name = random_unique_camel()
        milestone_url = self.url + "/admin/ticket/milestones"
        tc.go(milestone_url)
        tc.url(milestone_url)
        tc.formvalue('addmilestone', 'name', name)
        if due:
            # TODO: How should we deal with differences in date formats?
            tc.formvalue('addmilestone', 'duedate', due)
        tc.submit()
        tc.notfind(internal_error)
        tc.notfind('Milestone .* already exists')
        tc.url(milestone_url)
        tc.find(name)

        # Make sure it's on the roadmap.
        tc.follow('Roadmap')
        tc.url(self.url + "/roadmap")
        tc.find('Milestone:.*%s' % name)
        tc.follow(name)
        tc.url('%s/milestone/%s' % (self.url, unicode_quote(name)))
        if not due:
            # [BLOODHOUND] No date set => Unscheduled
            tc.find('Unscheduled')

        return name
Example #11
0
    def create_milestone(self, name=None, due=None):
        """Creates the specified milestone, with a random name if none is
        provided.  Returns the name of the milestone.
        """
        if name == None:
            name = random_unique_camel()
        milestone_url = self.url + "/admin/ticket/milestones"
        tc.go(milestone_url)
        tc.url(milestone_url)
        tc.formvalue('addmilestone', 'name', name)
        if due:
            # TODO: How should we deal with differences in date formats?
            tc.formvalue('addmilestone', 'duedate', due)
        tc.submit()
        tc.notfind(internal_error)
        tc.notfind('Milestone .* already exists')
        tc.url(milestone_url)
        tc.find(name)

        # Make sure it's on the roadmap.
        tc.follow('Roadmap')
        tc.url(self.url + "/roadmap")
        tc.find('Milestone:.*%s' % name)
        tc.follow(name)
        tc.url('%s/milestone/%s' % (self.url, unicode_quote(name)))
        if not due:
            # [BLOODHOUND] No date set => Unscheduled
            tc.find('Unscheduled')

        return name
Example #12
0
 def create_report(self, title, query, description):
     """Create a new report with the given title, query, and description
     """
     self.go_to_front()
     # [BLOODHOUND] View Tickets renamed to Tickets pointing at dashboard
     tc.follow(r'\bTickets\b')
     tc.notfind(internal_error)
     tc.follow(r'\bReports\b')
     tc.notfind(internal_error)
     tc.formvalue('create_report', 'action', 'new') # select new report form
     tc.submit()
     tc.find('New Report')
     tc.notfind(internal_error)
     tc.formvalue('edit_report', 'title', title)
     tc.formvalue('edit_report', 'description', description)
     tc.formvalue('edit_report', 'query', query)
     tc.submit()
     reportnum = b.get_url().split('/')[-1]
     # TODO: verify the url is correct
     # TODO: verify the report number is correct
     # TODO: verify the report does not cause an internal error
     # TODO: verify the title appears on the report list
     return reportnum
Example #13
0
 def create_report(self, title, query, description):
     """Create a new report with the given title, query, and description
     """
     self.go_to_front()
     # [BLOODHOUND] View Tickets renamed to Tickets pointing at dashboard
     tc.follow(r'\bTickets\b')
     tc.notfind(internal_error)
     tc.follow(r'\bReports\b')
     tc.notfind(internal_error)
     tc.formvalue('create_report', 'action',
                  'new')  # select new report form
     tc.submit()
     tc.find('New Report')
     tc.notfind(internal_error)
     tc.formvalue('edit_report', 'title', title)
     tc.formvalue('edit_report', 'description', description)
     tc.formvalue('edit_report', 'query', query)
     tc.submit()
     reportnum = b.get_url().split('/')[-1]
     # TODO: verify the url is correct
     # TODO: verify the report number is correct
     # TODO: verify the report does not cause an internal error
     # TODO: verify the title appears on the report list
     return reportnum
Example #14
0
    def runTest(self):
        """Check for correct author in ticket comments on product rename
        https://issues.apache.org/bloodhound/ticket/671
        """
        prefix, name = self._tester.create_product()
        with self.in_product(prefix) as (testenv, tester):
            t1 = tester.create_ticket()
            t2 = tester.create_ticket()
        new_name = '%s%s' % (name, str(uuid4()).split('-')[0])

        tc.go(self._tester.url + '/products')
        tc.follow('.*/products/' + prefix + r'\?action=edit$')
        tc.find('Edit Product')
        tc.find(prefix)
        tc.formvalue('edit', 'name', new_name)
        tc.submit()
        tc.find('Your changes have been saved')

        with self.in_product(prefix) as (testenv, tester):
            tester.go_to_ticket(t1)
            comment = 'Product %s renamed to %s' % (name, new_name)
            tc.find(comment)
            tester.go_to_ticket(t2)
            tc.find(comment)
Example #15
0
 def runTest(self):
     """Set preferences for admin user"""
     prefs_url = self._tester.url + "/prefs"
     # [BLOODHOUND] Preferences link removed
     tc.follow('/prefs')
     tc.url(prefs_url)
     tc.notfind('Your preferences have been saved.')
     tc.formvalue('userprefs', 'name', ' System Administrator ')
     tc.formvalue('userprefs', 'email', ' [email protected] ')
     tc.submit()
     tc.find('Your preferences have been saved.')
     tc.follow('Date & Time')
     tc.url(prefs_url + '/datetime')
     tc.formvalue('userprefs', 'tz', 'GMT -10:00')
     tc.submit()
     tc.find('Your preferences have been saved.')
     tc.follow('General')
     tc.url(prefs_url)
     tc.notfind('Your preferences have been saved.')
     tc.find('value="System Administrator"')
     tc.find(r'value="admin@example\.com"')
     tc.follow('Date & Time')
     tc.url(prefs_url + '/datetime')
     tc.find('GMT -10:00')
Example #16
0
    def runTest(self):
        """Check for correct author in ticket comments on product rename
        https://issues.apache.org/bloodhound/ticket/671
        """
        prefix, name = self._tester.create_product()
        with self.in_product(prefix) as (testenv, tester):
            t1 = tester.create_ticket()
            t2 = tester.create_ticket()
        new_name = '%s%s' % (name, str(uuid4()).split('-')[0])

        tc.go(self._tester.url + '/products')
        tc.follow('.*/products/' + prefix + r'\?action=edit$')
        tc.find('Edit Product')
        tc.find(prefix)
        tc.formvalue('edit', 'name', new_name)
        tc.submit()
        tc.find('Your changes have been saved')

        with self.in_product(prefix) as (testenv, tester):
            tester.go_to_ticket(t1)
            comment = 'Product %s renamed to %s' % (name, new_name)
            tc.find(comment)
            tester.go_to_ticket(t2)
            tc.find(comment)
Example #17
0
    def admin_create_product(self, prefix=None, name=None, owner=None):
        """Create a product from the admin page."""
        admin_product_url = self.url + '/admin/ticket/products'
        tc.go(admin_product_url)
        tc.url(admin_product_url + '$')
        prefix = prefix or random_word()
        name = name or random_sentence()
        owner = owner or random_word()
        tc.formvalue('addproduct', 'prefix', prefix)
        tc.formvalue('addproduct', 'name', name)
        tc.formvalue('addproduct', 'owner', owner)
        tc.submit()

        tc.find(r'The product "%s" has been added' % prefix)
        tc.find(r'<a href="/admin/ticket/products/%s">%s</a>' %
                (prefix, prefix))
        tc.find(r'<a href="/admin/ticket/products/%s">%s</a>' % (prefix, name))
        tc.find(r'<td class="owner">%s</td>' % owner)
        return prefix, name, owner
Example #18
0
    def admin_create_product(self, prefix=None, name=None, owner=None):
        """Create a product from the admin page."""
        admin_product_url = self.url + '/admin/ticket/products'
        tc.go(admin_product_url)
        tc.url(admin_product_url + '$')
        prefix = prefix or random_word()
        name = name or random_sentence()
        owner = owner or random_word()
        tc.formvalue('addproduct', 'prefix', prefix)
        tc.formvalue('addproduct', 'name', name)
        tc.formvalue('addproduct', 'owner', owner)
        tc.submit()

        tc.find(r'The product "%s" has been added' % prefix)
        tc.find(r'<a href="/admin/ticket/products/%s">%s</a>'
                % (prefix, prefix))
        tc.find(r'<a href="/admin/ticket/products/%s">%s</a>'
                % (prefix, name))
        tc.find(r'<td class="owner">%s</td>' % owner)
        return prefix, name, owner
Example #19
0
    def runTest(self):
        """Rename product from the admin page."""
        prefix, name, owner = self._tester.admin_create_product(owner='admin')
        with self.in_product(prefix) as (testenv, tester):
            t1 = tester.create_ticket()
            t2 = tester.create_ticket()
        new_name = '%s%s' % (name, str(uuid.uuid4()).split('-')[0])

        admin_product_url = self._tester.url + '/admin/ticket/products'
        tc.go(admin_product_url + '/' + prefix)
        tc.formvalue('modprod', 'name', new_name)
        tc.submit('save')
        tc.find("Your changes have been saved")
        tc.find(r'<a href="/admin/ticket/products/%s">%s</a>' %
                (prefix, new_name))

        with self.in_product(prefix) as (testenv, tester):
            tester.go_to_ticket(t1)
            comment = "Product %s renamed to %s" % (name, new_name)
            tc.find(comment)
            tester.go_to_ticket(t2)
            tc.find(comment)
Example #20
0
    def runTest(self):
        """Rename product from the admin page."""
        prefix, name, owner = self._tester.admin_create_product(owner='admin')
        with self.in_product(prefix) as (testenv, tester):
            t1 = tester.create_ticket()
            t2 = tester.create_ticket()
        new_name = '%s%s' % (name, str(uuid.uuid4()).split('-')[0])

        admin_product_url = self._tester.url + '/admin/ticket/products'
        tc.go(admin_product_url + '/' + prefix)
        tc.formvalue('modprod', 'name', new_name)
        tc.submit('save')
        tc.find("Your changes have been saved")
        tc.find(r'<a href="/admin/ticket/products/%s">%s</a>'
                % (prefix, new_name))

        with self.in_product(prefix) as (testenv, tester):
            tester.go_to_ticket(t1)
            comment = "Product %s renamed to %s" % (name, new_name)
            tc.find(comment)
            tester.go_to_ticket(t2)
            tc.find(comment)
Example #21
0
    def create_product(self, prefix=None, name=None, desc=None):
        """Create a product from the product list page."""
        products_url = self.url + '/products'
        tc.go(products_url)
        tc.find('Products')
        tc.submit('add', 'new')
        tc.find('New Product')

        prefix = prefix or random_word()
        name = name or random_sentence()
        desc = desc or random_paragraph()

        tc.formvalue('edit', 'prefix', prefix)
        tc.formvalue('edit', 'name', name)
        tc.formvalue('edit', 'description', desc)
        tc.submit()
        tc.find('The product "%s" has been added' % prefix)
        return prefix, name
Example #22
0
    def create_product(self, prefix=None, name=None, desc=None):
        """Create a product from the product list page."""
        products_url = self.url + '/products'
        tc.go(products_url)
        tc.find('Products')
        tc.submit('add', 'new')
        tc.find('New Product')

        prefix = prefix or random_word()
        name = name or random_sentence()
        desc = desc or random_paragraph()

        tc.formvalue('edit', 'prefix', prefix)
        tc.formvalue('edit', 'name', name)
        tc.formvalue('edit', 'description', desc)
        tc.submit()
        tc.find('The product "%s" has been added' % prefix)
        return prefix, name
Example #23
0
    def login(self, username):
        """Login as the given user

        Consider that 'logged in as user' label has been replaced by
        '<i class="icon-user"></i>user'
        """
        #FIXME: Keep/remove this ?
        #tc.add_auth("", self.url, username, username)
        self.go_to_front()
        tc.find("Login")
        tc.follow("Login")

        # Submit user + password via account manager login form
        tc.formvalue('acctmgr_loginform', 'user', username)
        tc.formvalue('acctmgr_loginform', 'password', username)
        tc.submit()
        self.go_to_front()

        tc.find(r'<i class="icon-user"></i>\s*%s' % username)
        tc.find("Logout")
        tc.url(self.url)
        tc.notfind(internal_error)
Example #24
0
    def login(self, username):
        """Login as the given user

        Consider that 'logged in as user' label has been replaced by
        '<i class="icon-user"></i>user'
        """
        #FIXME: Keep/remove this ?
        #tc.add_auth("", self.url, username, username)
        self.go_to_front()
        tc.find("Login")
        tc.follow("Login")

        # Submit user + password via account manager login form
        tc.formvalue('acctmgr_loginform', 'user', username)
        tc.formvalue('acctmgr_loginform', 'password', username)
        tc.submit()
        self.go_to_front()

        tc.find(r'<i class="icon-user"></i>\s*%s' % username)
        tc.find("Logout")
        tc.url(self.url)
        tc.notfind(internal_error)
Example #25
0
 def find_ticket_field(self, fieldname, fieldval):
     """Assert that expected value (pattern) matches value in ticket view
     """
     tc.find(self.regex_ticket_field(fieldname, fieldval))
Example #26
0
 def find_owned_by(self, username):
     """Assert that a ticket is owned by a given user
     """
     tc.find(self.regex_owned_by(username))
Example #27
0
 def find_query_column_selector(self, fieldname, fieldlbl):
     tc.find(self.regex_query_column_selector(fieldname, fieldlbl), 's')
Example #28
0
 def find_owned_by(self, username):
     """Assert that a ticket is owned by a given user
     """
     tc.find(self.regex_owned_by(username))
Example #29
0
 def find_ticket_field(self, fieldname, fieldval):
     """Assert that expected value (pattern) matches value in ticket view
     """
     tc.find(self.regex_ticket_field(fieldname, fieldval))
Example #30
0
 def find_query_column_selector(self, fieldname, fieldlbl):
     tc.find(self.regex_query_column_selector(fieldname, fieldlbl), 's')