def test_checklist_duplicate(self): with fake_checklist_request(): # insert fake data from FakeDataMixin fake_pushid = 2 self.insert_pushes() self.insert_requests() test1_request = self.get_requests_by_user('testuser1')[0] test2_request = self.get_requests_by_user('testuser2')[0] self.insert_pushcontent(test1_request['id'], fake_pushid) self.insert_pushcontent(test2_request['id'], fake_pushid) # insert fake checklist data checklist_queries = [] for req in (test1_request, test2_request): checklist_queries.append( db.push_checklist.insert({ 'request': req['id'], 'type': 'search', 'target': 'prod' })) checklist_queries.append( db.push_checklist.insert({ 'request': req['id'], 'type': 'search-cleanup', 'target': 'post-verify-prod' })) db.execute_transaction_cb(checklist_queries, on_db_return) uri = "/checklist?id=%d" % fake_pushid response = self.fetch(uri) T.assert_equal(response.error, None) T.assert_not_in("No checklist items for this push", response.body) T.assert_not_equal( re.search("for testuser\d,testuser\d", response.body), None) T.assert_in("After Certifying - Do In Prod", response.body)
def test_checklist_single_search_tag(self): with fake_checklist_request(): # insert fake data from FakeDataMixin fake_pushid = 2 self.insert_pushes() self.insert_requests() test1_request = self.get_requests_by_user('testuser1')[0] self.insert_pushcontent(test1_request['id'], fake_pushid) # insert fake checklist data checklist_queries = [ db.push_checklist.insert({ 'request': test1_request['id'], 'type': 'search', 'target': 'prod' }), db.push_checklist.insert({ 'request': test1_request['id'], 'type': 'search-cleanup', 'target': 'post-verify-prod' }), ] db.execute_transaction_cb(checklist_queries, on_db_return) uri = "/checklist?id=%d" % fake_pushid response = self.fetch(uri) T.assert_equal(response.error, None) T.assert_not_in("No checklist items for this push", response.body) T.assert_not_in("multiple requests", response.body) T.assert_in("for testuser1", response.body) T.assert_in("After Certifying - Do In Prod", response.body)
def test_checklist_duplicate(self): with fake_checklist_request(): # insert fake data from FakeDataMixin fake_pushid = 2 self.insert_pushes() self.insert_requests() test1_request = self.get_requests_by_user('testuser1')[0] test2_request = self.get_requests_by_user('testuser2')[0] self.insert_pushcontent(test1_request['id'], fake_pushid) self.insert_pushcontent(test2_request['id'], fake_pushid) # insert fake checklist data checklist_queries = [] for req in (test1_request, test2_request): checklist_queries.append(db.push_checklist.insert({ 'request': req['id'], 'type': 'search', 'target': 'prod' })) checklist_queries.append(db.push_checklist.insert({ 'request': req['id'], 'type': 'search-cleanup', 'target': 'post-verify-prod' })) db.execute_transaction_cb(checklist_queries, on_db_return) uri = "/checklist?id=%d" % fake_pushid response = self.fetch(uri) T.assert_equal(response.error, None) T.assert_not_in("No checklist items for this push", response.body) T.assert_not_equal(re.search("for testuser\d,testuser\d", response.body), None) T.assert_in("After Certifying - Do In Prod", response.body)
def test_hoods_checklists(self): with fake_checklist_request(): # insert fake data from FakeDataMixin fake_pushid = 2 self.insert_pushes() self.insert_requests() req = self.get_requests_by_user('testuser1')[0] self.insert_pushcontent(req['id'], fake_pushid) # insert fake checklist data checklist_queries = [] checklist_items = ( {'request': req['id'], 'type': 'hoods', 'target': 'stage'}, {'request': req['id'], 'type': 'hoods', 'target': 'post-stage'}, {'request': req['id'], 'type': 'hoods', 'target': 'prod'}, {'request': req['id'], 'type': 'hoods-cleanup', 'target': 'post-verify-stage'}, ) for checklist_item in checklist_items: checklist_queries.append(db.push_checklist.insert(checklist_item)) db.execute_transaction_cb(checklist_queries, on_db_return) uri = "/checklist?id=%d" % fake_pushid response = self.fetch(uri) T.assert_equal(response.error, None) T.assert_not_in("No checklist items for this push", response.body) T.assert_in("Notify testuser1 to deploy Geoservices to stage", response.body) T.assert_in("Notify testuser1 to deploy Geoservices to prod", response.body) T.assert_in("Ask Search to force index distribution on stage for testuser1", response.body)
def test_escape(self): T.assert_equal( [k for k in self.d if self.ed[k] != self.escaped[k]], [], "EscapedDict values doesn't match with pre-computed valued", ) T.assert_in("&", self.ed["amp"]) T.assert_not_in(">", self.ed["gt"])
def verify_tag_rename(self, oldtag, newtag, success, db_results): self.check_db_results(success, db_results) #id, user, state, repo, branch, revision, *tags*, created, etc... tags = [result[6] for result in db_results.fetchall()] T.assert_not_in(oldtag, tags) T.assert_in(newtag, tags)
def verify_type_rename(self, oldtype, newtype, success, db_results): self.check_db_results(success, db_results) # id, push, *type*, status, target types = [result[2] for result in db_results.fetchall()] T.assert_not_in(oldtype, types) T.assert_not_in('%s-cleanup' % oldtype, types) T.assert_in('%s' % newtype, types) T.assert_in('%s-cleanup' % newtype, types)
def test_request_push_buttons_as_random_user(self): kwargs = dict(self.basic_kwargs) kwargs['push_buttons'] = True tree = self.render_module_request_with_users(self.basic_request, 'testuser', 'notuser', **kwargs) buttons_found = [] for button in tree.iter('button'): T.assert_not_in(button.attrib['class'], self.pushmaster_button_classes + self.push_button_classes) buttons_found.append(button) T.assert_equal(0, len(buttons_found))
def test_no_mine_on_requests_as_random_user(self): kwargs = dict(self.basic_kwargs) kwargs['push_contents'] = self.generate_push_contents([self.basic_request]) kwargs['current_user'] = '******' with self.no_ui_modules(): tree = self.render_etree( self.push_status_page, push_info=self.basic_push, **kwargs) found_mockreq = [] for mockreq in tree.iter('mock'): T.assert_not_in('class', mockreq.getparent().attrib.keys()) found_mockreq.append(mockreq) T.assert_equal(5, len(found_mockreq))
def test_mine_on_requests_as_pushmaster(self): push_contents = {} section_id = [] for section in self.accepting_push_sections: push_contents[section] = [self.basic_request] section_id.append('%s-items' % section) kwargs = dict(self.basic_kwargs) kwargs['push_contents'] = push_contents with self.no_ui_modules(): tree = self.render_etree( self.push_status_page, push_info=self.basic_push, **kwargs) found_mockreq = [] for mockreq in tree.iter('mock'): T.assert_not_in('class', mockreq.getparent().attrib.keys()) found_mockreq.append(mockreq) T.assert_equal(5, len(found_mockreq))
def test_localizables_push_website_command_is_correct_in_push_js(self): with self.request_fake_pushdata(): response = self.fetch("/static/js/push.js") T.assert_in("localizables_push_website.py", response.body) # Old (bash) version of the script shouldn't be there T.assert_not_in("localizables-push-website", response.body)
def test_escape(self): T.assert_equal( [k for k in self.d if self.ed[k] != self.escaped[k]], [], "EscapedDict values doesn't match with pre-computed valued") T.assert_in("&", self.ed['amp']) T.assert_not_in(">", self.ed['gt'])