Beispiel #1
0
 def test_login_screen_returns_bytes(self):
     """
     login_screen must return bytes even if unicode parameters are passed.
     Issue 1132 revealed that login_screen would return unicode if the
     username and password were unicode.
     """
     sa = cherrypy.lib.cptools.SessionAuth()
     res = sa.login_screen(None, username=unicodestr('nobody'),
                           password=unicodestr('anypass'))
     self.assertIsInstance(res, bytestr)
Beispiel #2
0
 def test_login_screen_returns_bytes(self):
     """
     login_screen must return bytes even if unicode parameters are passed.
     Issue 1132 revealed that login_screen would return unicode if the
     username and password were unicode.
     """
     sa = cherrypy.lib.cptools.SessionAuth()
     res = sa.login_screen(None, username=unicodestr('nobody'),
         password=unicodestr('anypass'))
     self.assertIsInstance(res, bytestr)
    def login_screen(self, from_page='..', username='', error_msg='', **kwargs):
        return (unicodestr("""<html><body>
Message: %(error_msg)s
<form method="post" action="do_login">
    Login: <input type="text" name="username" value="%(username)s" size="10" /><br />
    Password: <input type="password" name="password" size="10" /><br />
    <input type="hidden" name="from_page" value="%(from_page)s" /><br />
    <input type="submit" />
</form>
</body></html>""") % vars()).encode("utf-8")
Beispiel #4
0
    def login_screen(self,
                     from_page='..',
                     username='',
                     error_msg='',
                     **kwargs):
        return (unicodestr("""<html><body>
Message: %(error_msg)s
<form method="post" action="do_login">
    Login: <input type="text" name="username" value="%(username)s" size="10" /><br />
    Password: <input type="password" name="password" size="10" /><br />
    <input type="hidden" name="from_page" value="%(from_page)s" /><br />
    <input type="submit" />
</form>
</body></html>""") % vars()).encode("utf-8")
Beispiel #5
0
 def count(self, clsname):
     cherrypy.response.headers['Content-Type'] = 'text/plain'
     return unicodestr(globals()[clsname].created)
Beispiel #6
0
    def _test_iterator(self):
        if cherrypy.server.protocol_version != "HTTP/1.1":
            return self.skip()

        self.PROTOCOL = "HTTP/1.1"

        # Check the counts of all the classes, they should be zero.
        closables = ['OurClosableIterator', 'OurGenerator']
        unclosables = ['OurUnclosableIterator', 'OurNotClosableIterator']
        all_classes = closables + unclosables

        import random
        random.shuffle(all_classes)

        for clsname in all_classes:
            self.getPage("/count/" + clsname)
            self.assertStatus(200)
            self.assertBody('0')

        # We should also be able to read the entire content body
        # successfully, though we don't need to, we just want to
        # check the header.
        for clsname in all_classes:
            itr_conn = self.get_conn()
            itr_conn.putrequest("GET", "/getall/" + clsname)
            itr_conn.endheaders()
            response = itr_conn.getresponse()
            self.assertEqual(response.status, 200)
            headers = response.getheaders()
            for header_name, header_value in headers:
                if header_name.lower() == 'content-length':
                    assert header_value == unicodestr(1024 * 16 *
                                                      256), header_value
                    break
            else:
                raise AssertionError('No Content-Length header found')

            # As the response should be fully consumed by CherryPy
            # before sending back, the count should still be at zero
            # by the time the response has been sent.
            self.getPage("/count/" + clsname)
            self.assertStatus(200)
            self.assertBody('0')

        # Now we do the same check with streaming - some classes will
        # be automatically closed, while others cannot.
        stream_counts = {}
        for clsname in all_classes:
            itr_conn = self.get_conn()
            itr_conn.putrequest("GET", "/stream/" + clsname)
            itr_conn.endheaders()
            response = itr_conn.getresponse()
            self.assertEqual(response.status, 200)
            response.fp.read(65536)

            # Let's check the count - this should always be one.
            self.getPage("/count/" + clsname)
            self.assertBody('1')

            # Now if we close the connection, the count should go back
            # to zero.
            itr_conn.close()
            self.getPage("/count/" + clsname)

            # If this is a response which should be easily closed, then
            # we will test to see if the value has gone back down to
            # zero.
            if clsname in closables:

                # Sometimes we try to get the answer too quickly - we
                # will wait for 100 ms before asking again if we didn't
                # get the answer we wanted.
                if self.body != '0':
                    import time
                    time.sleep(0.1)
                    self.getPage("/count/" + clsname)

            stream_counts[clsname] = int(self.body)

        # Check that we closed off the classes which should provide
        # easy mechanisms for doing so.
        for clsname in closables:
            assert stream_counts[clsname] == 0, (
                'did not close off stream response correctly, expected '
                'count of zero for %s: %s' % (clsname, stream_counts))
 def get_elements(self, headername):
     e = cherrypy.request.headers.elements(headername)
     return "\n".join([unicodestr(x) for x in e])
