# Copyright (C) 2015 SUSE Linux GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import os import unittest import logging import httpretty import osc import re import urlparse from check_maintenance_incidents import MaintenanceChecker APIURL = 'https://maintenancetest.example.com' FIXTURES = os.path.join(os.getcwd(), 'tests/fixtures') def rr(s): return re.compile(re.escape(APIURL + s)) class TestMaintenance(unittest.TestCase): def setUp(self): """ Initialize the configuration """ httpretty.reset() httpretty.enable() oscrc = os.path.join(FIXTURES, 'oscrc') osc.core.conf.get_config(override_conffile=oscrc, override_no_keyring=True, override_no_gnome_keyring=True) #osc.conf.config['debug'] = 1 logging.basicConfig() self.logger = logging.getLogger(__file__) self.logger.setLevel(logging.DEBUG) self.checker = MaintenanceChecker(apiurl = APIURL, \ user = 'maintbot', \ logger = self.logger) def test_non_maintainer_submit(self): """same as above but already has devel project as reviewer """ httpretty.register_uri(httpretty.GET, rr("/search/request?match=state/@name='review'+and+review[@by_user='maintbot'+and+@state='new']&withhistory=1"), match_querystring = True, body = """ Request created ... Request got a new review request ... """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261355", match_querystring = True, body = """ Request created ... Request got a new review request ... """) httpretty.register_uri(httpretty.GET, APIURL + "/source/home:brassh/mysql-workbench", match_querystring = True, body = """ """) result = { 'devel_review_added' : None } def change_request(result, method, uri, headers): u = urlparse.urlparse(uri) if u.query == 'by_package=mysql-workbench&cmd=addreview&by_project=server%3Adatabase': result['devel_review_added'] = True return (200, headers, '') httpretty.register_uri(httpretty.POST, APIURL + "/request/261355", body = lambda method, uri, headers: change_request(result, method, uri, headers)) httpretty.register_uri(httpretty.GET, rr("/search/owner?binary=mysql-workbench"), match_querystring = True, body = """ """) self.checker.requests = [] self.checker.set_request_ids_search_review() self.checker.check_requests() self.assertTrue(result['devel_review_added']) def test_non_maintainer_double_review(self): httpretty.register_uri(httpretty.GET, rr("/search/request?match=state/@name='review'+and+review[@by_user='maintbot'+and+@state='new']&withhistory=1"), match_querystring = True, body = """ review by devel project Request created ... Request got a new review request ... """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261355", match_querystring = True, body = """ review by devel project Request created ... Request got a new review request ... """) httpretty.register_uri(httpretty.GET, APIURL + "/source/home:brassh/mysql-workbench", match_querystring = True, body = """ """) result = { 'devel_review_added' : None } def change_request(result, method, uri, headers): u = urlparse.urlparse(uri) if u.query == 'by_package=mysql-workbench&cmd=addreview&by_project=server%3Adatabase': result['devel_review_added'] = True return (200, headers, '') httpretty.register_uri(httpretty.POST, APIURL + "/request/261355", body = lambda method, uri, headers: change_request(result, method, uri, headers)) httpretty.register_uri(httpretty.GET, rr("/search/owner?binary=mysql-workbench"), match_querystring = True, body = """ """) self.checker.requests = [] self.checker.set_request_ids_search_review() self.checker.check_requests() self.assertFalse(result['devel_review_added']) def test_backports_submit(self): httpretty.register_uri(httpretty.GET, rr("/search/request?match=state/@name='review'+and+review[@by_user='maintbot'+and+@state='new']&withhistory=1"), match_querystring = True, body = """ Request created test update test update """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261411", body = """ Request created test update test update """) httpretty.register_uri(httpretty.GET, APIURL + "/source/home:lnussel:branches:openSUSE:Backports:SLE-12/plan", body = """ """) httpretty.register_uri(httpretty.GET, rr("/search/owner?binary=plan"), match_querystring = True, body = """ """) result = { 'factory_review_added' : None } def change_request(result, method, uri, headers): u = urlparse.urlparse(uri) if u.query == 'cmd=addreview&by_user=factory-source': result['factory_review_added'] = True return (200, headers, '') httpretty.register_uri(httpretty.POST, APIURL + "/request/261411", body = lambda method, uri, headers: change_request(result, method, uri, headers)) self.checker.requests = [] self.checker.set_request_ids_search_review() self.checker.check_requests() self.assertTrue(result['factory_review_added']) if __name__ == '__main__': unittest.main() # vim: sw=4 et