def testGMPLayoutNoFilesize(self): # Incorrect layout with missing filesize blob = GMPBlobV1() blob.loadJSON(""" { "name": "fake", "schema_version": 1000, "hashFunction": "SHA512", "vendors": { "c": { "version": "1", "platforms": { "p": { "alias": "q" }, "q": { "hashValue": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcda\ bcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", "fileUrl": "http://boring.com/blah" } } } } } """) self.assertRaises(Exception, blob.validate, 'gg', self.whitelistedDomains)
def testValidateHashLength(self): blob = GMPBlobV1() blob.whitelistedDomains = { 'boring.com': ('gg', ), } blob.loadJSON(""" { "name": "validName", "schema_version": 1000, "hashFunction": "SHA512", "vendors": { "a": { "version": "5", "platforms": { "default": { "filesize": 20, "hashValue": "50", "fileUrl": "http://boring.com/bar" } } } } } """) assertRaisesRegex(self, ValueError, ( "The hashValue length is different from the required length of 128 for sha512" ), blob.validate, 'gg', self.whitelistedDomains)
def testGMPLayoutTwoPlatforms(self): # Correct layout with one vendor and two platforms blob = GMPBlobV1() blob.loadJSON(""" { "name": "fake", "schema_version": 1000, "hashFunction": "SHA512", "vendors": { "c": { "version": "1", "platforms": { "p": { "alias": "q" }, "q": { "filesize": 2, "hashValue": "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcda\ bcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", "fileUrl": "http://boring.com/blah" } } } } } """) blob.validate('gg', self.whitelistedDomains)
def setUp(self): self.specialForceHosts = ["http://a.com"] self.whitelistedDomains = {"a.com": ('gg', ), 'boring.com': ('gg', )} self.blob = GMPBlobV1() self.blob.loadJSON(""" { "name": "fake", "schema_version": 1000, "hashFunction": "SHA512", "vendors": { "c": { "version": "1", "platforms": { "p": { "filesize": 2, "hashValue": "3", "fileUrl": "http://a.com/blah" }, "q": { "filesize": 4, "hashValue": "5", "fileUrl": "http://boring.com/blah" }, "q2": { "alias": "q" } } }, "d": { "version": "5", "platforms": { "q": { "filesize": 10, "hashValue": "11", "fileUrl": "http://boring.com/foo" }, "r": { "filesize": 666, "hashValue": "666", "fileUrl": "http://evil.com/fire" }, "default": { "filesize": 20, "hashValue": "50", "fileUrl": "http://boring.com/bar" } } } } } """)
def testGMPLayoutNoVendor(self): # Incorrect layout with no vendors blob = GMPBlobV1() blob.loadJSON(""" { "name": "fake", "schema_version": 1000, "hashFunction": "SHA512" } """) self.assertRaises(Exception, blob.validate, 'gg', self.whitelistedDomains)
def testGMPLayoutEmptyVendor(self): # Correct layout with empty vendors blob = GMPBlobV1() blob.loadJSON(""" { "name": "fake", "schema_version": 1000, "hashFunction": "SHA512", "vendors": {} } """) blob.validate('gg', self.whitelistedDomains)
def testGMPLayoutEmptyPlatforms(self): # Correct layout with empty platforms blob = GMPBlobV1() blob.loadJSON(""" { "name": "fake", "schema_version": 1000, "hashFunction": "SHA512", "vendors": { "c": { "version": "1", "platforms": {} } } } """) blob.validate("gg", self.whitelistedDomains)
def testDoesNotContainForbiddenDomain(self): blob = GMPBlobV1() blob.loadJSON(""" { "name": "fake", "schema_version": 1000, "hashFunction": "SHA512", "vendors": { "c": { "version": "1", "platforms": { "p": { "filesize": 2, "hashValue": "3", "fileUrl": "http://a.com/blah" } } } } } """) self.assertFalse( blob.containsForbiddenDomain('gg', self.whitelistedDomains))