Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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"
                }
            }
        }
    }
}
""")
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
    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))