def test_data_uri_stripping(self, b64decode):
     for uri in ("data:abc;def,foo",
                 "data:def,foo",
                 "data:foo"):
         appbase.try_get_resource(
             self.err, None, uri, "webapp.manifest", "icon")
         eq_(b64decode.call_args[0][0], "foo")
Example #2
0
    def test_eventual_404(self, r_g):
        error_response = Mock()
        error_response.raw.read.side_effect = ["x" * 100, ""]
        error_response.status_code = 404
        r_g.return_value = error_response

        appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
        self.assert_failed(with_errors=True)
    def test_eventual_404(self, r_g):
        error_response = Mock()
        error_response.raw.read.side_effect = ["x" * 100, ""]
        error_response.status_code = 404
        r_g.return_value = error_response

        appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
        self.assert_failed(with_errors=True)
Example #4
0
    def test_too_big(self, r_g):
        big_response_object = Mock()
        big_response_object.raw.read.return_value = "x" * 100
        big_response_object.status_code = 200
        r_g.return_value = big_response_object

        appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
        self.assert_failed(with_errors=True)
    def test_too_big(self, r_g):
        big_response_object = Mock()
        big_response_object.raw.read.return_value = "x" * 100
        big_response_object.status_code = 200
        r_g.return_value = big_response_object

        appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
        self.assert_failed(with_errors=True)
 def test_bad_url_MissingSchema_normalized(self):
     self.err.save_resource("manifest_url", "ftp://test.com/manifest.webapp")
     with patch("appvalidator.testcases.webappbase." "requests.get") as requests_get:
         requests_get.side_effect = DummyException
         try:
             appbase.try_get_resource(self.err, None, "/zip/zap", "")
         except DummyException:
             requests_get.assert_called_once_with(
                 "ftp://test.com/zip/zap", stream=True, allow_redirects=True, timeout=3, headers=appbase.HEADERS
             )
         else:
             raise AssertionError("Should have gotten DummyException")
    def test_decode_gzip(self, r_g):
        def compressed_gzip_body():
            stream = cStringIO.StringIO()
            compressor = gzip.GzipFile(fileobj=stream, mode='w')
            compressor.write(u"é".encode('utf-8') * 100)
            compressor.close()
            stream.seek(0)
            return stream

        normal_response_object = Mock()
        # Build an HTTPResponse object like the one requests uses, with
        # a gzip compressed body. `decode_content` needs to be False to
        # properly emulate requests behaviour : it's the caller's
        # responsability to decode, since it's supposed to be a raw stream.
        body = compressed_gzip_body()
        normal_response_object.raw = HTTPResponse(
            status=200, preload_content=False, headers={
            'content-encoding': 'gzip',
            'content-type': 'application/blah; charset=utf-8'
        }, body=body, decode_content=False)
        normal_response_object.encoding = 'UTF-8'
        normal_response_object.status_code = 200
        r_g.return_value = normal_response_object

        eq_(appbase.try_get_resource(self.err, None, "http://foo.bar/", ""),
            u"é" * 100)
        self.assert_silent()
    def test_decode_gzip(self, r_g):
        def compressed_gzip_body():
            stream = cStringIO.StringIO()
            compressor = gzip.GzipFile(fileobj=stream, mode='w')
            compressor.write(u"é".encode('utf-8') * 100)
            compressor.close()
            stream.seek(0)
            return stream

        normal_response_object = Mock()
        # Build an HTTPResponse object like the one requests uses, with
        # a gzip compressed body. `decode_content` needs to be False to
        # properly emulate requests behaviour : it's the caller's
        # responsability to decode, since it's supposed to be a raw stream.
        body = compressed_gzip_body()
        normal_response_object.raw = HTTPResponse(
            status=200,
            preload_content=False,
            headers={
                'content-encoding': 'gzip',
                'content-type': 'application/blah; charset=utf-8'
            },
            body=body,
            decode_content=False)
        normal_response_object.encoding = 'UTF-8'
        normal_response_object.status_code = 200
        r_g.return_value = normal_response_object

        eq_(appbase.try_get_resource(self.err, None, "http://foo.bar/", ""),
            u"é" * 100)
        self.assert_silent()
Example #9
0
 def test_bad_url_MissingSchema_normalized(self):
     self.err.save_resource("manifest_url",
                            "ftp://test.com/manifest.webapp")
     with patch("appvalidator.testcases.webappbase."
                "requests.get") as requests_get:
         requests_get.side_effect = DummyException
         try:
             appbase.try_get_resource(self.err, None, "/zip/zap", "")
         except DummyException:
             requests_get.assert_called_once_with("ftp://test.com/zip/zap",
                                                  prefetch=False,
                                                  allow_redirects=True,
                                                  timeout=3,
                                                  headers=appbase.HEADERS)
         else:
             raise AssertionError("Should have gotten DummyException")
    def test_empty(self, r_g):
        empty_response = Mock()
        empty_response.raw.read.return_value = ""
        empty_response.status_code = 200
        r_g.return_value = empty_response

        eq_(appbase.try_get_resource(self.err, None, "http://foo.bar/", ""), "")
        self.assert_failed(with_errors=True)
    def test_just_right(self, r_g):
        normal_response_object = Mock()
        normal_response_object.raw.read.side_effect = ["x" * 100, ""]
        normal_response_object.status_code = 200
        r_g.return_value = normal_response_object

        eq_(appbase.try_get_resource(self.err, None, "http://foo.bar/", ""), "x" * 100)
        self.assert_silent()
Example #12
0
    def test_empty(self, r_g):
        empty_response = Mock()
        empty_response.raw.read.return_value = ""
        empty_response.status_code = 200
        r_g.return_value = empty_response

        eq_(appbase.try_get_resource(self.err, None, "http://foo.bar/", ""),
            "")
        self.assert_failed(with_errors=True)
