Skip to content

Commit

Permalink
Bug 1257298 : Modified forms.py and added tests to web layer
Browse files Browse the repository at this point in the history
  • Loading branch information
aksareen committed Feb 3, 2017
1 parent c7feceb commit b050609
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 2 deletions.
4 changes: 2 additions & 2 deletions auslib/admin/views/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ class RuleForm(Form):
fallbackMapping = NullableStringField('fallbackMapping', validators=[Optional()])
alias = NullableStringField('Alias', validators=[Length(0, 50), Regexp(RULE_ALIAS_REGEXP)])
product = NullableStringField('Product', validators=[Length(0, 15)])
version = NullableStringField('Version', validators=[Length(0, 10), version_validator()])
version = NullableStringField('Version', validators=[Length(0, 75), version_validator()])
buildID = NullableStringField('BuildID', validators=[Length(0, 20), operator_validator()])
channel = NullableStringField('Channel', validators=[Length(0, 75)])
locale = NullableStringField('Locale', validators=[Length(0, 200)])
Expand All @@ -258,7 +258,7 @@ class EditRuleForm(DbEditableForm):
fallbackMapping = NullableStringField('fallbackMapping', validators=[Optional()])
alias = NullableStringField('Alias', validators=[Optional(), Length(0, 50), Regexp(RULE_ALIAS_REGEXP)])
product = NullableStringField('Product', validators=[Optional(), Length(0, 15)])
version = NullableStringField('Version', validators=[Optional(), Length(0, 10), version_validator()])
version = NullableStringField('Version', validators=[Optional(), Length(0, 75), version_validator()])
buildID = NullableStringField('BuildID', validators=[Optional(), Length(0, 20), operator_validator()])
channel = NullableStringField('Channel', validators=[Optional(), Length(0, 75)])
locale = NullableStringField('Locale', validators=[Optional(), Length(0, 200)])
Expand Down
101 changes: 101 additions & 0 deletions auslib/test/admin/views/test_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,36 @@ def testPriorityZero(self):
self.assertEquals(r[0]['priority'], 0)
self.assertEquals(r[0]['data_version'], 1)

def testVersionMaxFieldLength(self):
# Max field length of rules.version is 75
version = '3.3,3.4,3.5,3.6,3.8,3.9,3.10,3.11,3.12,3.13,3.14,3.15'
ret = self._post(
'/rules/1',
data=dict(
backgroundRate=71,
mapping='d',
version='{}'.format(version),
priority=73,
data_version=1,
product='Firefox',
update_type='minor',
channel='nightly',
buildID='1234',
osVersion='10.5',
headerArchitecture='INTEL',
distVersion='19',
buildTarget='MAC',
)
)
self.assertEquals(
ret.status_code,
200,
"Status Code: %d, Data: %s" % (ret.status_code, ret.data)
)
ret = dbo.rules.select(where={"rule_id": 1}, columns=["version"])
self.assertEquals(ret[0].get("version"), version)
self.assertEquals(len(ret[0].get("version")), len(version))

def testNewRulePostJSON(self):
data = dict(
backgroundRate=31, mapping="c", priority=33, product="Firefox",
Expand Down Expand Up @@ -534,6 +564,36 @@ def testGetRevisions(self):
self.assertTrue(u"rule_id" in got["rules"][0])
self.assertTrue(u"backgroundRate" in got["rules"][0])

def testVersionMaxFieldLength(self):
# Max field length of rules.version is 75
version = '3.3,3.4,3.5,3.6,3.8,3.9,3.10,3.11'
ret = self._post(
'/rules/1',
data=dict(
backgroundRate=71,
mapping='d',
version='{}'.format(version),
priority=73,
data_version=1,
product='Firefox',
update_type='minor',
channel='nightly',
buildID='1234',
osVersion='10.5',
headerArchitecture='INTEL',
distVersion='19',
buildTarget='MAC',
)
)
self.assertEquals(
ret.status_code,
200,
"Status Code: %d, Data: %s" % (ret.status_code, ret.data)
)
ret = dbo.rules.history.select(where={"rule_id": 1}, columns=["version"])
self.assertEquals(ret[0].get("version"), version)
self.assertEquals(len(ret[0].get("version")), len(version))

def testPostRevisionRollback(self):
# Make some changes to a rule
ret = self._post(
Expand Down Expand Up @@ -1027,6 +1087,47 @@ def testUpdateScheduledChange(self):
cond_expected = {"sc_id": 1, "data_version": 2, "when": 2000000, "telemetry_product": None, "telemetry_channel": None, "telemetry_uptake": None}
self.assertEquals(dict(cond[0]), cond_expected)

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateScheduledChangeVersionFieldLength(self):
version = '3.3,3.4,3.5,3.6,3.8,3.9,3.10,3.11'
data = {
"when": 2000000, "data_version": 1, "rule_id": 1, "priority": 100, "version": "{}".format(version),
"buildTarget": "d", "backgroundRate": 100, "mapping": "c", "update_type": "minor", "sc_data_version": 1
}
ret = self._post("/scheduled_changes/rules/1", data=data)
self.assertEquals(ret.status_code, 200, ret.data)

ret = dbo.rules.scheduled_changes.t.select().where(dbo.rules.scheduled_changes.sc_id == 1).execute().fetchall()
self.assertEquals(len(ret), 1)
db_data = dict(ret[0])
expected = {
"sc_id": 1, "scheduled_by": "bill", "data_version": 2, "complete": False, "base_rule_id": 1,
"base_priority": 100, "base_version": "{}".format(version), "base_buildTarget": "d",
"base_backgroundRate": 100, "base_mapping": "c", "base_update_type": "minor", "base_data_version": 1,
"base_alias": None, "base_product": "a", "base_channel": "a", "base_buildID": None, "base_locale": None,
"base_osVersion": None, "base_distribution": None, "base_fallbackMapping": None, "base_distVersion": None,
"base_headerArchitecture": None, "base_comment": None, "base_whitelist": None,
"base_systemCapabilities": None, "change_type": "update",
}
self.assertEquals(db_data, expected)

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateScheduledChangeHistoryVersionFieldLength(self):
version = '3.3,3.4,3.5,3.6,3.8,3.9,3.10,3.11'
data = {
"when": 2000000, "data_version": 1, "rule_id": 1, "priority": 100, "version": "{}".format(version),
"buildTarget": "d", "backgroundRate": 100, "mapping": "c", "update_type": "minor", "sc_data_version": 1
}
ret = self._post("/scheduled_changes/rules/1", data=data)
self.assertEquals(ret.status_code, 200, ret.data)

ret = dbo.rules.scheduled_changes.history.t.select().where(dbo.rules.scheduled_changes.history.sc_id == 1).execute().fetchall()
self.assertEquals(len(ret), 1)
db_data = dict(ret[0])
expected = {"base_version": "{}".format(version)}
self.assertEquals(db_data["base_version"], expected["base_version"])
self.assertEquals(len(db_data["base_version"]), len(expected["base_version"]))

@mock.patch("time.time", mock.MagicMock(return_value=300))
def testUpdateScheduledChangeResetSignOffs(self):
data = {
Expand Down

0 comments on commit b050609

Please sign in to comment.