def getResolvedPlatform(self, vendor, platform): if platform in self['vendors'][vendor]['platforms']: return self['vendors'][vendor]['platforms'][platform].get( 'alias', platform) if "default" in self['vendors'][vendor]['platforms']: return "default" raise BadDataError("No platform '%s' or default in vendor '%s'", platform, vendor)
def testSentryBadDataError(self): with mock.patch( "auslib.web.public.client.getQueryFromURL") as m, mock.patch( "auslib.web.public.base.sentry") as sentry: m.side_effect = BadDataError("exterminate!") ret = self.client.get("/update/4/b/1.0/1/p/l/a/a/a/a/1/update.xml") self.assertFalse(sentry.captureException.called) self.assertEqual(ret.status_code, 400, ret.data) self.assertEqual(ret.mimetype, "text/plain")
def MozillaVersion(version): try: if version.count(".") in (1, 2): if int(version[0]) > 4: return PostModernMozillaVersion(version) else: return ModernMozillaVersion(version) else: return AncientMozillaVersion(version) except ValueError: raise BadDataError("Version number %s is invalid." % version)
def MozillaVersion(version): try: return ModernMozillaVersion(version) except ValueError: pass try: if version.count('.') == 3: return AncientMozillaVersion(version) except ValueError: pass raise BadDataError("Version number %s is invalid." % version)
def testEscapedOutputOn400(self): with mock.patch("auslib.web.public.client.getQueryFromURL") as m: m.side_effect = BadDataError( 'Version number 50.1.0zibj5<img src%3da onerror%3dalert(document.domain)> is invalid.' ) ret = self.client.get("/update/4/b/1.0/1/p/l/a/a/a/a/1/update.xml") self.assertEqual(ret.status_code, 400, ret.data) self.assertEqual(ret.mimetype, "text/plain") self.assertEqual( "Version number 50.1.0zibj5<img src%3da onerror%3dalert(document.domain)> is invalid.", ret.data)
def getResolvedPlatform(self, addon, platform): platforms = self.get("addons", {}).get(addon, {}).get("platforms", {}) if platform in platforms: return self.get("addons", {}).get(addon, {}).get("platforms", {}).get(platform, {}).get("alias", platform) if "default" in platforms: return "default" raise BadDataError("No platform '%s' or default in addon '%s'", platform, addon)
def testXContentTypeOptionsIsSetFor400(self): with mock.patch('auslib.web.public.client.get_update_blob') as m: m.side_effect = BadDataError('I break!') ret = self.client.get('/update/4/b/1.0/1/p/l/a/a/a/a/1/update.xml') self.assertEqual(ret.headers.get("X-Content-Type-Options"), "nosniff")
def testStrictTransportSecurityIsSetFor400(self): with mock.patch('auslib.web.public.client.get_update_blob') as m: m.side_effect = BadDataError('I break!') ret = self.client.get('/update/4/b/1.0/1/p/l/a/a/a/a/1/update.xml') self.assertEqual(ret.headers.get("Strict-Transport-Security"), "max-age=31536000;")
def testContentSecurityPolicyIsSetFor400(self): with mock.patch('auslib.web.public.client.get_update_blob') as m: m.side_effect = BadDataError('I break!') ret = self.client.get('/update/4/b/1.0/1/p/l/a/a/a/a/1/update.xml') self.assertEqual(ret.headers.get("Content-Security-Policy"), "default-src 'none'; frame-ancestors 'none'")
def getPlatformData(self, platform): platform = self.getResolvedPlatform(platform) try: return self['platforms'][platform] except KeyError: raise BadDataError("Can't find platform '%s'", platform)
def getResolvedPlatform(self, platform): try: return self['platforms'][platform].get('alias', platform) except KeyError: raise BadDataError("Can't find platform '%s'", platform)
def getPlatformData(self, vendor, platform): platform = self.getResolvedPlatform(vendor, platform) try: return self['vendors'][vendor]['platforms'][platform] except KeyError: raise BadDataError("No platform '%s' in vendor '%s'", platform, vendor)
def testSentryBadDataError(self): with mock.patch("auslib.web.views.client.ClientRequestView.get") as m: m.side_effect = BadDataError("exterminate!") with mock.patch("auslib.web.base.sentry") as sentry: self.client.get("/update/4/b/1.0/1/p/l/a/a/a/a/1/update.xml") self.assertFalse(sentry.captureException.called)
def getResolvedPlatform(self, vendor, platform): if platform in self["vendors"][vendor]["platforms"]: return self["vendors"][vendor]["platforms"][platform].get("alias", platform) if "default" in self["vendors"][vendor]["platforms"]: return "default" raise BadDataError("No platform '%s' or default in vendor '%s'", platform, vendor)
def getLocaleData(self, platform, locale): platformData = self.getPlatformData(platform) try: return platformData["locales"][locale] except KeyError: raise BadDataError("Can't find locale '%s' in '%s'", locale, platform)