import os import unittest import logging import httpretty from . import OBSLocal from urllib.parse import urlparse, parse_qs from check_maintenance_incidents import MaintenanceChecker APIURL = 'http://0.0.0.0:3000' FIXTURES = os.path.join(os.getcwd(), 'tests/fixtures') class TestMaintenance(OBSLocal.TestCase): def setUp(self): """ Initialize the configuration """ super().setUp() httpretty.reset() httpretty.enable() logging.basicConfig() self.logger = logging.getLogger(__file__) self.logger.setLevel(logging.DEBUG) self.checker = MaintenanceChecker(apiurl=APIURL, user='maintbot', logger=self.logger) self.checker.override_allow = False # Test setup cannot handle. def test_non_maintainer_submit(self): """same as above but already has devel project as reviewer """ httpretty.register_uri(httpretty.GET, APIURL + '/search/request', 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): query = parse_qs(urlparse(uri).query) if query == {'by_user': ['maintbot'], 'cmd': ['changereviewstate'], 'newstate': ['accepted']}: 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, APIURL + "/search/owner?project=openSUSE:13.2:Update&binary=mysql-workbench", match_querystring=True, body=""" """) httpretty.register_uri(httpretty.GET, APIURL + "/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, APIURL + '/search/request', 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(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, APIURL + "/search/owner?project=openSUSE:13.2:Update&binary=mysql-workbench", match_querystring=True, body=""" """) httpretty.register_uri(httpretty.GET, APIURL + "/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']) if __name__ == '__main__': unittest.main()