def test_check_patch_reviews(self):
        bz = Bugzilla(api_url="fake")
        with self.assertRaises(autoland.errors.ReviewException):
            bz.check_patch_reviews({'id': 1}, "perms")
        bz.ldap = mock.MagicMock()
        bz.ldap.in_ldap_group.return_value = False
        p = {"id": 1,
             "reviews": [
                 {"result": "+", "reviewer": {"email": "u@m"}},
             ]}
        with self.assertRaises(autoland.errors.ReviewException):
            bz.check_patch_reviews(p, "perms")

        bz.ldap.in_ldap_group.return_value = True
        self.assertEquals(None, bz.check_patch_reviews(p, "perms"))
        p["reviews"][0]["result"] = "?"
        with self.assertRaises(autoland.errors.ReviewException):
            bz.check_patch_reviews(p, "perms")
        # Multpiple approvals
        p = {"id": 1,
             "reviews": [
                 {"result": "+", "reviewer": {"email": "u@m"}},
                 {"result": "+", "reviewer": {"email": "u@m"}},
             ]}
        self.assertEquals(None, bz.check_patch_reviews(p, "perms"))
        p["reviews"][0]["result"] = "-"
        with self.assertRaises(autoland.errors.ReviewException):
            bz.check_patch_reviews(p, "perms")
        p["reviews"][0]["result"] = "?"
        with self.assertRaises(autoland.errors.ReviewException):
            bz.check_patch_reviews(p, "perms")
 def test_check_patch_approvals(self):
     bz = Bugzilla(api_url="fake")
     with self.assertRaises(autoland.errors.ApprovalException):
         bz.check_patch_approvals({'id': 1}, "branch", "perms")
     p = {"id": 1, "approvals": [{"type": "release", "result": "+",
                                  "approver": {"email": "user@m"}}]}
     bz.ldap = mock.MagicMock()
     bz.ldap.in_ldap_group.return_value = False
     with self.assertRaises(autoland.errors.ApprovalException):
         bz.check_patch_approvals(p, "release", "perms")
     bz.ldap.in_ldap_group.return_value = True
     self.assertEquals(None, bz.check_patch_approvals(p, "release",
                                                      "perms"))
     with self.assertRaises(autoland.errors.ApprovalException):
         bz.check_patch_approvals(p, "beta", "perms")
     p["approvals"][0]["result"] = "?"
     with self.assertRaises(autoland.errors.ApprovalException):
         bz.check_patch_approvals(p, "release", "perms")
     # Multpiple approvals
     p = {"id": 1,
          "approvals": [
              {"type": "release", "result": "+",
               "approver": {"email": "u@m"}},
              {"type": "release", "result": "?",
               "approver": {"email": "u@m"}},
          ]}
     with self.assertRaises(autoland.errors.ApprovalException):
         bz.check_patch_approvals(p, "release", "perms")
     p["approvals"][0]["result"] = "-"
     with self.assertRaises(autoland.errors.ApprovalException):
         bz.check_patch_approvals(p, "release", "perms")