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 = '******', \ 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?withfullhistory=1&match=state%2F%40name%3D%27review%27+and+review%5B%40by_user%3D%27maintbot%27+and+%40state%3D%27new%27%5D" ), match_querystring=True, body=""" <collection matches="1"> <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> </collection> """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261355", match_querystring=True, body=""" <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> """) httpretty.register_uri(httpretty.GET, APIURL + "/source/home:brassh/mysql-workbench", match_querystring=True, body=""" <directory name="mysql-workbench" rev="6" vrev="6" srcmd5="858204decf53f923d5574dbe6ae63b15"> <linkinfo project="openSUSE:13.2" package="mysql-workbench" srcmd5="ed9c3b12388cbd14868eb3faabe34685" baserev="ed9c3b12388cbd14868eb3faabe34685" xsrcmd5="08bfb4f40cb1e2de8f9cd4633bf02eb1" lsrcmd5="858204decf53f923d5574dbe6ae63b15" /> <serviceinfo code="succeeded" xsrcmd5="6ec4305a8e5363e26a7f4895a0ae12d2" /> <entry name="_link" md5="85ef5fb38ca1ec7c300311fda9f4b3d1" size="121" mtime="1414567341" /> <entry name="mysql-workbench-community-6.1.7-src.tar.gz" md5="ac059e239869fb77bf5d7a1f5845a8af" size="24750696" mtime="1404405925" /> <entry name="mysql-workbench-ctemplate.patch" md5="06ccba1f8275cd9408f515828ecede19" size="1322" mtime="1404658323" /> <entry name="mysql-workbench-glib.patch" md5="67fd7d8e3503ce0909381bde747c8a1e" size="1785" mtime="1415732509" /> <entry name="mysql-workbench-mysql_options4.patch" md5="9c07dfe1b94af95daf3e16bd6a161684" size="910" mtime="1404658324" /> <entry name="mysql-workbench-no-check-for-updates.patch" md5="1f0c9514ff8218d361ea46d3031b2b64" size="1139" mtime="1404658324" /> <entry name="mysql-workbench.changes" md5="26bc54777e6a261816b72f64c69630e4" size="13354" mtime="1415747835" /> <entry name="mysql-workbench.spec" md5="88b562a93f01b842a5798f809e3c8188" size="7489" mtime="1415745943" /> <entry name="openSUSE_(Vendor_Package).xml" md5="ab041af98d7748c216e7e5787ec36f65" size="743" mtime="1315923090" /> <entry name="patch-desktop-categories.patch" md5="c24b3283573c34a5e072be122388f8e1" size="391" mtime="1376991147" /> </directory> """) 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, '<status code="ok"/>') 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=""" <collection/> """) httpretty.register_uri(httpretty.GET, APIURL + "/search/owner?binary=mysql-workbench", match_querystring=True, body=""" <collection> <owner rootproject="openSUSE" project="server:database" package="mysql-workbench"> <person name="Gankov" role="maintainer"/> <person name="bruno_friedmann" role="maintainer"/> </owner> </collection> """) 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?withfullhistory=1&match=state%2F%40name%3D%27review%27+and+review%5B%40by_user%3D%27maintbot%27+and+%40state%3D%27new%27%5D" ), match_querystring=True, body=""" <collection matches="1"> <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <review state="new" by_package="mysql-workbench" by_project="server:database"> <comment>review by devel project</comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> </collection> """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261355", match_querystring=True, body=""" <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <review state="new" by_package="mysql-workbench" by_project="server:database"> <comment>review by devel project</comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> """) httpretty.register_uri(httpretty.GET, APIURL + "/source/home:brassh/mysql-workbench", match_querystring=True, body=""" <directory name="mysql-workbench" rev="6" vrev="6" srcmd5="858204decf53f923d5574dbe6ae63b15"> <linkinfo project="openSUSE:13.2" package="mysql-workbench" srcmd5="ed9c3b12388cbd14868eb3faabe34685" baserev="ed9c3b12388cbd14868eb3faabe34685" xsrcmd5="08bfb4f40cb1e2de8f9cd4633bf02eb1" lsrcmd5="858204decf53f923d5574dbe6ae63b15" /> <serviceinfo code="succeeded" xsrcmd5="6ec4305a8e5363e26a7f4895a0ae12d2" /> <entry name="_link" md5="85ef5fb38ca1ec7c300311fda9f4b3d1" size="121" mtime="1414567341" /> <entry name="mysql-workbench-community-6.1.7-src.tar.gz" md5="ac059e239869fb77bf5d7a1f5845a8af" size="24750696" mtime="1404405925" /> <entry name="mysql-workbench-ctemplate.patch" md5="06ccba1f8275cd9408f515828ecede19" size="1322" mtime="1404658323" /> <entry name="mysql-workbench-glib.patch" md5="67fd7d8e3503ce0909381bde747c8a1e" size="1785" mtime="1415732509" /> <entry name="mysql-workbench-mysql_options4.patch" md5="9c07dfe1b94af95daf3e16bd6a161684" size="910" mtime="1404658324" /> <entry name="mysql-workbench-no-check-for-updates.patch" md5="1f0c9514ff8218d361ea46d3031b2b64" size="1139" mtime="1404658324" /> <entry name="mysql-workbench.changes" md5="26bc54777e6a261816b72f64c69630e4" size="13354" mtime="1415747835" /> <entry name="mysql-workbench.spec" md5="88b562a93f01b842a5798f809e3c8188" size="7489" mtime="1415745943" /> <entry name="openSUSE_(Vendor_Package).xml" md5="ab041af98d7748c216e7e5787ec36f65" size="743" mtime="1315923090" /> <entry name="patch-desktop-categories.patch" md5="c24b3283573c34a5e072be122388f8e1" size="391" mtime="1376991147" /> </directory> """) 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, '<status code="ok"/>') 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=""" <collection/> """) httpretty.register_uri(httpretty.GET, APIURL + "/search/owner?binary=mysql-workbench", match_querystring=True, body=""" <collection> <owner rootproject="openSUSE" project="server:database" package="mysql-workbench"> <person name="Gankov" role="maintainer"/> <person name="bruno_friedmann" role="maintainer"/> </owner> </collection> """) 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?withfullhistory=1&match=state%2F%40name%3D%27review%27+and+review%5B%40by_user%3D%27maintbot%27+and+%40state%3D%27new%27%5D" ), match_querystring=True, body=""" <collection matches="1"> <request id="261411" creator="lnussel"> <action type="maintenance_incident"> <source project="home:lnussel:branches:openSUSE:Backports:SLE-12" package="plan" rev="71e76daf2c2e9ddb0b9208f54a14f608"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:Backports:SLE-12"/> </action> <state name="review" who="lnussel" when="2014-11-13T13:22:02"> <comment></comment> </state> <review state="new" by_user="******"/> <history who="lnussel" when="2014-11-13T13:22:02"> <description>Request created</description> <comment>test update</comment> </history> <description>test update</description> </request> </collection> """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261411", body=""" <request id="261411" creator="lnussel"> <action type="maintenance_incident"> <source project="home:lnussel:branches:openSUSE:Backports:SLE-12" package="plan" rev="71e76daf2c2e9ddb0b9208f54a14f608"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:Backports:SLE-12"/> </action> <state name="review" who="lnussel" when="2014-11-13T13:22:02"> <comment></comment> </state> <review state="new" by_user="******"/> <history who="lnussel" when="2014-11-13T13:22:02"> <description>Request created</description> <comment>test update</comment> </history> <description>test update</description> </request> """) httpretty.register_uri( httpretty.GET, APIURL + "/source/home:lnussel:branches:openSUSE:Backports:SLE-12/plan", body=""" <directory name="plan" rev="1" vrev="1" srcmd5="b4ed19dc30c1b328168bc62a81ec6998"> <linkinfo project="home:lnussel:plan" package="plan" srcmd5="7a2353f73b29dba970702053229542a0" baserev="7a2353f73b29dba970702053229542a0" xsrcmd5="71e76daf2c2e9ddb0b9208f54a14f608" lsrcmd5="b4ed19dc30c1b328168bc62a81ec6998" /> <entry name="_link" md5="91f81d88456818a18a7332999fb2da18" size="125" mtime="1415807350" /> <entry name="plan.spec" md5="b6814215f6d2e8559b43de9a214b2cbd" size="8103" mtime="1413627959" /> </directory> """) httpretty.register_uri( httpretty.GET, APIURL + "/search/owner?project=openSUSE:Backports:SLE-12&binary=plan", match_querystring=True, body=""" <collection/> """) httpretty.register_uri(httpretty.GET, APIURL + "/search/owner?binary=plan", match_querystring=True, body=""" <collection/> """) 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, '<status code="ok"/>') 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'])
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 = '******', \ 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 = """ <collection matches="1"> <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> </collection> """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261355", match_querystring = True, body = """ <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> """) httpretty.register_uri(httpretty.GET, APIURL + "/source/home:brassh/mysql-workbench", match_querystring = True, body = """ <directory name="mysql-workbench" rev="6" vrev="6" srcmd5="858204decf53f923d5574dbe6ae63b15"> <linkinfo project="openSUSE:13.2" package="mysql-workbench" srcmd5="ed9c3b12388cbd14868eb3faabe34685" baserev="ed9c3b12388cbd14868eb3faabe34685" xsrcmd5="08bfb4f40cb1e2de8f9cd4633bf02eb1" lsrcmd5="858204decf53f923d5574dbe6ae63b15" /> <serviceinfo code="succeeded" xsrcmd5="6ec4305a8e5363e26a7f4895a0ae12d2" /> <entry name="_link" md5="85ef5fb38ca1ec7c300311fda9f4b3d1" size="121" mtime="1414567341" /> <entry name="mysql-workbench-community-6.1.7-src.tar.gz" md5="ac059e239869fb77bf5d7a1f5845a8af" size="24750696" mtime="1404405925" /> <entry name="mysql-workbench-ctemplate.patch" md5="06ccba1f8275cd9408f515828ecede19" size="1322" mtime="1404658323" /> <entry name="mysql-workbench-glib.patch" md5="67fd7d8e3503ce0909381bde747c8a1e" size="1785" mtime="1415732509" /> <entry name="mysql-workbench-mysql_options4.patch" md5="9c07dfe1b94af95daf3e16bd6a161684" size="910" mtime="1404658324" /> <entry name="mysql-workbench-no-check-for-updates.patch" md5="1f0c9514ff8218d361ea46d3031b2b64" size="1139" mtime="1404658324" /> <entry name="mysql-workbench.changes" md5="26bc54777e6a261816b72f64c69630e4" size="13354" mtime="1415747835" /> <entry name="mysql-workbench.spec" md5="88b562a93f01b842a5798f809e3c8188" size="7489" mtime="1415745943" /> <entry name="openSUSE_(Vendor_Package).xml" md5="ab041af98d7748c216e7e5787ec36f65" size="743" mtime="1315923090" /> <entry name="patch-desktop-categories.patch" md5="c24b3283573c34a5e072be122388f8e1" size="391" mtime="1376991147" /> </directory> """) 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, '<status code="ok"/>') 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 = """ <collection/> """) httpretty.register_uri(httpretty.GET, APIURL + "/search/owner?binary=mysql-workbench", match_querystring = True, body = """ <collection> <owner rootproject="openSUSE" project="server:database" package="mysql-workbench"> <person name="Gankov" role="maintainer"/> <person name="bruno_friedmann" role="maintainer"/> </owner> </collection> """) 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 = """ <collection matches="1"> <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <review state="new" by_package="mysql-workbench" by_project="server:database"> <comment>review by devel project</comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> </collection> """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261355", match_querystring = True, body = """ <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <review state="new" by_package="mysql-workbench" by_project="server:database"> <comment>review by devel project</comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> """) httpretty.register_uri(httpretty.GET, APIURL + "/source/home:brassh/mysql-workbench", match_querystring = True, body = """ <directory name="mysql-workbench" rev="6" vrev="6" srcmd5="858204decf53f923d5574dbe6ae63b15"> <linkinfo project="openSUSE:13.2" package="mysql-workbench" srcmd5="ed9c3b12388cbd14868eb3faabe34685" baserev="ed9c3b12388cbd14868eb3faabe34685" xsrcmd5="08bfb4f40cb1e2de8f9cd4633bf02eb1" lsrcmd5="858204decf53f923d5574dbe6ae63b15" /> <serviceinfo code="succeeded" xsrcmd5="6ec4305a8e5363e26a7f4895a0ae12d2" /> <entry name="_link" md5="85ef5fb38ca1ec7c300311fda9f4b3d1" size="121" mtime="1414567341" /> <entry name="mysql-workbench-community-6.1.7-src.tar.gz" md5="ac059e239869fb77bf5d7a1f5845a8af" size="24750696" mtime="1404405925" /> <entry name="mysql-workbench-ctemplate.patch" md5="06ccba1f8275cd9408f515828ecede19" size="1322" mtime="1404658323" /> <entry name="mysql-workbench-glib.patch" md5="67fd7d8e3503ce0909381bde747c8a1e" size="1785" mtime="1415732509" /> <entry name="mysql-workbench-mysql_options4.patch" md5="9c07dfe1b94af95daf3e16bd6a161684" size="910" mtime="1404658324" /> <entry name="mysql-workbench-no-check-for-updates.patch" md5="1f0c9514ff8218d361ea46d3031b2b64" size="1139" mtime="1404658324" /> <entry name="mysql-workbench.changes" md5="26bc54777e6a261816b72f64c69630e4" size="13354" mtime="1415747835" /> <entry name="mysql-workbench.spec" md5="88b562a93f01b842a5798f809e3c8188" size="7489" mtime="1415745943" /> <entry name="openSUSE_(Vendor_Package).xml" md5="ab041af98d7748c216e7e5787ec36f65" size="743" mtime="1315923090" /> <entry name="patch-desktop-categories.patch" md5="c24b3283573c34a5e072be122388f8e1" size="391" mtime="1376991147" /> </directory> """) 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, '<status code="ok"/>') 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 = """ <collection/> """) httpretty.register_uri(httpretty.GET, APIURL + "/search/owner?binary=mysql-workbench", match_querystring = True, body = """ <collection> <owner rootproject="openSUSE" project="server:database" package="mysql-workbench"> <person name="Gankov" role="maintainer"/> <person name="bruno_friedmann" role="maintainer"/> </owner> </collection> """) 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, APIURL + '/search/request', body = """ <collection matches="1"> <request id="261411" creator="lnussel"> <action type="maintenance_incident"> <source project="home:lnussel:branches:openSUSE:Backports:SLE-12" package="plan" rev="71e76daf2c2e9ddb0b9208f54a14f608"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:Backports:SLE-12"/> </action> <state name="review" who="lnussel" when="2014-11-13T13:22:02"> <comment></comment> </state> <review state="new" by_user="******"/> <history who="lnussel" when="2014-11-13T13:22:02"> <description>Request created</description> <comment>test update</comment> </history> <description>test update</description> </request> </collection> """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261411", body = """ <request id="261411" creator="lnussel"> <action type="maintenance_incident"> <source project="home:lnussel:branches:openSUSE:Backports:SLE-12" package="plan" rev="71e76daf2c2e9ddb0b9208f54a14f608"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:Backports:SLE-12"/> </action> <state name="review" who="lnussel" when="2014-11-13T13:22:02"> <comment></comment> </state> <review state="new" by_user="******"/> <history who="lnussel" when="2014-11-13T13:22:02"> <description>Request created</description> <comment>test update</comment> </history> <description>test update</description> </request> """) httpretty.register_uri(httpretty.GET, APIURL + "/source/home:lnussel:branches:openSUSE:Backports:SLE-12/plan", body = """ <directory name="plan" rev="1" vrev="1" srcmd5="b4ed19dc30c1b328168bc62a81ec6998"> <linkinfo project="home:lnussel:plan" package="plan" srcmd5="7a2353f73b29dba970702053229542a0" baserev="7a2353f73b29dba970702053229542a0" xsrcmd5="71e76daf2c2e9ddb0b9208f54a14f608" lsrcmd5="b4ed19dc30c1b328168bc62a81ec6998" /> <entry name="_link" md5="91f81d88456818a18a7332999fb2da18" size="125" mtime="1415807350" /> <entry name="plan.spec" md5="b6814215f6d2e8559b43de9a214b2cbd" size="8103" mtime="1413627959" /> </directory> """) httpretty.register_uri(httpretty.GET, APIURL + '/search/owner', body = """ <collection/> """) result = { 'factory_review_added' : None } def change_request(result, method, uri, headers): query = parse_qs(urlparse(uri).query) if query == { 'cmd': ['addreview'], 'by_user': ['factory-source'] }: result['factory_review_added'] = True return (200, headers, '<status code="ok"/>') 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'])
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='******', 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=""" <collection matches="1"> <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> </collection> """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261355", match_querystring=True, body=""" <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> """) httpretty.register_uri(httpretty.GET, APIURL + "/source/home:brassh/mysql-workbench", match_querystring=True, body=""" <directory name="mysql-workbench" rev="6" vrev="6" srcmd5="858204decf53f923d5574dbe6ae63b15"> <linkinfo project="openSUSE:13.2" package="mysql-workbench" srcmd5="ed9c3b12388cbd14868eb3faabe34685" baserev="ed9c3b12388cbd14868eb3faabe34685" xsrcmd5="08bfb4f40cb1e2de8f9cd4633bf02eb1" lsrcmd5="858204decf53f923d5574dbe6ae63b15" /> <serviceinfo code="succeeded" xsrcmd5="6ec4305a8e5363e26a7f4895a0ae12d2" /> <entry name="_link" md5="85ef5fb38ca1ec7c300311fda9f4b3d1" size="121" mtime="1414567341" /> <entry name="mysql-workbench-community-6.1.7-src.tar.gz" md5="ac059e239869fb77bf5d7a1f5845a8af" size="24750696" mtime="1404405925" /> <entry name="mysql-workbench-ctemplate.patch" md5="06ccba1f8275cd9408f515828ecede19" size="1322" mtime="1404658323" /> <entry name="mysql-workbench-glib.patch" md5="67fd7d8e3503ce0909381bde747c8a1e" size="1785" mtime="1415732509" /> <entry name="mysql-workbench-mysql_options4.patch" md5="9c07dfe1b94af95daf3e16bd6a161684" size="910" mtime="1404658324" /> <entry name="mysql-workbench-no-check-for-updates.patch" md5="1f0c9514ff8218d361ea46d3031b2b64" size="1139" mtime="1404658324" /> <entry name="mysql-workbench.changes" md5="26bc54777e6a261816b72f64c69630e4" size="13354" mtime="1415747835" /> <entry name="mysql-workbench.spec" md5="88b562a93f01b842a5798f809e3c8188" size="7489" mtime="1415745943" /> <entry name="openSUSE_(Vendor_Package).xml" md5="ab041af98d7748c216e7e5787ec36f65" size="743" mtime="1315923090" /> <entry name="patch-desktop-categories.patch" md5="c24b3283573c34a5e072be122388f8e1" size="391" mtime="1376991147" /> </directory> """) 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, '<status code="ok"/>') 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=""" <collection/> """) httpretty.register_uri(httpretty.GET, APIURL + "/search/owner?binary=mysql-workbench", match_querystring=True, body=""" <collection> <owner rootproject="openSUSE" project="server:database" package="mysql-workbench"> <person name="Gankov" role="maintainer"/> <person name="bruno_friedmann" role="maintainer"/> </owner> </collection> """) 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=""" <collection matches="1"> <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <review state="new" by_package="mysql-workbench" by_project="server:database"> <comment>review by devel project</comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> </collection> """) httpretty.register_uri(httpretty.GET, APIURL + "/request/261355", match_querystring=True, body=""" <request id="261355" creator="brassh"> <action type="maintenance_incident"> <source project="home:brassh" package="mysql-workbench" rev="857c77d2ba1d347b6dc50a1e5bcb74e1"/> <target project="openSUSE:Maintenance" releaseproject="openSUSE:13.2:Update"/> </action> <state name="review" who="lnussel_factory" when="2014-11-13T10:46:52"> <comment></comment> </state> <review state="new" by_user="******"> <comment></comment> </review> <review state="new" by_package="mysql-workbench" by_project="server:database"> <comment>review by devel project</comment> </review> <history who="brassh" when="2014-11-13T09:18:19"> <description>Request created</description> <comment>...</comment> </history> <history who="lnussel_factory" when="2014-11-13T10:46:52"> <description>Request got a new review request</description> </history> <description>...</description> </request> """) httpretty.register_uri(httpretty.GET, APIURL + "/source/home:brassh/mysql-workbench", match_querystring=True, body=""" <directory name="mysql-workbench" rev="6" vrev="6" srcmd5="858204decf53f923d5574dbe6ae63b15"> <linkinfo project="openSUSE:13.2" package="mysql-workbench" srcmd5="ed9c3b12388cbd14868eb3faabe34685" baserev="ed9c3b12388cbd14868eb3faabe34685" xsrcmd5="08bfb4f40cb1e2de8f9cd4633bf02eb1" lsrcmd5="858204decf53f923d5574dbe6ae63b15" /> <serviceinfo code="succeeded" xsrcmd5="6ec4305a8e5363e26a7f4895a0ae12d2" /> <entry name="_link" md5="85ef5fb38ca1ec7c300311fda9f4b3d1" size="121" mtime="1414567341" /> <entry name="mysql-workbench-community-6.1.7-src.tar.gz" md5="ac059e239869fb77bf5d7a1f5845a8af" size="24750696" mtime="1404405925" /> <entry name="mysql-workbench-ctemplate.patch" md5="06ccba1f8275cd9408f515828ecede19" size="1322" mtime="1404658323" /> <entry name="mysql-workbench-glib.patch" md5="67fd7d8e3503ce0909381bde747c8a1e" size="1785" mtime="1415732509" /> <entry name="mysql-workbench-mysql_options4.patch" md5="9c07dfe1b94af95daf3e16bd6a161684" size="910" mtime="1404658324" /> <entry name="mysql-workbench-no-check-for-updates.patch" md5="1f0c9514ff8218d361ea46d3031b2b64" size="1139" mtime="1404658324" /> <entry name="mysql-workbench.changes" md5="26bc54777e6a261816b72f64c69630e4" size="13354" mtime="1415747835" /> <entry name="mysql-workbench.spec" md5="88b562a93f01b842a5798f809e3c8188" size="7489" mtime="1415745943" /> <entry name="openSUSE_(Vendor_Package).xml" md5="ab041af98d7748c216e7e5787ec36f65" size="743" mtime="1315923090" /> <entry name="patch-desktop-categories.patch" md5="c24b3283573c34a5e072be122388f8e1" size="391" mtime="1376991147" /> </directory> """) 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, '<status code="ok"/>') 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=""" <collection/> """) httpretty.register_uri(httpretty.GET, APIURL + "/search/owner?binary=mysql-workbench", match_querystring=True, body=""" <collection> <owner rootproject="openSUSE" project="server:database" package="mysql-workbench"> <person name="Gankov" role="maintainer"/> <person name="bruno_friedmann" role="maintainer"/> </owner> </collection> """) self.checker.requests = [] self.checker.set_request_ids_search_review() self.checker.check_requests() self.assertFalse(result['devel_review_added'])