def setUp(self): app.config["DEBUG"] = True app.config["WHITELISTED_DOMAINS"] = ("a.com",) dbo.setDb("sqlite:///:memory:") dbo.create() self.client = app.test_client() self.view = ClientRequestView()
def setUp(self): self.AUS = AUS() dbo.setDb('sqlite:///:memory:') dbo.create() dbo.releases.t.insert().execute( name='b', product='b', version='b', data_version=1, data='{"name": "b", "extv": "1.0", "schema_version": 1, "platforms": {"a": {"buildID": "1", "locales": {"a": {}}}}}')
def setUp(self): self.version_fd, self.version_file = mkstemp() cache.reset() cache.make_copies = True app.config["SECRET_KEY"] = 'abc123' app.config['DEBUG'] = True app.config["WTF_CSRF_ENABLED"] = False app.config['WHITELISTED_DOMAINS'] = ['good.com'] app.config["VERSION_FILE"] = self.version_file with open(self.version_file, "w+") as f: f.write(""" { "source":"https://github.com/mozilla/balrog", "version":"1.0", "commit":"abcdef123456" } """) dbo.setDb('sqlite:///:memory:') dbo.setDomainWhitelist(['good.com']) dbo.create() dbo.permissions.t.insert().execute(permission='admin', username='******', data_version=1) dbo.permissions.t.insert().execute(permission='/users/:id/permissions/:permission', username='******', data_version=1) dbo.permissions.t.insert().execute(permission='/releases/:name', username='******', options=json.dumps(dict(product=['fake'])), data_version=1) dbo.permissions.t.insert().execute(permission='/releases/:name/read_only', username='******', options=json.dumps(dict(method='PUT')), data_version=1) dbo.permissions.t.insert().execute(permission='/rules/:id', username='******', options=json.dumps(dict(product=['fake'])), data_version=1) dbo.releases.t.insert().execute( name='a', product='a', data=json.dumps(dict(name='a', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute( name='ab', product='a', data=json.dumps(dict(name='ab', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute( name='b', product='b', data=json.dumps(dict(name='b', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute( name='c', product='c', data=json.dumps(dict(name='c', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='d', product='d', data_version=1, data=""" { "name": "d", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "locales": { "d": { "complete": { "filesize": 1234, "from": "*", "hashValue": "abc" } } } } } } """) dbo.rules.t.insert().execute(id=1, priority=100, version='3.5', buildTarget='d', backgroundRate=100, mapping='c', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=2, alias="frodo", priority=100, version='3.3', buildTarget='d', backgroundRate=100, mapping='b', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=3, priority=100, version='3.5', buildTarget='a', backgroundRate=100, mapping='a', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=4, product='fake', priority=80, buildTarget='d', backgroundRate=100, mapping='a', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=5, priority=80, buildTarget='d', version='3.3', backgroundRate=0, mapping='c', update_type='minor', data_version=1) self.client = app.test_client()
def setUp(self): app.config['DEBUG'] = True app.config['WHITELISTED_DOMAINS'] = ('a.com',) dbo.setDb('sqlite:///:memory:') dbo.create() self.client = app.test_client() self.view = ClientRequestView()
def setUp(self): app.config['DEBUG'] = True app.config['WHITELISTED_DOMAINS'] = ('a.com', ) dbo.setDb('sqlite:///:memory:') dbo.create() self.client = app.test_client() self.view = ClientRequestView()
def db_schema(): """This fixture creates a fresh in-memory database, and then runs all the schema migration logic, and returns the schema metadata of the final DB state. It runs once per test session. """ dbo.setDb('sqlite:///:memory:') dbo.create() return dbo.metadata
def db_schema(): """This fixture creates a fresh in-memory database, and then runs all the schema migration logic, and returns the schema metadata of the final DB state. It runs once per test session. """ dbo.setDb("sqlite:///:memory:") dbo.create() return dbo.metadata
def setUp(self): dbo.setDb('sqlite:///:memory:') dbo.create() dbo.releases.t.insert().execute( name='b', product='b', data_version=1, data=createBlob({"name": "b", "extv": "1.0", "schema_version": 1, "platforms": {"a": {"buildID": "1", "locales": {"a": {}}}}})) dbo.releases.t.insert().execute( name='fallback', product='c', data_version=1, data=createBlob({"name": "fallback", "extv": "1.0", "schema_version": 1, "platforms": {"a": {"buildID": "1", "locales": {"a": {}}}}}))
def setUp(self): self.AUS = AUS() dbo.setDb('sqlite:///:memory:') dbo.create() dbo.releases.t.insert().execute( name='b', product='b', data_version=1, data= '{"name": "b", "extv": "1.0", "schema_version": 1, "platforms": {"a": {"buildID": "1", "locales": {"a": {}}}}}' )
def setUp(self): self.specialForceHosts = ["http://a.com"] self.whitelistedDomains = ["a.com", "boring.com"] dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist(["a.com", "boring.com"]) dbo.releases.t.insert().execute(name='j1', product='j', version='0.5', data_version=1, data=""" { "name": "j1", "schema_version": 2, "platforms": { "p": { "locales": { "l": { "buildID": "1" } } } } } """) self.blobJ2 = ReleaseBlobV2() self.blobJ2.loadJSON(""" { "name": "j2", "schema_version": 2, "hashFunction": "sha512", "platforms": { "p": { "locales": { "l": { "buildID": "3", "appVersion": "2", "platformVersion": "2", "displayVersion": "2", "partial": { "filesize": 3, "from": "j1", "hashValue": 4, "fileUrl": "http://a.com/p" }, "complete": { "filesize": 5, "from": "*", "hashValue": "6", "fileUrl": "http://a.com/c" } } } } } } """)
def setUp(self): self.cef_fd, self.cef_file = mkstemp() app.config["SECRET_KEY"] = 'abc123' app.config['DEBUG'] = True app.config["WTF_CSRF_ENABLED"] = False app.config['WHITELISTED_DOMAINS'] = ['good.com'] auslib.log.cef_config = auslib.log.get_cef_config(self.cef_file) dbo.setDb('sqlite:///:memory:') dbo.setDomainWhitelist(['good.com']) dbo.create() dbo.permissions.t.insert().execute(permission='admin', username='******', data_version=1) dbo.permissions.t.insert().execute(permission='/users/:id/permissions/:permission', username='******', data_version=1) dbo.permissions.t.insert().execute(permission='/releases/:name', username='******', options=json.dumps(dict(product=['fake'])), data_version=1) dbo.permissions.t.insert().execute(permission='/rules/:id', username='******', options=json.dumps(dict(product=['fake'])), data_version=1) dbo.releases.t.insert().execute(name='a', product='a', version='a', data=json.dumps(dict(name='a', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='ab', product='a', version='a', data=json.dumps(dict(name='ab', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='b', product='b', version='b', data=json.dumps(dict(name='b', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='c', product='c', version='c', data=json.dumps(dict(name='c', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='d', product='d', version='d', data_version=1, data=""" { "name": "d", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "locales": { "d": { "complete": { "filesize": "1234" } } } } } } """) dbo.rules.t.insert().execute(id=1, priority=100, version='3.5', buildTarget='d', backgroundRate=100, mapping='c', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=2, priority=100, version='3.3', buildTarget='d', backgroundRate=100, mapping='b', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=3, priority=100, version='3.5', buildTarget='a', backgroundRate=100, mapping='a', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=4, product='fake', priority=80, buildTarget='d', backgroundRate=100, mapping='a', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=5, priority=80, buildTarget='d', version='3.3', backgroundRate=0, mapping='c', update_type='minor', data_version=1) self.client = app.test_client()
def setUp(self): dbo.setDb('sqlite:///:memory:') dbo.create() self.client = app.test_client()
def setUp(self): self.version_fd, self.version_file = mkstemp() cache.reset() cache.make_copies = True app.config["SECRET_KEY"] = 'abc123' app.config['DEBUG'] = True app.config["WTF_CSRF_ENABLED"] = False app.config['WHITELISTED_DOMAINS'] = {'good.com': ('a', 'b', 'c', 'd')} app.config["VERSION_FILE"] = self.version_file with open(self.version_file, "w+") as f: f.write(""" { "source":"https://github.com/mozilla/balrog", "version":"1.0", "commit":"abcdef123456" } """) dbo.setDb('sqlite:///:memory:') dbo.setDomainWhitelist({'good.com': ('a', 'b', 'c', 'd')}) dbo.create() dbo.permissions.t.insert().execute(permission='admin', username='******', data_version=1) dbo.permissions.t.insert().execute(permission='permission', username='******', data_version=1) dbo.permissions.t.insert().execute(permission='release', username='******', options=dict( products=['fake', "a", 'b'], actions=["create", "modify"]), data_version=1) dbo.permissions.t.insert().execute(permission='release_read_only', username='******', options=dict(actions=["set"], products=["a", "b"]), data_version=1) dbo.permissions.t.insert().execute(permission='rule', username='******', options=dict(actions=["modify"], products=['a', "b"]), data_version=1) dbo.permissions.t.insert().execute(permission='release', username='******', options=dict(actions=["modify"], products=['a']), data_version=1) dbo.permissions.t.insert().execute(permission="scheduled_change", username="******", options=dict(actions=["enact"]), data_version=1) dbo.permissions.t.insert().execute(permission='release_locale', username='******', options=dict(actions=["modify"], products=['a']), data_version=1) dbo.permissions.t.insert().execute(permission='admin', username='******', options=dict(products=['a']), data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="releng", data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="qa", data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="relman", data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="releng", data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="relman", data_version=1) dbo.productRequiredSignoffs.t.insert().execute(product="fake", channel="a", role="releng", signoffs_required=1, data_version=1) dbo.productRequiredSignoffs.t.insert().execute(product="fake", channel="e", role="releng", signoffs_required=1, data_version=1) dbo.productRequiredSignoffs.t.insert().execute(product="fake", channel="j", role="releng", signoffs_required=1, data_version=1) dbo.productRequiredSignoffs.t.insert().execute(product="fake", channel="k", role="relman", signoffs_required=1, data_version=2) dbo.productRequiredSignoffs.history.t.insert().execute( change_id=1, changed_by="bill", timestamp=10, product="fake", channel="k", role="relman") dbo.productRequiredSignoffs.history.t.insert().execute( change_id=2, changed_by="bill", timestamp=11, product="fake", channel="k", role="relman", signoffs_required=2, data_version=1) dbo.productRequiredSignoffs.history.t.insert().execute( change_id=3, changed_by="bill", timestamp=25, product="fake", channel="k", role="relman", signoffs_required=1, data_version=2) dbo.permissionsRequiredSignoffs.t.insert().execute(product="fake", role="releng", signoffs_required=1, data_version=1) dbo.permissionsRequiredSignoffs.t.insert().execute(product="bar", role="releng", signoffs_required=1, data_version=1) dbo.permissionsRequiredSignoffs.t.insert().execute(product="blah", role="releng", signoffs_required=1, data_version=1) dbo.permissionsRequiredSignoffs.t.insert().execute(product="doop", role="releng", signoffs_required=1, data_version=2) dbo.permissionsRequiredSignoffs.t.insert().execute(product="superfake", role="relman", signoffs_required=1, data_version=1) dbo.permissionsRequiredSignoffs.history.t.insert().execute( change_id=1, changed_by="bill", timestamp=10, product="doop", role="releng") dbo.permissionsRequiredSignoffs.history.t.insert().execute( change_id=2, changed_by="bill", timestamp=11, product="doop", role="releng", signoffs_required=2, data_version=1) dbo.permissionsRequiredSignoffs.history.t.insert().execute( change_id=3, changed_by="bill", timestamp=25, product="doop", role="releng", signoffs_required=1, data_version=2) dbo.releases.t.insert().execute(name='a', product='a', data=createBlob( dict(name='a', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='ab', product='a', data=createBlob( dict(name='ab', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='b', product='b', data=createBlob( dict(name='b', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='c', product='c', data=createBlob( dict(name='c', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='d', product='d', data_version=1, data=createBlob(""" { "name": "d", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "locales": { "d": { "complete": { "filesize": 1234, "from": "*", "hashValue": "abc" } } } } } } """)) dbo.rules.t.insert().execute(rule_id=1, priority=100, version='3.5', buildTarget='d', backgroundRate=100, mapping='c', update_type='minor', product="a", channel="a", data_version=1) dbo.rules.t.insert().execute(rule_id=2, alias="frodo", priority=100, version='3.3', buildTarget='d', backgroundRate=100, mapping='b', update_type='minor', product="a", channel="a", data_version=1) dbo.rules.t.insert().execute(rule_id=3, product='a', priority=100, version='3.5', buildTarget='a', backgroundRate=100, mapping='a', update_type='minor', channel="a", data_version=1) dbo.rules.t.insert().execute(rule_id=4, product='fake', priority=80, buildTarget='d', backgroundRate=100, mapping='a', update_type='minor', channel="a", data_version=1) dbo.rules.t.insert().execute(rule_id=5, priority=80, buildTarget='d', version='3.3', backgroundRate=0, mapping='c', update_type='minor', product="a", channel="a", data_version=1) dbo.rules.t.insert().execute(rule_id=6, product='fake', priority=40, backgroundRate=50, mapping='a', update_type='minor', channel="e", data_version=1) dbo.rules.t.insert().execute(rule_id=7, product='fake', priority=30, backgroundRate=85, mapping='a', update_type='minor', channel="c", data_version=1) self.client = app.test_client()
def setUp(self): self.cef_fd, self.cef_file = mkstemp() self.version_fd, self.version_file = mkstemp() app.config['DEBUG'] = True app.config['SPECIAL_FORCE_HOSTS'] = ('http://a.com', ) app.config['WHITELISTED_DOMAINS'] = ('a.com', 'boring.com') app.config["VERSION_FILE"] = self.version_file with open(self.version_file, "w+") as f: f.write(""" { "source":"https://github.com/mozilla/balrog", "version":"1.0", "commit":"abcdef123456" } """) dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist(('a.com', 'boring.com')) self.client = app.test_client() self.view = ClientRequestView() auslib.log.cef_config = auslib.log.get_cef_config(self.cef_file) dbo.rules.t.insert().execute(backgroundRate=100, mapping='b', update_type='minor', product='b', data_version=1) dbo.releases.t.insert().execute(name='b', product='b', data_version=1, data=""" { "name": "b", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } }, "xh": { "complete": { "filesize": "5", "from": "*", "hashValue": "6", "fileUrl": "http://a.com/x" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='c', update_type='minor', product='c', distribution='default', data_version=1) dbo.releases.t.insert().execute(name='c', product='c', data_version=1, data=""" { "name": "c", "schema_version": 1, "appv": "10.0", "extv": "10.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "11", "locales": { "l": { "complete": { "filesize": "12", "from": "*", "hashValue": "13", "fileUrl": "http://a.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='d', update_type='minor', product='d', data_version=1) dbo.releases.t.insert().execute(name='d', product='d', data_version=1, data=""" { "name": "d", "schema_version": 1, "appv": "20.0", "extv": "20.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "21", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://evil.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='e', update_type='minor', product='e', data_version=1) dbo.releases.t.insert().execute(name='e', product='e', data_version=1, data=""" { "name": "e", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/y" } } } } } } """) dbo.rules.t.insert().execute(priority=100, backgroundRate=100, mapping='foxfood-whitelisted', update_type='minor', product='b2g', whitelist='b2g-whitelist', data_version=1) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping='foxfood-whitelisted', update_type='minor', product='b2g', channel="foxfood", whitelist='b2g-whitelist', data_version=1) dbo.rules.t.insert().execute(priority=80, backgroundRate=100, mapping='foxfood-fallback', update_type='minor', product='b2g', data_version=1) dbo.releases.t.insert().execute(name='b2g-whitelist', product='b2g', data_version=1, data=""" { "name": "b2g-whitelist", "schema_version": 3000, "whitelist": [ { "imei": "000000000000000" }, { "imei": "000000000000001" }, { "imei": "000000000000002" } ] } """) dbo.releases.t.insert().execute(name='foxfood-whitelisted', product='b2g', data_version=1, data=""" { "name": "foxfood-whitelisted", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/secrets" } } } } } } """) dbo.releases.t.insert().execute(name='foxfood-fallback', product='b2g', data_version=1, data=""" { "name": "foxfood-fallback", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public" } } } } } } """)
def setUp(self): dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist(["a.com", "boring.com"])
def setUp(self): self.cef_fd, self.cef_file = mkstemp() app.config['DEBUG'] = True app.config['SPECIAL_FORCE_HOSTS'] = ('http://a.com', ) app.config['WHITELISTED_DOMAINS'] = ('a.com', 'boring.com') dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist(('a.com', 'boring.com')) self.client = app.test_client() self.view = ClientRequestView() auslib.log.cef_config = auslib.log.get_cef_config(self.cef_file) dbo.rules.t.insert().execute(backgroundRate=100, mapping='b', update_type='minor', product='b', data_version=1) dbo.releases.t.insert().execute(name='b', product='b', version='1.0', data_version=1, data=""" { "name": "b", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } }, "xh": { "complete": { "filesize": "5", "from": "*", "hashValue": "6", "fileUrl": "http://a.com/x" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='c', update_type='minor', product='c', distribution='default', data_version=1) dbo.releases.t.insert().execute(name='c', product='c', version='10.0', data_version=1, data=""" { "name": "c", "schema_version": 1, "appv": "10.0", "extv": "10.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "11", "locales": { "l": { "complete": { "filesize": "12", "from": "*", "hashValue": "13", "fileUrl": "http://a.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='d', update_type='minor', product='d', data_version=1) dbo.releases.t.insert().execute(name='d', product='d', version='20.0', data_version=1, data=""" { "name": "d", "schema_version": 1, "appv": "20.0", "extv": "20.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "21", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://evil.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='e', update_type='minor', product='e', data_version=1) dbo.releases.t.insert().execute(name='e', product='e', version='22.0', data_version=1, data=""" { "name": "e", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/y" } } } } } } """)
def setUp(self): self.version_fd, self.version_file = mkstemp() app.config['DEBUG'] = True app.config['SPECIAL_FORCE_HOSTS'] = ('http://a.com',) app.config['WHITELISTED_DOMAINS'] = {'a.com': ('b', 'c', 'e', 'f', 'response-a', 'response-b', 's', 'responseblob-a', 'responseblob-b', 'q', 'fallback')} app.config["VERSION_FILE"] = self.version_file with open(self.version_file, "w+") as f: f.write(""" { "source":"https://github.com/mozilla/balrog", "version":"1.0", "commit":"abcdef123456" } """) dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist({'a.com': ('b', 'c', 'e')}) self.client = app.test_client() dbo.permissions.t.insert().execute(permission='admin', username='******', data_version=1) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping='b', update_type='minor', product='b', data_version=1, alias="moz-releng") dbo.releases.t.insert().execute(name='b', product='b', data_version=1, data=createBlob(""" { "name": "b", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } }, "xh": { "complete": { "filesize": "5", "from": "*", "hashValue": "6", "fileUrl": "http://a.com/x" } } } } } } """)) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping='s', update_type='minor', product='s', instructionSet="SSE", data_version=1) dbo.releases.t.insert().execute(name='s', product='s', data_version=1, data=createBlob(""" { "name": "s", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "5", "locales": { "l": { "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/s" } } } } } } """)) dbo.rules.t.insert().execute(priority=90, backgroundRate=0, mapping='q', update_type='minor', product='q', fallbackMapping='fallback', data_version=1) dbo.releases.t.insert().execute(name='q', product='q', data_version=1, data=createBlob(""" { "name": "q", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "5", "locales": { "l": { "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/q" } } } } } } """)) dbo.releases.t.insert().execute(name='fallback', product='q', data_version=1, data=createBlob(""" { "name": "fallback", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "5", "locales": { "l": { "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/fallback" } } } } } } """)) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping='c', update_type='minor', product='c', distribution='default', data_version=1) dbo.releases.t.insert().execute(name='c', product='c', data_version=1, data=createBlob(""" { "name": "c", "schema_version": 1, "appv": "10.0", "extv": "10.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "11", "locales": { "l": { "complete": { "filesize": "12", "from": "*", "hashValue": "13", "fileUrl": "http://a.com/y" } } } } } } """)) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping='d', update_type='minor', product='d', data_version=1) dbo.releases.t.insert().execute(name='d', product='d', data_version=1, data=createBlob(""" { "name": "d", "schema_version": 1, "appv": "20.0", "extv": "20.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "21", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://evil.com/y" } } } } } } """)) dbo.rules.t.insert().execute(priority=90, backgroundRate=0, mapping='e', update_type='minor', product='e', data_version=1) dbo.releases.t.insert().execute(name='e', product='e', data_version=1, data=createBlob(""" { "name": "e", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/y" } } } } } } """)) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping="f", update_type="minor", product="f", channel="a", memory="<=8000", data_version=1) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping="f", update_type="minor", product="f", channel="b", memory="9000", data_version=1) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping="f", update_type="minor", product="f", channel="c", memory=">10000", data_version=1) dbo.releases.t.insert().execute(name="f", product="f", data_version=1, data=createBlob(""" { "name": "f", "schema_version": 1, "hashFunction": "sha512", "appv": "1.0", "extv": "1.0", "platforms": { "p": { "buildID": "35", "locales": { "l": { "complete": { "filesize": 33, "from": "*", "hashValue": "34", "fileUrl": "http://a.com/f" } } } } } } """)) dbo.rules.t.insert().execute(priority=200, backgroundRate=100, mapping='gmp', update_type='minor', product='gmp', data_version=1) dbo.rules.t.insert().execute(priority=200, backgroundRate=100, mapping='gmp-with-one-response-product', update_type='minor', product='gmp-with-one-response-product', data_version=1) dbo.rules.t.insert().execute(priority=190, backgroundRate=100, mapping='response-a', update_type='minor', product='response-a', data_version=1) dbo.rules.t.insert().execute(priority=180, backgroundRate=100, mapping='response-b', update_type='minor', product='response-b', data_version=1) dbo.releases.t.insert().execute(name='gmp-with-one-response-product', product='gmp-with-one-response-product', data_version=1, data=createBlob(""" { "name": "superblob", "schema_version": 4000, "products": ["response-a"] } """)) dbo.releases.t.insert().execute(name='gmp', product='gmp', data_version=1, data=createBlob(""" { "name": "superblob", "schema_version": 4000, "products": ["response-a", "response-b"] } """)) dbo.releases.t.insert().execute(name='response-a', product='response-a', data_version=1, data=createBlob(""" { "name": "response-a", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public" } } } }, "q": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public-q" } } } } } } """)) dbo.releases.t.insert().execute(name='response-b', product='response-b', data_version=1, data=createBlob(""" { "name": "response-b", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 27777777, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/b" } } } } } } """)) dbo.rules.t.insert().execute(priority=180, backgroundRate=100, mapping='systemaddons-uninstall', update_type='minor', product='systemaddons-uninstall', data_version=1) dbo.releases.t.insert().execute(name='systemaddons-uninstall', product='systemaddons-uninstall', data_version=1, data=createBlob(""" { "name": "fake", "schema_version": 5000, "hashFunction": "SHA512", "uninstall": true } """)) dbo.rules.t.insert().execute(priority=180, backgroundRate=100, mapping='systemaddons', update_type='minor', product='systemaddons', data_version=1) dbo.releases.t.insert().execute(name='systemaddons', product='systemaddons', data_version=1, data=createBlob(""" { "name": "fake", "schema_version": 5000, "hashFunction": "SHA512", "uninstall": false, "addons": { "c": { "version": "1", "platforms": { "p": { "filesize": 2, "hashValue": "3", "fileUrl": "http://a.com/blah" } } } } } """)) dbo.rules.t.insert().execute(priority=1000, backgroundRate=0, mapping='product_that_should_not_be_updated-1.1', update_type='minor', product='product_that_should_not_be_updated', data_version=1) dbo.releases.t.insert().execute(name='product_that_should_not_be_updated-1.1', product='product_that_should_not_be_updated', data_version=1, data=createBlob(""" { "name": "product_that_should_not_be_updated-1.1", "schema_version": 1, "appv": "1.1", "extv": "1.1", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } } } } } } """)) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping='product_that_should_not_be_updated-2.0', update_type='minor', product='product_that_should_not_be_updated', data_version=1) dbo.releases.t.insert().execute(name='product_that_should_not_be_updated-2.0', product='product_that_should_not_be_updated', data_version=1, data=createBlob(""" { "name": "product_that_should_not_be_updated-2.0", "schema_version": 1, "appv": "2.0", "extv": "2.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } } } } } } """)) dbo.rules.t.insert().execute(priority=200, backgroundRate=100, mapping='superblobaddon-with-multiple-response-blob', update_type='minor', product='superblobaddon-with-multiple-response-blob', data_version=1) dbo.rules.t.insert().execute(priority=200, backgroundRate=100, mapping='superblobaddon-with-one-response-blob', update_type='minor', product='superblobaddon-with-one-response-blob', data_version=1) dbo.releases.t.insert().execute(name='superblobaddon-with-one-response-blob', product='superblobaddon-with-one-response-blob', data_version=1, data=createBlob(""" { "name": "superblobaddon", "schema_version": 4000, "blobs": ["responseblob-a"] } """)) dbo.releases.t.insert().execute(name='superblobaddon-with-multiple-response-blob', product='superblobaddon-with-multiple-response-blob', data_version=1, data=createBlob(""" { "name": "superblobaddon", "schema_version": 4000, "blobs": ["responseblob-a", "responseblob-b"] } """)) dbo.releases.t.insert().execute(name='responseblob-a', product='responseblob-a', data_version=1, data=createBlob(""" { "name": "responseblob-a", "schema_version": 5000, "hashFunction": "SHA512", "addons": { "c": { "version": "1", "platforms": { "p": { "filesize": 2, "hashValue": "3", "fileUrl": "http://a.com/e" }, "q": { "filesize": 4, "hashValue": "5", "fileUrl": "http://a.com/e" }, "q2": { "alias": "q" } } }, "d": { "version": "5", "platforms": { "q": { "filesize": 10, "hashValue": "11", "fileUrl": "http://a.com/c" }, "default": { "filesize": 20, "hashValue": "50", "fileUrl": "http://a.com/c" } } } } } """)) dbo.releases.t.insert().execute(name='responseblob-b', product='responseblob-b', data_version=1, data=createBlob(""" { "name": "responseblob-b", "schema_version": 5000, "hashFunction": "sha512", "uninstall": false, "addons": { "b": { "version": "1", "platforms": { "p": { "filesize": 27, "hashValue": "23", "fileUrl": "http://a.com/b" } } } } } """))
def setUp(self): app.config['DEBUG'] = True self.public_client = app.test_client() dbo.setDb('sqlite:///:memory:') dbo.create() dbo.rules.t.insert().execute(rule_id=1, priority=90, backgroundRate=100, mapping='Fennec.55.0a1', update_type='minor', product='Fennec', data_version=1, alias="moz-releng") dbo.releases.t.insert().execute(name='Fennec.55.0a1', product='Fennec', data_version=1, data=createBlob(""" { "name": "Fennec.55.0a1", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } }, "xh": { "complete": { "filesize": "5", "from": "*", "hashValue": "6", "fileUrl": "http://a.com/x" } } } } } } """)) dbo.rules.t.insert().execute(rule_id=2, priority=90, backgroundRate=100, mapping='Firefox.55.0a1', update_type='minor', product='Firefox', systemCapabilities="SSE", data_version=1) dbo.releases.t.insert().execute(name='Firefox.55.0a1', product='Firefox', data_version=1, data=createBlob(""" { "name": "Firefox.55.0a1", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "5", "locales": { "l": { "buildID": "5", "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/s" } } } } } } """)) dbo.rules.t.insert().execute(rule_id=3, priority=90, backgroundRate=0, mapping='q', update_type='minor', product='q', data_version=3) dbo.rules.history.t.insert().execute(change_id=1, changed_by="usr", timestamp=10, rule_id=3, priority=90, backgroundRate=0, mapping='y', update_type='minor', product='y', data_version=2) dbo.rules.history.t.insert().execute(change_id=2, changed_by="usr", timestamp=10, rule_id=3, priority=90, backgroundRate=0, mapping='z', update_type='minor', product='z', data_version=1) dbo.releases.t.insert().execute(name='q', product='q', data_version=2, data=createBlob(""" { "name": "q", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "6", "locales": { "l": { "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/q" } } } } } } """)) dbo.releases.history.t.insert().execute(change_id=1, changed_by="usr", timestamp=10, name='q', product='q', data_version=1)
log_level = logging.INFO if options.verbose: log_level = logging.DEBUG logging.basicConfig(level=log_level, format=auslib.log.log_format) from auslib.global_state import dbo, cache from auslib.web.base import app cache.make_cache("blob", 500, 3600) cache.make_cache("blob_version", 500, 60) auslib.log.cef_config = auslib.log.get_cef_config(options.cefLog) dbo.setDb(options.db) dbo.setDomainWhitelist(options.whitelistedDomains) try: dbo.create() except DatabaseAlreadyControlledError: pass if options.profile_dir: from werkzeug.contrib.profiler import ProfilerMiddleware if not path.exists(options.profile_dir): os.makedirs(options.profile_dir) app.wsgi_app = ProfilerMiddleware(app.wsgi_app, profile_dir=options.profile_dir) app.config['WHITELISTED_DOMAINS'] = options.whitelistedDomains app.config['SPECIAL_FORCE_HOSTS'] = options.specialForceHosts app.config['SECRET_KEY'] = 'abc123' app.config['DEBUG'] = True
def setUp(self): self.version_fd, self.version_file = mkstemp() cache.reset() cache.make_copies = True app.config["SECRET_KEY"] = 'abc123' app.config['DEBUG'] = True app.config["WTF_CSRF_ENABLED"] = False app.config['WHITELISTED_DOMAINS'] = {'good.com': ('a', 'b', 'c', 'd')} app.config["VERSION_FILE"] = self.version_file with open(self.version_file, "w+") as f: f.write(""" { "source":"https://github.com/mozilla/balrog", "version":"1.0", "commit":"abcdef123456" } """) dbo.setDb('sqlite:///:memory:') dbo.setDomainWhitelist({'good.com': ('a', 'b', 'c', 'd')}) dbo.create() dbo.permissions.t.insert().execute(permission='admin', username='******', data_version=1) dbo.permissions.t.insert().execute( permission='/users/:id/permissions/:permission', username='******', data_version=1) dbo.permissions.t.insert().execute(permission='/releases/:name', username='******', options=json.dumps( dict(product=['fake'])), data_version=1) dbo.permissions.t.insert().execute( permission='/releases/:name/read_only', username='******', options=json.dumps(dict(method='PUT')), data_version=1) dbo.permissions.t.insert().execute(permission='/rules/:id', username='******', options=json.dumps( dict(product=['fake'])), data_version=1) dbo.releases.t.insert().execute(name='a', product='a', data=json.dumps( dict(name='a', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='ab', product='a', data=json.dumps( dict(name='ab', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='b', product='b', data=json.dumps( dict(name='b', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='c', product='c', data=json.dumps( dict(name='c', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='d', product='d', data_version=1, data=""" { "name": "d", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "locales": { "d": { "complete": { "filesize": 1234, "from": "*", "hashValue": "abc" } } } } } } """) dbo.rules.t.insert().execute(id=1, priority=100, version='3.5', buildTarget='d', backgroundRate=100, mapping='c', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=2, alias="frodo", priority=100, version='3.3', buildTarget='d', backgroundRate=100, mapping='b', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=3, priority=100, version='3.5', buildTarget='a', backgroundRate=100, mapping='a', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=4, product='fake', priority=80, buildTarget='d', backgroundRate=100, mapping='a', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=5, priority=80, buildTarget='d', version='3.3', backgroundRate=0, mapping='c', update_type='minor', data_version=1) self.client = app.test_client()
def setUp(self): self.version_fd, self.version_file = mkstemp() app.config['DEBUG'] = True app.config['SPECIAL_FORCE_HOSTS'] = ('http://a.com',) app.config['WHITELISTED_DOMAINS'] = {'a.com': ('b', 'c', 'e', 'b2g', 'response-a', 'response-b', 's')} app.config["VERSION_FILE"] = self.version_file with open(self.version_file, "w+") as f: f.write(""" { "source":"https://github.com/mozilla/balrog", "version":"1.0", "commit":"abcdef123456" } """) dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist({'a.com': ('b', 'c', 'e', 'b2g')}) self.client = app.test_client() self.view = ClientRequestView() dbo.rules.t.insert().execute(backgroundRate=100, mapping='b', update_type='minor', product='b', data_version=1) dbo.releases.t.insert().execute(name='b', product='b', data_version=1, data=""" { "name": "b", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } }, "xh": { "complete": { "filesize": "5", "from": "*", "hashValue": "6", "fileUrl": "http://a.com/x" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='s', update_type='minor', product='s', systemCapabilities="SSE", data_version=1) dbo.releases.t.insert().execute(name='s', product='s', data_version=1, data=""" { "name": "s", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "5", "locales": { "l": { "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/s" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='c', update_type='minor', product='c', distribution='default', data_version=1) dbo.releases.t.insert().execute(name='c', product='c', data_version=1, data=""" { "name": "c", "schema_version": 1, "appv": "10.0", "extv": "10.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "11", "locales": { "l": { "complete": { "filesize": "12", "from": "*", "hashValue": "13", "fileUrl": "http://a.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='d', update_type='minor', product='d', data_version=1) dbo.releases.t.insert().execute(name='d', product='d', data_version=1, data=""" { "name": "d", "schema_version": 1, "appv": "20.0", "extv": "20.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "21", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://evil.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='e', update_type='minor', product='e', data_version=1) dbo.releases.t.insert().execute(name='e', product='e', data_version=1, data=""" { "name": "e", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/y" } } } } } } """) dbo.rules.t.insert().execute(priority=100, backgroundRate=100, mapping='foxfood-whitelisted', update_type='minor', product='b2g', whitelist='b2g-whitelist', data_version=1) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping='foxfood-whitelisted', update_type='minor', product='b2g', channel="foxfood", whitelist='b2g-whitelist', data_version=1) dbo.rules.t.insert().execute(priority=80, backgroundRate=100, mapping='foxfood-fallback', update_type='minor', product='b2g', data_version=1) dbo.releases.t.insert().execute(name='b2g-whitelist', product='b2g', data_version=1, data=""" { "name": "b2g-whitelist", "schema_version": 3000, "whitelist": [ { "imei": "000000000000000" }, { "imei": "000000000000001" }, { "imei": "000000000000002" } ] } """) dbo.releases.t.insert().execute(name='foxfood-whitelisted', product='b2g', data_version=1, data=""" { "name": "foxfood-whitelisted", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/secrets" } } } } } } """) dbo.releases.t.insert().execute(name='foxfood-fallback', product='b2g', data_version=1, data=""" { "name": "foxfood-fallback", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public" } } } } } } """) dbo.rules.t.insert().execute(priority=200, backgroundRate=100, mapping='gmp', update_type='minor', product='gmp', data_version=1) dbo.rules.t.insert().execute(priority=200, backgroundRate=100, mapping='gmp-with-one-response-product', update_type='minor', product='gmp-with-one-response-product', data_version=1) dbo.rules.t.insert().execute(priority=190, backgroundRate=100, mapping='response-a', update_type='minor', product='response-a', data_version=1) dbo.rules.t.insert().execute(priority=180, backgroundRate=100, mapping='response-b', update_type='minor', product='response-b', data_version=1) dbo.releases.t.insert().execute(name='gmp-with-one-response-product', product='gmp-with-one-response-product', data_version=1, data=""" { "name": "superblob", "schema_version": 4000, "products": ["response-a"] } """) dbo.releases.t.insert().execute(name='gmp', product='gmp', data_version=1, data=""" { "name": "superblob", "schema_version": 4000, "products": ["response-a", "response-b"] } """) dbo.releases.t.insert().execute(name='response-a', product='response-a', data_version=1, data=""" { "name": "response-a", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public" } } } }, "q": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public-q" } } } } } } """) dbo.releases.t.insert().execute(name='response-b', product='response-b', data_version=1, data=""" { "name": "response-b", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 27777777, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/b" } } } } } } """) dbo.rules.t.insert().execute(priority=180, backgroundRate=100, mapping='systemaddons-uninstall', update_type='minor', product='systemaddons-uninstall', data_version=1) dbo.releases.t.insert().execute(name='systemaddons-uninstall', product='systemaddons-uninstall', data_version=1, data=""" { "name": "fake", "schema_version": 5000, "hashFunction": "SHA512", "uninstall": true } """) dbo.rules.t.insert().execute(priority=180, backgroundRate=100, mapping='systemaddons', update_type='minor', product='systemaddons', data_version=1) dbo.releases.t.insert().execute(name='systemaddons', product='systemaddons', data_version=1, data=""" { "name": "fake", "schema_version": 5000, "hashFunction": "SHA512", "uninstall": false, "addons": { "c": { "version": "1", "platforms": { "p": { "filesize": 2, "hashValue": "3", "fileUrl": "http://a.com/blah" } } } } } """)
def setUp(self): self.specialForceHosts = ["http://a.com"] self.whitelistedDomains = ["a.com", "boring.com"] dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist(["a.com", "boring.com"]) dbo.releases.t.insert().execute(name='h1', product='h', version='30.0', data_version=1, data=""" { "name": "h1", "schema_version": 4, "platforms": { "p": { "buildID": "10", "locales": { "l": {} } } } } """) self.blobH2 = ReleaseBlobV4() self.blobH2.loadJSON(""" { "name": "h2", "schema_version": 4, "hashFunction": "sha512", "appVersion": "31.0", "displayVersion": "31.0", "platformVersion": "31.0", "fileUrls": { "c1": { "partials": { "h1": "http://a.com/h1-partial.mar" }, "completes": { "*": "http://a.com/complete.mar" } }, "c2": { "partials": { "h1": "http://a.com/h1-%LOCALE%-partial" }, "completes": { "*": "http://a.com/%LOCALE%-complete" } }, "*": { "partials": { "h1": "http://a.com/h1-partial-catchall" }, "completes": { "*": "http://a.com/complete-catchall" } } }, "platforms": { "p": { "buildID": "50", "OS_FTP": "p", "OS_BOUNCER": "p", "locales": { "l": { "partials": [ { "filesize": 8, "from": "h1", "hashValue": 9 } ], "completes": [ { "filesize": 40, "from": "*", "hashValue": "41" } ] } } } } } """)
def setUp(self): self.version_fd, self.version_file = mkstemp() cache.reset() cache.make_copies = True app.config["SECRET_KEY"] = "abc123" app.config["DEBUG"] = True app.config["WTF_CSRF_ENABLED"] = False app.config["WHITELISTED_DOMAINS"] = {"good.com": ("a", "b", "c", "d")} app.config["VERSION_FILE"] = self.version_file with open(self.version_file, "w+") as f: f.write( """ { "source":"https://github.com/mozilla/balrog", "version":"1.0", "commit":"abcdef123456" } """ ) dbo.setDb("sqlite:///:memory:") dbo.setDomainWhitelist({"good.com": ("a", "b", "c", "d")}) dbo.create() dbo.permissions.t.insert().execute(permission="admin", username="******", data_version=1) dbo.permissions.t.insert().execute(permission="permission", username="******", data_version=1) dbo.permissions.t.insert().execute( permission="release", username="******", options=json.dumps(dict(products=["fake", "b"], actions=["create", "modify"])), data_version=1, ) dbo.permissions.t.insert().execute( permission="release_read_only", username="******", options=json.dumps(dict(actions=["set"])), data_version=1 ) dbo.permissions.t.insert().execute( permission="rule", username="******", options=json.dumps(dict(actions=["modify"], products=["fake"])), data_version=1, ) dbo.permissions.t.insert().execute( permission="build", username="******", options=json.dumps(dict(actions=["modify"], products=["a"])), data_version=1, ) dbo.permissions.t.insert().execute( permission="scheduled_change", username="******", options=json.dumps(dict(actions=["enact"])), data_version=1 ) dbo.permissions.t.insert().execute( permission="release_locale", username="******", options=json.dumps(dict(actions=["modify"], products=["a"])), data_version=1, ) dbo.permissions.t.insert().execute( permission="admin", username="******", options=json.dumps(dict(products=["a"])), data_version=1 ) dbo.permissions.user_roles.t.insert().execute(username="******", role="releng", data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="relman", data_version=1) dbo.releases.t.insert().execute( name="a", product="a", data=json.dumps(dict(name="a", hashFunction="sha512", schema_version=1)), data_version=1, ) dbo.releases.t.insert().execute( name="ab", product="a", data=json.dumps(dict(name="ab", hashFunction="sha512", schema_version=1)), data_version=1, ) dbo.releases.t.insert().execute( name="b", product="b", data=json.dumps(dict(name="b", hashFunction="sha512", schema_version=1)), data_version=1, ) dbo.releases.t.insert().execute( name="c", product="c", data=json.dumps(dict(name="c", hashFunction="sha512", schema_version=1)), data_version=1, ) dbo.releases.t.insert().execute( name="d", product="d", data_version=1, data=""" { "name": "d", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "locales": { "d": { "complete": { "filesize": 1234, "from": "*", "hashValue": "abc" } } } } } } """, ) dbo.rules.t.insert().execute( rule_id=1, priority=100, version="3.5", buildTarget="d", backgroundRate=100, mapping="c", update_type="minor", data_version=1, ) dbo.rules.t.insert().execute( rule_id=2, alias="frodo", priority=100, version="3.3", buildTarget="d", backgroundRate=100, mapping="b", update_type="minor", data_version=1, ) dbo.rules.t.insert().execute( rule_id=3, product="a", priority=100, version="3.5", buildTarget="a", backgroundRate=100, mapping="a", update_type="minor", data_version=1, ) dbo.rules.t.insert().execute( rule_id=4, product="fake", priority=80, buildTarget="d", backgroundRate=100, mapping="a", update_type="minor", data_version=1, ) dbo.rules.t.insert().execute( rule_id=5, priority=80, buildTarget="d", version="3.3", backgroundRate=0, mapping="c", update_type="minor", data_version=1, ) self.client = app.test_client()
def setUp(self): self.version_fd, self.version_file = mkstemp() cache.reset() cache.make_copies = True app.config["SECRET_KEY"] = 'abc123' app.config['DEBUG'] = True app.config["WTF_CSRF_ENABLED"] = False app.config['WHITELISTED_DOMAINS'] = {'good.com': ('a', 'b', 'c', 'd')} app.config["VERSION_FILE"] = self.version_file with open(self.version_file, "w+") as f: f.write(""" { "source":"https://github.com/mozilla/balrog", "version":"1.0", "commit":"abcdef123456" } """) dbo.setDb('sqlite:///:memory:') dbo.setDomainWhitelist({'good.com': ('a', 'b', 'c', 'd')}) dbo.create() dbo.permissions.t.insert().execute(permission='admin', username='******', data_version=1) dbo.permissions.t.insert().execute(permission='permission', username='******', data_version=1) dbo.permissions.t.insert().execute(permission='release', username='******', options=dict(products=['fake', "a", 'b'], actions=["create", "modify"]), data_version=1) dbo.permissions.t.insert().execute(permission='release_read_only', username='******', options=dict(actions=["set"], products=["a", "b"]), data_version=1) dbo.permissions.t.insert().execute(permission='rule', username='******', options=dict(actions=["modify"], products=['a', "b"]), data_version=1) dbo.permissions.t.insert().execute(permission='release', username='******', options=dict(actions=["modify"], products=['a']), data_version=1) dbo.permissions.t.insert().execute(permission="scheduled_change", username="******", options=dict(actions=["enact"]), data_version=1) dbo.permissions.t.insert().execute(permission='release_locale', username='******', options=dict(actions=["modify"], products=['a']), data_version=1) dbo.permissions.t.insert().execute(permission='admin', username='******', options=dict(products=['a']), data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="releng", data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="qa", data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="relman", data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="releng", data_version=1) dbo.permissions.user_roles.t.insert().execute(username="******", role="relman", data_version=1) dbo.productRequiredSignoffs.t.insert().execute(product="fake", channel="a", role="releng", signoffs_required=1, data_version=1) dbo.productRequiredSignoffs.t.insert().execute(product="fake", channel="e", role="releng", signoffs_required=1, data_version=1) dbo.productRequiredSignoffs.t.insert().execute(product="fake", channel="j", role="releng", signoffs_required=1, data_version=1) dbo.productRequiredSignoffs.t.insert().execute(product="fake", channel="k", role="relman", signoffs_required=1, data_version=2) dbo.productRequiredSignoffs.history.t.insert().execute(change_id=1, changed_by="bill", timestamp=10, product="fake", channel="k", role="relman") dbo.productRequiredSignoffs.history.t.insert().execute(change_id=2, changed_by="bill", timestamp=11, product="fake", channel="k", role="relman", signoffs_required=2, data_version=1) dbo.productRequiredSignoffs.history.t.insert().execute(change_id=3, changed_by="bill", timestamp=25, product="fake", channel="k", role="relman", signoffs_required=1, data_version=2) dbo.permissionsRequiredSignoffs.t.insert().execute(product="fake", role="releng", signoffs_required=1, data_version=1) dbo.permissionsRequiredSignoffs.t.insert().execute(product="bar", role="releng", signoffs_required=1, data_version=1) dbo.permissionsRequiredSignoffs.t.insert().execute(product="blah", role="releng", signoffs_required=1, data_version=1) dbo.permissionsRequiredSignoffs.t.insert().execute(product="doop", role="releng", signoffs_required=1, data_version=2) dbo.permissionsRequiredSignoffs.t.insert().execute(product="superfake", role="relman", signoffs_required=1, data_version=1) dbo.permissionsRequiredSignoffs.history.t.insert().execute(change_id=1, changed_by="bill", timestamp=10, product="doop", role="releng") dbo.permissionsRequiredSignoffs.history.t.insert().execute(change_id=2, changed_by="bill", timestamp=11, product="doop", role="releng", signoffs_required=2, data_version=1) dbo.permissionsRequiredSignoffs.history.t.insert().execute(change_id=3, changed_by="bill", timestamp=25, product="doop", role="releng", signoffs_required=1, data_version=2) dbo.releases.t.insert().execute( name='a', product='a', data=createBlob(dict(name='a', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute( name='ab', product='a', data=createBlob(dict(name='ab', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute( name='b', product='b', data=createBlob(dict(name='b', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute( name='c', product='c', data=createBlob(dict(name='c', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='d', product='d', data_version=1, data=createBlob(""" { "name": "d", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "locales": { "d": { "complete": { "filesize": 1234, "from": "*", "hashValue": "abc" } } } } } } """)) dbo.rules.t.insert().execute( rule_id=1, priority=100, version='3.5', buildTarget='d', backgroundRate=100, mapping='c', update_type='minor', product="a", channel="a", data_version=1 ) dbo.rules.t.insert().execute( rule_id=2, alias="frodo", priority=100, version='3.3', buildTarget='d', backgroundRate=100, mapping='b', update_type='minor', product="a", channel="a", data_version=1 ) dbo.rules.t.insert().execute( rule_id=3, product='a', priority=100, version='3.5', buildTarget='a', backgroundRate=100, mapping='a', update_type='minor', channel="a", data_version=1 ) dbo.rules.t.insert().execute( rule_id=4, product='fake', priority=80, buildTarget='d', backgroundRate=100, mapping='a', update_type='minor', channel="a", data_version=1 ) dbo.rules.t.insert().execute( rule_id=5, priority=80, buildTarget='d', version='3.3', backgroundRate=0, mapping='c', update_type='minor', product="a", channel="a", data_version=1 ) dbo.rules.t.insert().execute(rule_id=6, product='fake', priority=40, backgroundRate=50, mapping='a', update_type='minor', channel="e", data_version=1) dbo.rules.t.insert().execute(rule_id=7, product='fake', priority=30, backgroundRate=85, mapping='a', update_type='minor', channel="c", data_version=1) self.client = app.test_client()
def setUp(self): self.specialForceHosts = ["http://a.com"] self.whitelistedDomains = ["a.com", "boring.com"] dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist(["a.com", "boring.com"]) dbo.releases.t.insert().execute(name='j1', product='j', version='39.0', data_version=1, data=""" { "name": "j1", "schema_version": 2, "platforms": { "p": { "buildID": "28", "locales": { "l": {} } } } } """) self.blobJ2 = ReleaseBlobV2() self.blobJ2.loadJSON(""" { "name": "j2", "schema_version": 2, "hashFunction": "sha512", "appVersion": "40.0", "displayVersion": "40.0", "platformVersion": "40.0", "fileUrls": { "c1": "http://a.com/%FILENAME%" }, "ftpFilenames": { "partial": "j1-partial.mar", "complete": "complete.mar" }, "platforms": { "p": { "buildID": "30", "OS_FTP": "o", "OS_BOUNCER": "o", "locales": { "l": { "partial": { "filesize": 6, "from": "j1", "hashValue": 5 }, "complete": { "filesize": 38, "from": "*", "hashValue": "34" } } } } } } """) self.blobK = ReleaseBlobV2() self.blobK.loadJSON(""" { "name": "k", "schema_version": 2, "hashFunction": "sha512", "appVersion": "50.0", "displayVersion": "50.0", "platformVersion": "50.0", "detailsUrl": "http://example.org/details/%LOCALE%", "licenseUrl": "http://example.org/license/%LOCALE%", "actions": "silent", "billboardURL": "http://example.org/billboard/%LOCALE%", "openURL": "http://example.org/url/%LOCALE%", "notificationURL": "http://example.org/notification/%LOCALE%", "alertURL": "http://example.org/alert/%LOCALE%", "showPrompt": "false", "showNeverForVersion": "true", "showSurvey": "false", "fileUrls": { "c1": "http://a.com/%FILENAME%" }, "ftpFilenames": { "complete": "complete.mar" }, "platforms": { "p": { "buildID": "35", "OS_FTP": "o", "OS_BOUNCER": "o", "locales": { "l": { "complete": { "filesize": 40, "from": "*", "hashValue": "35" } }, "l2": { "isOSUpdate": true, "complete": { "filesize": 50, "from": "*", "hashValue": "45" } } } } } } """)
def setUp(self): app.config['DEBUG'] = True app.config["WHITELISTED_DOMAINS"] = {"a.com": ("a",)} dbo.setDb('sqlite:///:memory:') dbo.create() self.client = app.test_client()
def setUp(self): self.version_fd, self.version_file = mkstemp() app.config["DEBUG"] = True app.config["SPECIAL_FORCE_HOSTS"] = ("http://a.com",) app.config["WHITELISTED_DOMAINS"] = { "a.com": ( "b", "c", "e", "b2g", "response-a", "response-b", "s", "responseblob-a", "responseblob-b", "q", "fallback", ) } app.config["VERSION_FILE"] = self.version_file with open(self.version_file, "w+") as f: f.write( """ { "source":"https://github.com/mozilla/balrog", "version":"1.0", "commit":"abcdef123456" } """ ) dbo.setDb("sqlite:///:memory:") dbo.create() dbo.setDomainWhitelist({"a.com": ("b", "c", "e", "b2g")}) self.client = app.test_client() self.view = ClientRequestView() dbo.rules.t.insert().execute( priority=90, backgroundRate=100, mapping="b", update_type="minor", product="b", data_version=1 ) dbo.releases.t.insert().execute( name="b", product="b", data_version=1, data=""" { "name": "b", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } }, "xh": { "complete": { "filesize": "5", "from": "*", "hashValue": "6", "fileUrl": "http://a.com/x" } } } } } } """, ) dbo.rules.t.insert().execute( priority=90, backgroundRate=100, mapping="s", update_type="minor", product="s", systemCapabilities="SSE", data_version=1, ) dbo.releases.t.insert().execute( name="s", product="s", data_version=1, data=""" { "name": "s", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "5", "locales": { "l": { "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/s" } } } } } } """, ) dbo.rules.t.insert().execute( priority=90, backgroundRate=0, mapping="q", update_type="minor", product="q", fallbackMapping="fallback", data_version=1, ) dbo.releases.t.insert().execute( name="q", product="q", data_version=1, data=""" { "name": "q", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "5", "locales": { "l": { "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/q" } } } } } } """, ) dbo.releases.t.insert().execute( name="fallback", product="q", data_version=1, data=""" { "name": "fallback", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "5", "locales": { "l": { "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/fallback" } } } } } } """, ) dbo.rules.t.insert().execute( priority=90, backgroundRate=100, mapping="c", update_type="minor", product="c", distribution="default", data_version=1, ) dbo.releases.t.insert().execute( name="c", product="c", data_version=1, data=""" { "name": "c", "schema_version": 1, "appv": "10.0", "extv": "10.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "11", "locales": { "l": { "complete": { "filesize": "12", "from": "*", "hashValue": "13", "fileUrl": "http://a.com/y" } } } } } } """, ) dbo.rules.t.insert().execute( priority=90, backgroundRate=100, mapping="d", update_type="minor", product="d", data_version=1 ) dbo.releases.t.insert().execute( name="d", product="d", data_version=1, data=""" { "name": "d", "schema_version": 1, "appv": "20.0", "extv": "20.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "21", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://evil.com/y" } } } } } } """, ) dbo.rules.t.insert().execute( priority=90, backgroundRate=0, mapping="e", update_type="minor", product="e", data_version=1 ) dbo.releases.t.insert().execute( name="e", product="e", data_version=1, data=""" { "name": "e", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/y" } } } } } } """, ) dbo.rules.t.insert().execute( priority=100, backgroundRate=100, mapping="foxfood-whitelisted", update_type="minor", product="b2g", whitelist="b2g-whitelist", data_version=1, ) dbo.rules.t.insert().execute( priority=90, backgroundRate=100, mapping="foxfood-whitelisted", update_type="minor", product="b2g", channel="foxfood", whitelist="b2g-whitelist", data_version=1, ) dbo.rules.t.insert().execute( priority=80, backgroundRate=100, mapping="foxfood-fallback", update_type="minor", product="b2g", data_version=1, ) dbo.releases.t.insert().execute( name="b2g-whitelist", product="b2g", data_version=1, data=""" { "name": "b2g-whitelist", "schema_version": 3000, "whitelist": [ { "imei": "000000000000000" }, { "imei": "000000000000001" }, { "imei": "000000000000002" } ] } """, ) dbo.releases.t.insert().execute( name="foxfood-whitelisted", product="b2g", data_version=1, data=""" { "name": "foxfood-whitelisted", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/secrets" } } } } } } """, ) dbo.releases.t.insert().execute( name="foxfood-fallback", product="b2g", data_version=1, data=""" { "name": "foxfood-fallback", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public" } } } } } } """, ) dbo.rules.t.insert().execute( priority=200, backgroundRate=100, mapping="gmp", update_type="minor", product="gmp", data_version=1 ) dbo.rules.t.insert().execute( priority=200, backgroundRate=100, mapping="gmp-with-one-response-product", update_type="minor", product="gmp-with-one-response-product", data_version=1, ) dbo.rules.t.insert().execute( priority=190, backgroundRate=100, mapping="response-a", update_type="minor", product="response-a", data_version=1, ) dbo.rules.t.insert().execute( priority=180, backgroundRate=100, mapping="response-b", update_type="minor", product="response-b", data_version=1, ) dbo.releases.t.insert().execute( name="gmp-with-one-response-product", product="gmp-with-one-response-product", data_version=1, data=""" { "name": "superblob", "schema_version": 4000, "products": ["response-a"] } """, ) dbo.releases.t.insert().execute( name="gmp", product="gmp", data_version=1, data=""" { "name": "superblob", "schema_version": 4000, "products": ["response-a", "response-b"] } """, ) dbo.releases.t.insert().execute( name="response-a", product="response-a", data_version=1, data=""" { "name": "response-a", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public" } } } }, "q": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public-q" } } } } } } """, ) dbo.releases.t.insert().execute( name="response-b", product="response-b", data_version=1, data=""" { "name": "response-b", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 27777777, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/b" } } } } } } """, ) dbo.rules.t.insert().execute( priority=180, backgroundRate=100, mapping="systemaddons-uninstall", update_type="minor", product="systemaddons-uninstall", data_version=1, ) dbo.releases.t.insert().execute( name="systemaddons-uninstall", product="systemaddons-uninstall", data_version=1, data=""" { "name": "fake", "schema_version": 5000, "hashFunction": "SHA512", "uninstall": true } """, ) dbo.rules.t.insert().execute( priority=180, backgroundRate=100, mapping="systemaddons", update_type="minor", product="systemaddons", data_version=1, ) dbo.releases.t.insert().execute( name="systemaddons", product="systemaddons", data_version=1, data=""" { "name": "fake", "schema_version": 5000, "hashFunction": "SHA512", "uninstall": false, "addons": { "c": { "version": "1", "platforms": { "p": { "filesize": 2, "hashValue": "3", "fileUrl": "http://a.com/blah" } } } } } """, ) dbo.rules.t.insert().execute( priority=1000, backgroundRate=0, mapping="product_that_should_not_be_updated-1.1", update_type="minor", product="product_that_should_not_be_updated", data_version=1, ) dbo.releases.t.insert().execute( name="product_that_should_not_be_updated-1.1", product="product_that_should_not_be_updated", data_version=1, data=""" { "name": "product_that_should_not_be_updated-1.1", "schema_version": 1, "appv": "1.1", "extv": "1.1", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } } } } } } """, ) dbo.rules.t.insert().execute( priority=90, backgroundRate=100, mapping="product_that_should_not_be_updated-2.0", update_type="minor", product="product_that_should_not_be_updated", data_version=1, ) dbo.releases.t.insert().execute( name="product_that_should_not_be_updated-2.0", product="product_that_should_not_be_updated", data_version=1, data=""" { "name": "product_that_should_not_be_updated-2.0", "schema_version": 1, "appv": "2.0", "extv": "2.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } } } } } } """, ) dbo.rules.t.insert().execute( priority=200, backgroundRate=100, mapping="superblobaddon-with-multiple-response-blob", update_type="minor", product="superblobaddon-with-multiple-response-blob", data_version=1, ) dbo.rules.t.insert().execute( priority=200, backgroundRate=100, mapping="superblobaddon-with-one-response-blob", update_type="minor", product="superblobaddon-with-one-response-blob", data_version=1, ) dbo.releases.t.insert().execute( name="superblobaddon-with-one-response-blob", product="superblobaddon-with-one-response-blob", data_version=1, data=""" { "name": "superblobaddon", "schema_version": 4000, "revision": 123, "blobs": ["responseblob-a"] } """, ) dbo.releases.t.insert().execute( name="superblobaddon-with-multiple-response-blob", product="superblobaddon-with-multiple-response-blob", data_version=1, data=""" { "name": "superblobaddon", "schema_version": 4000, "revision": 124, "blobs": ["responseblob-a", "responseblob-b"] } """, ) dbo.releases.t.insert().execute( name="responseblob-a", product="responseblob-a", data_version=1, data=""" { "name": "responseblob-a", "schema_version": 5000, "hashFunction": "SHA512", "addons": { "c": { "version": "1", "platforms": { "p": { "filesize": 2, "hashValue": "3", "fileUrl": "http://a.com/e" }, "q": { "filesize": 4, "hashValue": "5", "fileUrl": "http://a.com/e" }, "q2": { "alias": "q" } } }, "d": { "version": "5", "platforms": { "q": { "filesize": 10, "hashValue": "11", "fileUrl": "http://a.com/c" }, "default": { "filesize": 20, "hashValue": "50", "fileUrl": "http://a.com/c" } } } } } """, ) dbo.releases.t.insert().execute( name="responseblob-b", product="responseblob-b", data_version=1, data=""" { "name": "responseblob-b", "schema_version": 5000, "hashFunction": "sha512", "uninstall": false, "addons": { "b": { "version": "1", "platforms": { "p": { "filesize": 27, "hashValue": "23", "fileUrl": "http://a.com/b" } } } } } """, )
def setUp(self): app.config["DEBUG"] = True app.config["SPECIAL_FORCE_HOSTS"] = ("http://a.com",) app.config["WHITELISTED_DOMAINS"] = {"a.com": ("a", "b", "c")} dbo.setDb("sqlite:///:memory:") dbo.create() self.client = app.test_client() dbo.setDomainWhitelist({"a.com": ("a", "b", "c")}) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping="a", update_type="minor", product="a", data_version=1) dbo.releases.t.insert().execute(name="a", product="a", data_version=1, data=createBlob(""" { "name": "a", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } } } } } } """)) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping="b", update_type="minor", product="b", mig64=True, data_version=1) dbo.releases.t.insert().execute(name="b", product="b", data_version=1, data=createBlob(""" { "name": "b", "schema_version": 1, "appv": "2.0", "extv": "2.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "12", "locales": { "l": { "complete": { "filesize": "13", "from": "*", "hashValue": "14", "fileUrl": "http://a.com/z1" } } } } } } """)) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping="c", update_type="minor", product="c", mig64=False, data_version=1) dbo.releases.t.insert().execute(name="c", product="c", data_version=1, data=createBlob(""" { "name": "c", "schema_version": 1, "appv": "3.0", "extv": "3.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "22", "locales": { "l": { "complete": { "filesize": "23", "from": "*", "hashValue": "24", "fileUrl": "http://a.com/z2" } } } } } } """))
def setUp(self): self.version_fd, self.version_file = mkstemp() app.config['DEBUG'] = True app.config['SPECIAL_FORCE_HOSTS'] = ('http://a.com',) app.config['WHITELISTED_DOMAINS'] = {'a.com': ('b', 'c', 'e', 'b2g', 'response-a', 'response-b', 's')} app.config["VERSION_FILE"] = self.version_file with open(self.version_file, "w+") as f: f.write(""" { "source":"https://github.com/mozilla/balrog", "version":"1.0", "commit":"abcdef123456" } """) dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist({'a.com': ('b', 'c', 'e', 'b2g')}) self.client = app.test_client() self.view = ClientRequestView() dbo.rules.t.insert().execute(backgroundRate=100, mapping='b', update_type='minor', product='b', data_version=1) dbo.releases.t.insert().execute(name='b', product='b', data_version=1, data=""" { "name": "b", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } }, "xh": { "complete": { "filesize": "5", "from": "*", "hashValue": "6", "fileUrl": "http://a.com/x" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='s', update_type='minor', product='s', systemCapabilities="SSE", data_version=1) dbo.releases.t.insert().execute(name='s', product='s', data_version=1, data=""" { "name": "s", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "5", "locales": { "l": { "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/s" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='c', update_type='minor', product='c', distribution='default', data_version=1) dbo.releases.t.insert().execute(name='c', product='c', data_version=1, data=""" { "name": "c", "schema_version": 1, "appv": "10.0", "extv": "10.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "11", "locales": { "l": { "complete": { "filesize": "12", "from": "*", "hashValue": "13", "fileUrl": "http://a.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='d', update_type='minor', product='d', data_version=1) dbo.releases.t.insert().execute(name='d', product='d', data_version=1, data=""" { "name": "d", "schema_version": 1, "appv": "20.0", "extv": "20.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "21", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://evil.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='e', update_type='minor', product='e', data_version=1) dbo.releases.t.insert().execute(name='e', product='e', data_version=1, data=""" { "name": "e", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/y" } } } } } } """) dbo.rules.t.insert().execute(priority=100, backgroundRate=100, mapping='foxfood-whitelisted', update_type='minor', product='b2g', whitelist='b2g-whitelist', data_version=1) dbo.rules.t.insert().execute(priority=90, backgroundRate=100, mapping='foxfood-whitelisted', update_type='minor', product='b2g', channel="foxfood", whitelist='b2g-whitelist', data_version=1) dbo.rules.t.insert().execute(priority=80, backgroundRate=100, mapping='foxfood-fallback', update_type='minor', product='b2g', data_version=1) dbo.releases.t.insert().execute(name='b2g-whitelist', product='b2g', data_version=1, data=""" { "name": "b2g-whitelist", "schema_version": 3000, "whitelist": [ { "imei": "000000000000000" }, { "imei": "000000000000001" }, { "imei": "000000000000002" } ] } """) dbo.releases.t.insert().execute(name='foxfood-whitelisted', product='b2g', data_version=1, data=""" { "name": "foxfood-whitelisted", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/secrets" } } } } } } """) dbo.releases.t.insert().execute(name='foxfood-fallback', product='b2g', data_version=1, data=""" { "name": "foxfood-fallback", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public" } } } } } } """) dbo.rules.t.insert().execute(priority=200, backgroundRate=100, mapping='gmp', update_type='minor', product='gmp', data_version=1) dbo.rules.t.insert().execute(priority=200, backgroundRate=100, mapping='gmp-with-one-response-product', update_type='minor', product='gmp-with-one-response-product', data_version=1) dbo.rules.t.insert().execute(priority=190, backgroundRate=100, mapping='response-a', update_type='minor', product='response-a', data_version=1) dbo.rules.t.insert().execute(priority=180, backgroundRate=100, mapping='response-b', update_type='minor', product='response-b', data_version=1) dbo.releases.t.insert().execute(name='gmp-with-one-response-product', product='gmp-with-one-response-product', data_version=1, data=""" { "name": "superblob", "schema_version": 4000, "products": ["response-a"] } """) dbo.releases.t.insert().execute(name='gmp', product='gmp', data_version=1, data=""" { "name": "superblob", "schema_version": 4000, "products": ["response-a", "response-b"] } """) dbo.releases.t.insert().execute(name='response-a', product='response-a', data_version=1, data=""" { "name": "response-a", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public" } } } }, "q": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public-q" } } } } } } """) dbo.releases.t.insert().execute(name='response-b', product='response-b', data_version=1, data=""" { "name": "response-b", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 27777777, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/b" } } } } } } """)
def setUp(self): self.cef_fd, self.cef_file = mkstemp() app.config["SECRET_KEY"] = 'abc123' app.config['DEBUG'] = True app.config["WTF_CSRF_ENABLED"] = False app.config['WHITELISTED_DOMAINS'] = ['good.com'] auslib.log.cef_config = auslib.log.get_cef_config(self.cef_file) dbo.setDb('sqlite:///:memory:') dbo.setDomainWhitelist(['good.com']) dbo.create() dbo.permissions.t.insert().execute(permission='admin', username='******', data_version=1) dbo.permissions.t.insert().execute( permission='/users/:id/permissions/:permission', username='******', data_version=1) dbo.permissions.t.insert().execute(permission='/releases/:name', username='******', options=json.dumps( dict(product=['fake'])), data_version=1) dbo.permissions.t.insert().execute(permission='/rules/:id', username='******', options=json.dumps( dict(product=['fake'])), data_version=1) dbo.releases.t.insert().execute(name='a', product='a', version='a', data=json.dumps( dict(name='a', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='ab', product='a', version='a', data=json.dumps( dict(name='ab', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='b', product='b', version='b', data=json.dumps( dict(name='b', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='c', product='c', version='c', data=json.dumps( dict(name='c', hashFunction="sha512", schema_version=1)), data_version=1) dbo.releases.t.insert().execute(name='d', product='d', version='d', data_version=1, data=""" { "name": "d", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "locales": { "d": { "complete": { "filesize": "1234" } } } } } } """) dbo.rules.t.insert().execute(id=1, priority=100, version='3.5', buildTarget='d', backgroundRate=100, mapping='c', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=2, priority=100, version='3.3', buildTarget='d', backgroundRate=100, mapping='b', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=3, priority=100, version='3.5', buildTarget='a', backgroundRate=100, mapping='a', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=4, product='fake', priority=80, buildTarget='d', backgroundRate=100, mapping='a', update_type='minor', data_version=1) dbo.rules.t.insert().execute(id=5, priority=80, buildTarget='d', version='3.3', backgroundRate=0, mapping='c', update_type='minor', data_version=1) self.client = app.test_client()
def setUp(self): self.specialForceHosts = ["http://a.com"] self.whitelistedDomains = ["a.com", "boring.com"] dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist(["a.com", "boring.com"]) dbo.releases.t.insert().execute(name='f1', product='f', version='22.0', data_version=1, data=""" { "name": "f1", "schema_version": 3, "platforms": { "p": { "buildID": "5", "locales": { "l": {} } } } } """) dbo.releases.t.insert().execute(name='f2', product='f', version='23.0', data_version=1, data=""" { "name": "f2", "schema_version": 3, "platforms": { "p": { "buildID": "6", "locales": { "l": {} } } } } """) self.blobF3 = ReleaseBlobV3() self.blobF3.loadJSON(""" { "name": "f3", "schema_version": 3, "hashFunction": "sha512", "appVersion": "25.0", "displayVersion": "25.0", "platformVersion": "25.0", "platforms": { "p": { "buildID": "29", "locales": { "l": { "partials": [ { "filesize": 2, "from": "f1", "hashValue": 3, "fileUrl": "http://a.com/p1" }, { "filesize": 4, "from": "f2", "hashValue": 5, "fileUrl": "http://a.com/p2" } ], "completes": [ { "filesize": 29, "from": "f2", "hashValue": 6, "fileUrl": "http://a.com/c1" }, { "filesize": 30, "from": "*", "hashValue": "31", "fileUrl": "http://a.com/c2" } ] }, "m": { "completes": [ { "filesize": 32, "from": "*", "hashValue": "33", "fileUrl": "http://a.com/c2m" } ] } } } } } """) dbo.releases.t.insert().execute(name='g1', product='g', version='23.0', data_version=1, data=""" { "name": "g1", "schema_version": 3, "platforms": { "p": { "buildID": "8", "locales": { "l": {} } } } } """) self.blobG2 = ReleaseBlobV3() self.blobG2.loadJSON(""" { "name": "g2", "schema_version": 3, "hashFunction": "sha512", "appVersion": "26.0", "displayVersion": "26.0", "platformVersion": "26.0", "fileUrls": { "c1": "http://a.com/%FILENAME%", "c2": "http://a.com/%PRODUCT%" }, "ftpFilenames": { "partials": { "g1": "g1-partial.mar" }, "completes": { "*": "complete.mar" } }, "bouncerProducts": { "partials": { "g1": "g1-partial" }, "completes": { "*": "complete" } }, "platforms": { "p": { "buildID": "40", "OS_FTP": "o", "OS_BOUNCER": "o", "locales": { "l": { "partials": [ { "filesize": 4, "from": "g1", "hashValue": 5 } ], "completes": [ { "filesize": 34, "from": "*", "hashValue": "35" } ] } } } } } """)
if isValidTestDir(d): options.testDirs.append(d) for td in options.testDirs: log.info("Starting %s", td) if options.keepDB: dbPath = os.path.join(td, 'update.db') if os.path.exists(dbPath): os.remove(dbPath) log.info('saving db at %s' % dbPath) dbPath = 'sqlite:///%s' % dbPath else: dbPath = 'sqlite:///:memory:' AUS = AUS_Class() dbo.setDb(dbPath) dbo.create() dbo.setDomainWhitelist(WHITELISTED_DOMAINS) populateDB(td) if options.dumprules: log.info( "Rules are \n(id, priority, mapping, backgroundRate, product, version, channel, " "buildTarget, buildID, locale, osVersion, distribution, distVersion, UA arch):" ) for rule in dbo.rules.getOrderedRules(): log.info(", ".join([str(rule[k]) for k in rule.keys()])) log.info("-" * 50) if options.dumpreleases: log.info("Releases are \n(name, product, data):") for release in dbo.releases.getReleases(): log.info("(%s, %s, %s, %s " % (release['name'], release['product'],
def setUp(self): app.config['DEBUG'] = True self.public_client = app.test_client() dbo.setDb('sqlite:///:memory:') dbo.create() dbo.rules.t.insert().execute(rule_id=1, priority=90, backgroundRate=100, mapping='Fennec.55.0a1', update_type='minor', product='Fennec', data_version=1, alias="moz-releng") dbo.releases.t.insert().execute(name='Fennec.55.0a1', product='Fennec', data_version=1, data=createBlob(""" { "name": "Fennec.55.0a1", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } }, "xh": { "complete": { "filesize": "5", "from": "*", "hashValue": "6", "fileUrl": "http://a.com/x" } } } } } } """)) dbo.rules.t.insert().execute(rule_id=2, priority=90, backgroundRate=100, mapping='Firefox.55.0a1', update_type='minor', product='Firefox', instructionSet="SSE", data_version=1) dbo.releases.t.insert().execute(name='Firefox.55.0a1', product='Firefox', data_version=1, data=createBlob(""" { "name": "Firefox.55.0a1", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "5", "locales": { "l": { "buildID": "5", "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/s" } } } } } } """)) dbo.rules.t.insert().execute(rule_id=3, priority=90, backgroundRate=0, mapping='q', update_type='minor', product='q', data_version=3) dbo.rules.history.t.insert().execute(change_id=1, changed_by="usr", timestamp=10, rule_id=3, priority=90, backgroundRate=0, mapping='y', update_type='minor', product='y', data_version=2) dbo.rules.history.t.insert().execute(change_id=2, changed_by="usr", timestamp=10, rule_id=3, priority=90, backgroundRate=0, mapping='z', update_type='minor', product='z', data_version=1) dbo.releases.t.insert().execute(name='q', product='q', data_version=2, data=createBlob(""" { "name": "q", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "6", "locales": { "l": { "complete": { "filesize": "5", "from": "*", "hashValue": "5", "fileUrl": "http://a.com/q" } } } } } } """)) dbo.releases.history.t.insert().execute(change_id=1, changed_by="usr", timestamp=10, name='q', product='q', data_version=1)
def setUp(self): self.cef_fd, self.cef_file = mkstemp() app.config['DEBUG'] = True app.config['SPECIAL_FORCE_HOSTS'] = ('http://a.com',) app.config['WHITELISTED_DOMAINS'] = ('a.com', 'boring.com') dbo.setDb('sqlite:///:memory:') dbo.create() dbo.setDomainWhitelist(('a.com', 'boring.com')) self.client = app.test_client() self.view = ClientRequestView() auslib.log.cef_config = auslib.log.get_cef_config(self.cef_file) dbo.rules.t.insert().execute(backgroundRate=100, mapping='b', update_type='minor', product='b', data_version=1) dbo.releases.t.insert().execute(name='b', product='b', version='1.0', data_version=1, data=""" { "name": "b", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } }, "xh": { "complete": { "filesize": "5", "from": "*", "hashValue": "6", "fileUrl": "http://a.com/x" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='c', update_type='minor', product='c', distribution='default', data_version=1) dbo.releases.t.insert().execute(name='c', product='c', version='10.0', data_version=1, data=""" { "name": "c", "schema_version": 1, "appv": "10.0", "extv": "10.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "11", "locales": { "l": { "complete": { "filesize": "12", "from": "*", "hashValue": "13", "fileUrl": "http://a.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='d', update_type='minor', product='d', data_version=1) dbo.releases.t.insert().execute(name='d', product='d', version='20.0', data_version=1, data=""" { "name": "d", "schema_version": 1, "appv": "20.0", "extv": "20.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "21", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://evil.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='e', update_type='minor', product='e', data_version=1) dbo.releases.t.insert().execute(name='e', product='e', version='22.0', data_version=1, data=""" { "name": "e", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/y" } } } } } } """) dbo.rules.t.insert().execute(backgroundRate=100, mapping='foxfood', update_type='minor', product='b2g', whitelist='b2g-whitelist', data_version=1) dbo.releases.t.insert().execute(name='b2g-whitelist', product='b2g', version='2.5', data_version=1, data=""" { "name": "b2g-whitelist", "schema_version": 3000, "whitelist": [ { "imei": "000000000000000" }, { "imei": "000000000000001" }, { "imei": "000000000000002" } ] } """) dbo.releases.t.insert().execute(name='foxfood', product='b2g', version='2.5', data_version=1, data=""" { "name": "foxfood", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/y" } } } } } } """)
def setUp(self): self.cef_fd, self.cef_file = mkstemp() app.config["DEBUG"] = True app.config["SPECIAL_FORCE_HOSTS"] = ("http://a.com",) app.config["WHITELISTED_DOMAINS"] = ("a.com", "boring.com") dbo.setDb("sqlite:///:memory:") dbo.create() dbo.setDomainWhitelist(("a.com", "boring.com")) self.client = app.test_client() self.view = ClientRequestView() auslib.log.cef_config = auslib.log.get_cef_config(self.cef_file) dbo.rules.t.insert().execute(backgroundRate=100, mapping="b", update_type="minor", product="b", data_version=1) dbo.releases.t.insert().execute( name="b", product="b", version="1.0", data_version=1, data=""" { "name": "b", "schema_version": 1, "appv": "1.0", "extv": "1.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "2", "locales": { "l": { "complete": { "filesize": "3", "from": "*", "hashValue": "4", "fileUrl": "http://a.com/z" } }, "xh": { "complete": { "filesize": "5", "from": "*", "hashValue": "6", "fileUrl": "http://a.com/x" } } } } } } """, ) dbo.rules.t.insert().execute( backgroundRate=100, mapping="c", update_type="minor", product="c", distribution="default", data_version=1 ) dbo.releases.t.insert().execute( name="c", product="c", version="10.0", data_version=1, data=""" { "name": "c", "schema_version": 1, "appv": "10.0", "extv": "10.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "11", "locales": { "l": { "complete": { "filesize": "12", "from": "*", "hashValue": "13", "fileUrl": "http://a.com/y" } } } } } } """, ) dbo.rules.t.insert().execute(backgroundRate=100, mapping="d", update_type="minor", product="d", data_version=1) dbo.releases.t.insert().execute( name="d", product="d", version="20.0", data_version=1, data=""" { "name": "d", "schema_version": 1, "appv": "20.0", "extv": "20.0", "hashFunction": "sha512", "platforms": { "p": { "buildID": "21", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://evil.com/y" } } } } } } """, ) dbo.rules.t.insert().execute(backgroundRate=100, mapping="e", update_type="minor", product="e", data_version=1) dbo.releases.t.insert().execute( name="e", product="e", version="22.0", data_version=1, data=""" { "name": "e", "schema_version": 1, "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/y" } } } } } } """, ) dbo.rules.t.insert().execute( priority=100, backgroundRate=100, mapping="foxfood-whitelisted", update_type="minor", product="b2g", whitelist="b2g-whitelist", data_version=1, ) dbo.rules.t.insert().execute( priority=90, backgroundRate=100, mapping="foxfood-whitelisted", update_type="minor", product="b2g", channel="foxfood", whitelist="b2g-whitelist", data_version=1, ) dbo.rules.t.insert().execute( priority=80, backgroundRate=100, mapping="foxfood-fallback", update_type="minor", product="b2g", data_version=1, ) dbo.releases.t.insert().execute( name="b2g-whitelist", product="b2g", version="2.5", data_version=1, data=""" { "name": "b2g-whitelist", "schema_version": 3000, "whitelist": [ { "imei": "000000000000000" }, { "imei": "000000000000001" }, { "imei": "000000000000002" } ] } """, ) dbo.releases.t.insert().execute( name="foxfood-whitelisted", product="b2g", version="2.5", data_version=1, data=""" { "name": "foxfood-whitelisted", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/secrets" } } } } } } """, ) dbo.releases.t.insert().execute( name="foxfood-fallback", product="b2g", version="2.5", data_version=1, data=""" { "name": "foxfood-fallback", "schema_version": 1, "extv": "2.5", "hashFunction": "sha512", "platforms": { "p": { "buildID": "25", "locales": { "l": { "complete": { "filesize": 22, "from": "*", "hashValue": "23", "fileUrl": "http://a.com/public" } } } } } } """, )