Beispiel #8
0
 def get_elements(self, headername):
     e = cherrypy.request.headers.elements(headername)
     return "\n".join([unicodestr(x) for x in e])
 def GET(self, *args, **kwargs):
     """
     Return the appropriate representation of the instance.
     """
     return unicodestr(self.user)
 def GET(self):
     return unicodestr(sorted(user_lookup.keys()))
Beispiel #11
0
    def test_iterator(self):
        if cherrypy.server.protocol_version != "HTTP/1.1":
            return self.skip()

        self.PROTOCOL = "HTTP/1.1"

        # Check the counts of all the classes, they should be zero.
        closables = ['OurClosableIterator', 'OurGenerator']
        unclosables = ['OurUnclosableIterator', 'OurNotClosableIterator']
        all_classes = closables + unclosables

        import random
        random.shuffle(all_classes)

        for clsname in all_classes:
            self.getPage("/count/" + clsname)
            self.assertStatus(200)
            self.assertBody('0')

        # We should also be able to read the entire content body
        # successfully, though we don't need to, we just want to
        # check the header.
        for clsname in all_classes:
            itr_conn = self.get_conn()
            itr_conn.putrequest("GET", "/getall/" + clsname)
            itr_conn.endheaders()
            response = itr_conn.getresponse()
            self.assertEqual(response.status, 200)
            headers = response.getheaders()
            for header_name, header_value in headers:
                if header_name.lower() == 'content-length':
                    assert header_value == unicodestr(1024 * 16 * 256), header_value
                    break
            else:
                raise AssertionError('No Content-Length header found')

            # As the response should be fully consumed by CherryPy
            # before sending back, the count should still be at zero
            # by the time the response has been sent.
            self.getPage("/count/" + clsname)
            self.assertStatus(200)
            self.assertBody('0')

        # Now we do the same check with streaming - some classes will
        # be automatically closed, while others cannot.
        stream_counts = {}
        for clsname in all_classes:
            itr_conn = self.get_conn()
            itr_conn.putrequest("GET", "/stream/" + clsname)
            itr_conn.endheaders()
            response = itr_conn.getresponse()
            self.assertEqual(response.status, 200)
            response.fp.read(65536)

            # Let's check the count - this should always be one.
            self.getPage("/count/" + clsname)
            self.assertBody('1')

            # Now if we close the connection, the count should go back
            # to zero.
            itr_conn.close()
            self.getPage("/count/" + clsname)

            # If this is a response which should be easily closed, then
            # we will test to see if the value has gone back down to
            # zero.
            if clsname in closables:

                # Sometimes we try to get the answer too quickly - we
                # will wait for 100 ms before asking again if we didn't
                # get the answer we wanted.
                if self.body != '0':
                    import time
                    time.sleep(0.1)
                    self.getPage("/count/" + clsname)

            stream_counts[clsname] = int(self.body)

        # Check that we closed off the classes which should provide
        # easy mechanisms for doing so.
        for clsname in closables:
            assert stream_counts[clsname] == 0, (
                'did not close off stream response correctly, expected '
                'count of zero for %s: %s' % (clsname, stream_counts)
            )
Beispiel #12
0
 def count(self, clsname):
     cherrypy.response.headers['Content-Type'] = 'text/plain'
     return unicodestr(globals()[clsname].created)
 def GET(self, *args, **kwargs):
     """
     Return the appropriate representation of the instance.
     """
     return unicodestr(self.user)
 def GET(self):
     return unicodestr(sorted(user_lookup.keys()))