Mercurial > p > roundup > code
annotate test/session_common.py @ 5653:ba67e397f063
Fix string/bytes issues under python 3.
1) cgi/client.py: override cgi.FieldStorage's make_file so that file
is always created in binary/byte mode. This means that json (and
xml) are bytes not strings.
2) rest.py: try harder to find dicttoxml in roundup directory or on
sys.path. This just worked under python 2 but python 3 only
searches sys.path by default and does not search relative like
python 2.
3) rest.py: replace headers.getheader call removed from python 3 with
equivalent code.
4) rest.py: make value returned from dispatch into bytes not string.
5) test/caseinsensitivedict.py, test/test_CaseInsensitiveDict.py:
get code from stackoverflow that implements a case insensitive key
dict. So dict['foo'], dict['Foo'] are the same entry. Used for
looking up headers in mocked http rewuset header array.
6) test/rest_common.py: rework tests for etags and rest to properly
supply bytes to the called routines. Calls to s2b and b2s and use
of BytesIO and overriding make_file in cgi.FieldStorage to try to
make sure it works under python 3.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 17 Mar 2019 19:28:26 -0400 |
| parents | d26921b851c3 |
| children | 95a366d46065 |
| rev | line source |
|---|---|
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 import os, shutil, unittest |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 |
|
5388
d26921b851c3
Python 3 preparation: make relative imports explicit.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5319
diff
changeset
|
3 from .db_test_base import config |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 |
|
5033
63c79c0992ae
Update tests to work with py.test
John Kristensen <john@jerrykan.com>
parents:
4386
diff
changeset
|
5 |
|
63c79c0992ae
Update tests to work with py.test
John Kristensen <john@jerrykan.com>
parents:
4386
diff
changeset
|
6 class SessionTest(object): |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 def setUp(self): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 # remove previous test, ignore errors |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 if os.path.exists(config.DATABASE): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 shutil.rmtree(config.DATABASE) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 os.makedirs(config.DATABASE + '/files') |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 self.db = self.module.Database(config, 'admin') |
|
5319
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5033
diff
changeset
|
13 self.sessions = self.db.getSessionManager() |
|
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5033
diff
changeset
|
14 self.otks = self.db.getOTKManager() |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 def tearDown(self): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 if hasattr(self, 'db'): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 self.db.close() |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
19 if os.path.exists(config.DATABASE): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 shutil.rmtree(config.DATABASE) |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
21 |
|
4386
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
22 def testList(self): |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
23 self.sessions.list() |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
24 self.sessions.set('random_key', text='hello, world!') |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
25 self.sessions.list() |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
26 |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
27 def testGetAll(self): |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
28 self.sessions.set('random_key', text='hello, world!') |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
29 self.assertEqual(self.sessions.getall('random_key'), |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
30 {'text': 'hello, world!'}) |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
31 |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
32 def testDestroy(self): |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
33 self.sessions.set('random_key', text='hello, world!') |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
34 self.assertEquals(self.sessions.getall('random_key'), |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
35 {'text': 'hello, world!'}) |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
36 self.sessions.destroy('random_key') |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
37 self.assertRaises(KeyError, self.sessions.getall, 'random_key') |
|
cc33dc9aa3f2
moar test coverage
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
38 |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
39 def testSetSession(self): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 self.sessions.set('random_key', text='hello, world!') |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 self.assertEqual(self.sessions.get('random_key', 'text'), |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 'hello, world!') |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
44 def testUpdateSession(self): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 self.sessions.set('random_key', text='hello, world!') |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 self.assertEqual(self.sessions.get('random_key', 'text'), |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 'hello, world!') |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 self.sessions.set('random_key', text='nope') |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 self.assertEqual(self.sessions.get('random_key', 'text'), 'nope') |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 |