Example #13
0
    def test_just_right(self, r_g):
        normal_response_object = Mock()
        normal_response_object.raw.read.side_effect = ["x" * 100, ""]
        normal_response_object.status_code = 200
        r_g.return_value = normal_response_object

        eq_(appbase.try_get_resource(self.err, None, "http://foo.bar/", ""),
            "x" * 100)
        self.assert_silent()
    def test_unicodeness(self, r_g):
        normal_response_object = Mock()
        normal_response_object.raw.read.side_effect = [u"é".encode('utf-8')
                                                       * 100, ""]
        normal_response_object.encoding = "UTF-8"
        normal_response_object.status_code = 200
        r_g.return_value = normal_response_object

        eq_(appbase.try_get_resource(self.err, None, "http://foo.bar/", ""),
            u"é" * 100)
        self.assert_silent()
    def test_unicodeness(self, r_g):
        normal_response_object = Mock()
        normal_response_object.raw.read.side_effect = [
            u"é".encode('utf-8') * 100, ""
        ]
        normal_response_object.encoding = "UTF-8"
        normal_response_object.status_code = 200
        r_g.return_value = normal_response_object

        eq_(appbase.try_get_resource(self.err, None, "http://foo.bar/", ""),
            u"é" * 100)
        self.assert_silent()
    def test_unicode_binary(self, r_g):
        normal_response_object = Mock()
        # The u"é" is *not* encoded in UTF-8 this time, so it would throw an
        # UnicodeEncodeError if we'd try to decode it.
        normal_response_object.raw.read.side_effect = [u"é" * 100, ""]
        normal_response_object.encoding = "UTF-8"
        normal_response_object.status_code = 200
        r_g.return_value = normal_response_object

        eq_(appbase.try_get_resource(self.err, None, "http://foo.bar/", "",
                                     binary=True), u"é" * 100)
        self.assert_silent()
    def test_unicode_binary(self, r_g):
        normal_response_object = Mock()
        # The u"é" is *not* encoded in UTF-8 this time, so it would throw an
        # UnicodeEncodeError if we'd try to decode it.
        normal_response_object.raw.read.side_effect = [u"é" * 100, ""]
        normal_response_object.encoding = "UTF-8"
        normal_response_object.status_code = 200
        r_g.return_value = normal_response_object

        eq_(
            appbase.try_get_resource(self.err,
                                     None,
                                     "http://foo.bar/",
                                     "",
                                     binary=True), u"é" * 100)
        self.assert_silent()
Example #18
0
 def test_TooManyRedirects(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_errors=True)
 def test_not_duplicated(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_errors=True)
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     assert len(self.err.errors) == 1, (
         "HTTP errors should not be duplicated.")
 def test_TooManyRedirects(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_errors=True)
Example #21
0
 def test_absolute_url(self, requests_get):
     requests_get.side_effect = ValueError("Whoops!")
     appbase.try_get_resource(self.err, self.package, "http://foo.bar/", "")
 def test_local_not_found(self):
     self.package.read.side_effect = Exception("read error")
     appbase.try_get_resource(self.err, self.package, "local.txt", "")
     self.package.read.assert_called_once_with("local.txt")
     self.assert_failed(with_errors=True)
Example #23
0
 def test_bad_url_URLRequired(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_errors=True)
 def test_data_uri_when_appropriate(self, tgdu):
     assert appbase.try_get_resource(
         self.err, None, "data:foobar", "webapp.manifest", "icon")
     assert tgdu.called
Example #25
0
 def test_not_duplicated(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_errors=True)
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     assert len(
         self.err.errors) == 1, ("HTTP errors should not be duplicated.")
Example #26
0
 def test_data_uri_when_appropriate(self, tgdu):
     assert appbase.try_get_resource(self.err, None, "data:foobar",
                                     "webapp.manifest", "icon")
     assert tgdu.called
Example #27
0
 def test_data_uri_stripping(self, b64decode):
     for uri in ("data:abc;def,foo", "data:def,foo", "data:foo"):
         appbase.try_get_resource(self.err, None, uri, "webapp.manifest",
                                  "icon")
         eq_(b64decode.call_args[0][0], "foo")
Example #28
0
 def test_local_url_relative(self):
     eq_(appbase.try_get_resource(self.err, self.package, "local.txt", ""),
         "read")
     self.package.read.assert_called_once_with("local.txt")
Example #29
0
 def test_bad_url_MissingSchema(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_warnings=True)
Example #30
0
 def test_HTTPError(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_errors=True)
 def test_bad_url_MissingSchema(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_warnings=True)
 def test_bad_url_URLRequired(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_errors=True)
Example #33
0
 def test_Timeout(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_errors=True, with_warnings=False)
 def test_Timeout(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_errors=True, with_warnings=False)
 def test_local_url_relative(self):
     eq_(appbase.try_get_resource(
             self.err, self.package, "local.txt", ""), "read")
     self.package.read.assert_called_once_with("local.txt")
 def test_HTTPError(self):
     appbase.try_get_resource(self.err, None, "http://foo.bar/", "")
     self.assert_failed(with_errors=True)
 def test_absolute_url(self, requests_get):
     requests_get.side_effect = ValueError("Whoops!")
     appbase.try_get_resource(self.err, self.package, "http://foo.bar/", "")
Example #38
0
 def test_local_not_found(self):
     self.package.read.side_effect = Exception("read error")
     appbase.try_get_resource(self.err, self.package, "local.txt", "")
     self.package.read.assert_called_once_with("local.txt")
     self.assert_failed(with_errors=True)