Esempio n. 1
0
 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()
Esempio n. 2
0
File: base.py Progetto: cliqz/balrog
    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()
Esempio n. 3
0
 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()
Esempio n. 4
0
 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()
Esempio n. 5
0
 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": {}}}}}')
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
    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": {}}}}}))
Esempio n. 9
0
 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": {}}}}}'
     )
Esempio n. 10
0
    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"
                    }
                }
            }
        }
    }
}
""")
Esempio n. 11
0
    def setUp(self):
        dbo.setDb("sqlite:///:memory:")
        self.metadata.create_all(dbo.engine)
        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": {}}}}}),
        )
Esempio n. 12
0
    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()
Esempio n. 13
0
    def setUp(self):
        dbo.setDb("sqlite:///:memory:")
        self.metadata.create_all(dbo.engine)
        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": {}
                        }
                    }
                }
            }),
        )
Esempio n. 14
0
 def setUp(self):
     dbo.setDb('sqlite:///:memory:')
     dbo.create()
     self.client = app.test_client()
Esempio n. 15
0
    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"
                }
            }
        }
    }
}
""")
Esempio n. 16
0
    def setUp(self):
        from auslib.web.admin.views import base as view_base

        self.view_base = view_base

        # Mock out verified_userinfo, because we don't want to talk to Auth0
        # or need to provide real credentials in tests.
        # We don't do this with "mock" because this is a base to all of other
        # tests, and "mock" must be applied in the tests itself.
        self.orig_base_verified_userinfo = view_base.verified_userinfo
        self.mocked_user = None

        def my_userinfo(*args, **kwargs):
            return {"email": self.mocked_user}

        view_base.verified_userinfo = my_userinfo

        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
        app.config["AUTH_DOMAIN"] = "balrog.test.dev"
        app.config["AUTH_AUDIENCE"] = "balrog test"
        app.config["M2M_ACCOUNT_MAPPING"] = {}
        app.config["CORS_ORIGINS"] = "*"
        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")})
        self.metadata.create_all(dbo.engine)
        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",
                                           username="******",
                                           options=dict(products=["a"],
                                                        actions=["modify"]),
                                           data_version=1)
        dbo.permissions.t.insert().execute(permission="rule",
                                           username="******",
                                           options=dict(products=["fake"],
                                                        actions=["create"]),
                                           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.history.t.insert().execute(change_id=1,
                                                timestamp=5,
                                                changed_by="bill",
                                                name="ab")
        dbo.releases.history.t.insert().execute(
            change_id=2,
            timestamp=6,
            changed_by="bill",
            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.history.t.insert().execute(change_id=5,
                                                timestamp=15,
                                                changed_by="bill",
                                                name="b")
        dbo.releases.history.t.insert().execute(
            change_id=6,
            timestamp=16,
            changed_by="bill",
            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.releases.history.t.insert().execute(change_id=3,
                                                timestamp=9,
                                                changed_by="bill",
                                                name="d")
        dbo.releases.history.t.insert().execute(
            change_id=4,
            timestamp=10,
            changed_by="bill",
            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)
        dbo.rules.t.insert().execute(rule_id=8,
                                     product="fake2",
                                     priority=25,
                                     backgroundRate=100,
                                     mapping="a",
                                     update_type="minor",
                                     channel="c",
                                     mig64=True,
                                     data_version=1)
        dbo.rules.t.insert().execute(rule_id=9,
                                     product="fake3",
                                     priority=25,
                                     backgroundRate=100,
                                     mapping="a",
                                     update_type="minor",
                                     channel="c",
                                     jaws=True,
                                     data_version=1)
        self.client = app.test_client()
Esempio n. 17
0
    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"
                    }
                }
            }
        }
    }
}
""")
Esempio n. 18
0
    import auslib.log

    logging.setLoggerClass(auslib.log.BalrogLogger)
    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
Esempio n. 19
0
    def setup(self, insert_release, firefox_54_0_1_build1, firefox_56_0_build1,
              superblob_e8f4a19, hotfix_bug_1548973_1_1_4, timecop_1_0):
        app.config["DEBUG"] = True
        self.public_client = app.test_client()

        dbo.setDb("sqlite:///:memory:")
        self.metadata.create_all(dbo.engine)
        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.rules.t.insert().execute(rule_id=4,
                                     priority=90,
                                     backgroundRate=100,
                                     mapping="Firefox.55.0a1",
                                     update_type="minor",
                                     product="Firefox",
                                     mig64=True,
                                     data_version=1)
        insert_release(firefox_54_0_1_build1, "Firefox", history=False)
        insert_release(firefox_56_0_build1, "Firefox", history=False)
        insert_release(superblob_e8f4a19, "SystemAddons", history=False)
        insert_release(hotfix_bug_1548973_1_1_4, "SystemAddons", history=False)
        insert_release(timecop_1_0, "SystemAddons", history=False)
Esempio n. 20
0
 def setUp(self):
     dbo.setDb('sqlite:///:memory:')
     dbo.create()
     self.client = app.test_client()
Esempio n. 21
0
    def setUp(self):
        app.config['DEBUG'] = True
        self.public_client = app.test_client()

        dbo.setDb('sqlite:///:memory:')
        self.metadata.create_all(dbo.engine)
        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)
        dbo.rules.t.insert().execute(rule_id=4, priority=90, backgroundRate=100, mapping='Firefox.55.0a1', update_type='minor', product='Firefox',
                                     mig64=True, data_version=1)
Esempio n. 22
0
    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"
                        }
                    ]
                }
            }
        }
    }
}
""")
Esempio n. 23
0
    def setup(self, insert_release, firefox_56_0_build1):
        from auslib.web.admin.views import base as view_base

        self.view_base = view_base

        # Mock out verified_userinfo, because we don't want to talk to Auth0
        # or need to provide real credentials in tests.
        # We don't do this with "mock" because this is a base to all of other
        # tests, and "mock" must be applied in the tests itself.
        self.orig_base_verified_userinfo = view_base.verified_userinfo
        self.mocked_user = None

        def my_userinfo(*args, **kwargs):
            return {"email": self.mocked_user}

        view_base.verified_userinfo = my_userinfo

        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
        app.config["AUTH_DOMAIN"] = "balrog.test.dev"
        app.config["AUTH_AUDIENCE"] = "balrog test"
        app.config["M2M_ACCOUNT_MAPPING"] = {}
        app.config["CORS_ORIGINS"] = "*"
        with open(self.version_file, "w+") as f:
            f.write("""
{
  "source":"https://github.com/mozilla-releng/balrog",
  "version":"1.0",
  "commit":"abcdef123456"
}
""")
        dbo.setDb("sqlite:///:memory:",
                  releases_history_buckets={"*": "fake"},
                  releases_history_class=FakeGCSHistory)

        self.orig_releases_history = dbo.releases.history
        # TODO: need a better mock, or maybe a Fake that stores history in memory?
        # only the merge tests benefit from having history
        # the rest are fine if we just let history be None
        # maybe we should mock this only in the tests we care about?
        dbo.releases.history = FakeGCSHistory()

        dbo.setDomainWhitelist({"good.com": ("a", "b", "c", "d")})
        self.metadata.create_all(dbo.engine)
        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",
                                           username="******",
                                           options=dict(products=["a"],
                                                        actions=["modify"]),
                                           data_version=1)
        dbo.permissions.t.insert().execute(permission="rule",
                                           username="******",
                                           options=dict(products=["fake"],
                                                        actions=["create"]),
                                           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.history.bucket.blobs["ab/None-456-bob.json"] = FakeBlob(
            "")
        dbo.releases.history.bucket.blobs["ab/1-456-bob.json"] = FakeBlob("""
{
    "name": "ab",
    "hashFunction": "sha512",
    "schema_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.history.bucket.blobs["b/None-567-bob.json"] = FakeBlob("")
        dbo.releases.history.bucket.blobs["b/1-567-bob.json"] = FakeBlob("""
{
    "name": "b",
    "hashFunction": "sha512",
    "schema_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.releases.history.bucket.blobs["d/None-678-bob.json"] = FakeBlob("")
        dbo.releases.history.bucket.blobs["d/1-678-bob.json"] = FakeBlob("""
{
    "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=2,
        )
        dbo.rules.history.t.insert().execute(change_id=1,
                                             timestamp=50,
                                             changed_by="bill",
                                             rule_id=1)
        dbo.rules.history.t.insert().execute(
            change_id=2,
            timestamp=51,
            changed_by="bill",
            rule_id=1,
            priority=100,
            version="3.5",
            buildTarget="d",
            backgroundRate=50,
            mapping="c",
            update_type="minor",
            product="a",
            channel="a",
            data_version=1,
        )
        dbo.rules.history.t.insert().execute(
            change_id=3,
            timestamp=65,
            changed_by="bill",
            rule_id=1,
            priority=100,
            version="3.5",
            buildTarget="d",
            backgroundRate=100,
            mapping="c",
            update_type="minor",
            product="a",
            channel="a",
            data_version=2,
        )
        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.history.t.insert().execute(change_id=4,
                                             timestamp=60,
                                             changed_by="bill",
                                             rule_id=2)
        dbo.rules.history.t.insert().execute(
            change_id=5,
            timestamp=61,
            changed_by="bill",
            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=2,
        )
        dbo.rules.history.t.insert().execute(change_id=6,
                                             timestamp=72,
                                             changed_by="bill",
                                             rule_id=3)
        dbo.rules.history.t.insert().execute(
            change_id=7,
            timestamp=73,
            changed_by="bill",
            rule_id=3,
            product="a",
            priority=50,
            version="3.5",
            buildTarget="a",
            backgroundRate=100,
            mapping="a",
            update_type="minor",
            channel="a",
            data_version=1,
        )
        dbo.rules.history.t.insert().execute(
            change_id=8,
            timestamp=105,
            changed_by="bill",
            rule_id=3,
            product="a",
            priority=100,
            version="3.5",
            buildTarget="a",
            backgroundRate=100,
            mapping="a",
            update_type="minor",
            channel="a",
            data_version=2,
        )
        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.history.t.insert().execute(change_id=9,
                                             timestamp=80,
                                             changed_by="bill",
                                             rule_id=4)
        dbo.rules.history.t.insert().execute(
            change_id=10,
            timestamp=81,
            changed_by="bill",
            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.history.t.insert().execute(change_id=11,
                                             timestamp=90,
                                             changed_by="bill",
                                             rule_id=5)
        dbo.rules.history.t.insert().execute(
            change_id=12,
            timestamp=91,
            changed_by="bill",
            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.history.t.insert().execute(change_id=13,
                                             timestamp=110,
                                             changed_by="bill",
                                             rule_id=6)
        dbo.rules.history.t.insert().execute(
            change_id=14,
            timestamp=111,
            changed_by="bill",
            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)
        dbo.rules.history.t.insert().execute(change_id=15,
                                             timestamp=115,
                                             changed_by="bill",
                                             rule_id=7)
        dbo.rules.history.t.insert().execute(
            change_id=16,
            timestamp=116,
            changed_by="bill",
            rule_id=7,
            product="fake",
            priority=30,
            backgroundRate=85,
            mapping="a",
            update_type="minor",
            channel="c",
            data_version=1,
        )
        dbo.rules.t.insert().execute(rule_id=8,
                                     product="fake2",
                                     priority=25,
                                     backgroundRate=100,
                                     mapping="a",
                                     update_type="minor",
                                     channel="c",
                                     mig64=True,
                                     data_version=1)
        dbo.rules.history.t.insert().execute(change_id=17,
                                             timestamp=150,
                                             changed_by="bill",
                                             rule_id=8)
        dbo.rules.history.t.insert().execute(
            change_id=18,
            timestamp=151,
            changed_by="bill",
            rule_id=8,
            product="fake2",
            priority=25,
            backgroundRate=100,
            mapping="a",
            update_type="minor",
            channel="c",
            mig64=True,
            data_version=1,
        )
        dbo.rules.t.insert().execute(rule_id=9,
                                     product="fake3",
                                     priority=25,
                                     backgroundRate=100,
                                     mapping="a",
                                     update_type="minor",
                                     channel="c",
                                     jaws=True,
                                     data_version=1)
        dbo.rules.history.t.insert().execute(change_id=19,
                                             timestamp=160,
                                             changed_by="bill",
                                             rule_id=9)
        dbo.rules.history.t.insert().execute(
            change_id=20,
            timestamp=161,
            changed_by="bill",
            rule_id=9,
            product="fake3",
            priority=25,
            backgroundRate=100,
            mapping="a",
            update_type="minor",
            channel="c",
            jaws=True,
            data_version=1,
        )
        self.client = app.test_client()

        # Insert a release into the new tables to make sure it doesn't show up
        # in the old API.
        insert_release(firefox_56_0_build1, "Firefox", history=False)

        yield

        dbo.reset()
        os.close(self.version_fd)
        os.remove(self.version_file)
        self.view_base.verified_userinfo = self.orig_base_verified_userinfo
        dbo.releases.history = self.orig_releases_history
Esempio n. 24
0
    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"
                    }
                }
            }
        }
    }
}
""")
Esempio n. 25
0
    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()
Esempio n. 26
0
 def setUp(self):
     dbo.setDb('sqlite:///:memory:')
     dbo.create()
     dbo.setDomainWhitelist(["a.com", "boring.com"])
Esempio n. 27
0
    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()
Esempio n. 28
0
    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()
Esempio n. 29
0
    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)
Esempio n. 30
0
            d = os.path.join(testdir, dirname)
            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():
Esempio n. 31
0
    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"

                }
            }
        }
    }
}
"""))
Esempio n. 32
0
    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()
Esempio n. 33
0
    def setUp(self):
        from auslib.web.admin.views import base as view_base

        self.view_base = view_base

        # Mock out verified_userinfo, because we don't want to talk to Auth0
        # or need to provide real credentials in tests.
        # We don't do this with "mock" because this is a base to all of other
        # tests, and "mock" must be applied in the tests itself.
        self.orig_base_verified_userinfo = view_base.verified_userinfo
        self.mocked_user = None

        def my_userinfo(*args, **kwargs):
            return {"email": self.mocked_user}

        view_base.verified_userinfo = my_userinfo

        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
        app.config["AUTH_DOMAIN"] = "balrog.test.dev"
        app.config["AUTH_AUDIENCE"] = "balrog test"
        app.config["M2M_ACCOUNT_MAPPING"] = {}
        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")})
        self.metadata.create_all(dbo.engine)
        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", username="******", options=dict(products=["a"], actions=["modify"]), data_version=1)
        dbo.permissions.t.insert().execute(permission="rule", username="******", options=dict(products=["fake"], actions=["create"]), 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.history.t.insert().execute(change_id=1, timestamp=5, changed_by="bill", name="ab")
        dbo.releases.history.t.insert().execute(
            change_id=2,
            timestamp=6,
            changed_by="bill",
            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.history.t.insert().execute(change_id=5, timestamp=15, changed_by="bill", name="b")
        dbo.releases.history.t.insert().execute(
            change_id=6,
            timestamp=16,
            changed_by="bill",
            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.releases.history.t.insert().execute(change_id=3, timestamp=9, changed_by="bill", name="d")
        dbo.releases.history.t.insert().execute(
            change_id=4,
            timestamp=10,
            changed_by="bill",
            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)
        dbo.rules.t.insert().execute(
            rule_id=8, product="fake2", priority=25, backgroundRate=100, mapping="a", update_type="minor", channel="c", mig64=True, data_version=1
        )
        dbo.rules.t.insert().execute(
            rule_id=9, product="fake3", priority=25, backgroundRate=100, mapping="a", update_type="minor", channel="c", jaws=True, data_version=1
        )
        self.client = app.test_client()
Esempio n. 34
0
 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()
Esempio n. 35
0
            d = os.path.join(testdir, dirname)
            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():
Esempio n. 36
0
    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"
                    }
                }
            }
        }
    }
}
"""))
Esempio n. 37
0
    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"
                    }
                }
            }
        }
    }
}
""")
Esempio n. 38
0
    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"
                    }
                }
            }
        }
    }
}
""")
Esempio n. 39
0
    # Logging needs to get set-up before importing the application
    # to make sure that logging done from other modules uses our Logger.
    import auslib.log

    logging.setLoggerClass(auslib.log.BalrogLogger)
    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
    from auslib.admin.base import app
    from migrate.exceptions import DatabaseAlreadyControlledError

    dbo.setDb(options.db)
    dbo.setDomainWhitelist(options.whitelistedDomains)
    try:
        dbo.create()
    except DatabaseAlreadyControlledError:
        pass

    app.config['WHITELISTED_DOMAINS'] = options.whitelistedDomains
    app.config['SECRET_KEY'] = 'abc123'
    app.config['DEBUG'] = True
    app.config['PAGE_TITLE'] = options.pageTitle

    def auth(environ, username, password):
        return username == password
    # The Angular app always makes requests to "/api". The WSGI app that runs
    # the API doesn't know about this prefix though, so we need to strip it
Esempio n. 40
0
    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()
Esempio n. 41
0
    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"
                        }
                    ]
                }
            }
        }
    }
}
""")
Esempio n. 42
0
    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"
                    }
                }
            }
        }
    }
}
""")
Esempio n. 43
0
    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"

                }
            }
        }
    }
}
""",
        )
Esempio n. 44
0
 def setUp(self):
     dbo.setDb('sqlite:///:memory:')
     self.metadata.create_all(dbo.engine)
     self.client = app.test_client()
Esempio n. 45
0
    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"
                    }
                }
            }
        }
    }
}
""",
        )