Skip to content

Commit

Permalink
Bug 1336452: Scheduled changes Remaining APIs (#368). r=bhearsum
Browse files Browse the repository at this point in the history
  • Loading branch information
aksareen authored and bhearsum committed Aug 11, 2017
1 parent 28af89f commit e99b26b
Show file tree
Hide file tree
Showing 17 changed files with 1,247 additions and 219 deletions.
8 changes: 8 additions & 0 deletions auslib/test/admin/views/test_permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,14 @@ def testAddScheduledChangeDeletePermission(self):
cond_expected = {"sc_id": 7, "data_version": 1, "when": 400000000}
self.assertEquals(dict(cond[0]), cond_expected)

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateScheduledUnknownScheduledChangeID(self):
data = {
"options": '{"products": ["Thunderbird"]}', "data_version": 1, "sc_data_version": 1, "when": 200000000,
}
ret = self._post("/scheduled_changes/permissions/98765", data=data)
self.assertEquals(ret.status_code, 404, ret.data)

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateScheduledChangeExistingPermission(self):
data = {
Expand Down
9 changes: 9 additions & 0 deletions auslib/test/admin/views/test_releases.py
Original file line number Diff line number Diff line change
Expand Up @@ -1232,6 +1232,15 @@ def testAddScheduledChangeNewRelease(self):
cond_expected = {"sc_id": 5, "data_version": 1, "when": 5200000000}
self.assertEquals(dict(cond[0]), cond_expected)

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateScheduledUnknownScheduledChangeID(self):
data = {
"data": '{"name": "a", "hashFunction": "sha512", "extv": "3.0", "schema_version": 1}', "name": "a",
"data_version": 1, "sc_data_version": 1, "when": 78900000000, "change_type": "update",
}
ret = self._post("/scheduled_changes/releases/98765432", data=data)
self.assertEquals(ret.status_code, 404, ret.data)

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateScheduledChangeExistingRelease(self):
data = {
Expand Down
11 changes: 11 additions & 0 deletions auslib/test/admin/views/test_required_signoffs.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,17 @@ def testAddScheduledChangeDeleteRequiredSignoff(self):
cond_expected = {"sc_id": 5, "data_version": 1, "when": 400000000}
self.assertEquals(dict(cond[0]), cond_expected)

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateScheduledUnknownScheduledChangeID(self):
data = {
"signoffs_required": 1, "data_version": 1, "sc_data_version": 1, "when": 200000000,
}
ret = self._post("/scheduled_changes/required_signoffs/product/98765432", data=data)
self.assertEquals(ret.status_code, 404, ret.data)

ret = self._post("/scheduled_changes/required_signoffs/permissions/98765432", data=data)
self.assertEquals(ret.status_code, 404, ret.data)

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateScheduledChangeExistingRequiredSignoff(self):
data = {
Expand Down
9 changes: 9 additions & 0 deletions auslib/test/admin/views/test_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -1257,6 +1257,15 @@ def testUpdateCompletedScheduleChange(self):
ret = self._post("/scheduled_changes/rules/4", data=data)
self.assertEquals(ret.status_code, 400, ret.data)

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateUnknownScheduledChangeID(self):
data = {
"when": 2000000, "data_version": 1, "rule_id": 1, "priority": 100, "version": "3.5", "buildTarget": "d",
"backgroundRate": 100, "mapping": "c", "update_type": "minor", "sc_data_version": 1
}
ret = self._post("/scheduled_changes/rules/9876", data=data)
self.assertEquals(ret.status_code, 404, ret.data)

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateScheduledChange(self):
data = {
Expand Down
40 changes: 1 addition & 39 deletions auslib/web/admin/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,13 @@
'body': BalrogRequestBodyValidator
}

# TODO set debug=False after fully migrating all the admin APIs
connexion_app = connexion.App(__name__, specification_dir='swagger/', validator_map=validator_map, debug=True)
connexion_app = connexion.App(__name__, specification_dir='swagger/', validator_map=validator_map, debug=False)
connexion_app.add_api("api.yaml", validate_responses=True, strict_validation=True)
app = connexion_app.app
sentry = Sentry()

from auslib.web.admin.views.permissions import PermissionScheduledChangeView, \
PermissionScheduledChangeHistoryView
from auslib.web.admin.views.releases import ReleaseScheduledChangeHistoryView, ReleaseScheduledChangeView
from auslib.web.admin.views.required_signoffs import \
ProductRequiredSignoffScheduledChangeView, \
ProductRequiredSignoffScheduledChangeHistoryView, \
PermissionsRequiredSignoffScheduledChangeView, \
PermissionsRequiredSignoffScheduledChangeHistoryView
from auslib.web.admin.views.rules import RuleScheduledChangeHistoryView, RuleScheduledChangeView
from auslib.dockerflow import create_dockerflow_endpoints


create_dockerflow_endpoints(app)


Expand Down Expand Up @@ -75,30 +64,3 @@ def add_security_headers(response):


Compress(app)


# Endpoints required for the Balrog 2.0 UI.
# In the Mozilla deployments of Balrog, both the the admin API (these endpoints)
# and the static admin UI are hosted on the same domain. This API wsgi app is
# hosted at "/api", which is stripped away by the web server before we see
# these requests.
app.add_url_rule("/scheduled_changes/rules/<int:sc_id>", view_func=RuleScheduledChangeView.as_view("scheduled_change_rules"))
app.add_url_rule("/scheduled_changes/rules/<int:sc_id>/revisions", view_func=RuleScheduledChangeHistoryView.as_view("scheduled_change_rules_history"))

app.add_url_rule("/scheduled_changes/permissions/<int:sc_id>", view_func=PermissionScheduledChangeView.as_view("scheduled_change_permissions"))
app.add_url_rule("/scheduled_changes/permissions/<int:sc_id>/revisions",
view_func=PermissionScheduledChangeHistoryView.as_view("scheduled_change_permissions_history"))

app.add_url_rule("/scheduled_changes/releases/<int:sc_id>", view_func=ReleaseScheduledChangeView.as_view("scheduled_change_releases"))
app.add_url_rule("/scheduled_changes/releases/<int:sc_id>/revisions",
view_func=ReleaseScheduledChangeHistoryView.as_view("scheduled_change_releases_history"))

app.add_url_rule("/scheduled_changes/required_signoffs/product/<int:sc_id>",
view_func=ProductRequiredSignoffScheduledChangeView.as_view("scheduled_change_product_rs"))
app.add_url_rule("/scheduled_changes/required_signoffs/product/<int:sc_id>/revisions",
view_func=ProductRequiredSignoffScheduledChangeHistoryView.as_view("scheduled_change_product_rs_history"))

app.add_url_rule("/scheduled_changes/required_signoffs/permissions/<int:sc_id>",
view_func=PermissionsRequiredSignoffScheduledChangeView.as_view("scheduled_change_permissions_rs"))
app.add_url_rule("/scheduled_changes/required_signoffs/permissions/<int:sc_id>/revisions",
view_func=PermissionsRequiredSignoffScheduledChangeHistoryView.as_view("scheduled_change_permissions_rs_history"))
Loading

0 comments on commit e99b26b

Please sign in to comment.