app/django/contrib/sessions/tests.py
changeset 54 03e267d67478
child 323 ff1a9aa48cfd
equal deleted inserted replaced
53:57b4279d8c4e 54:03e267d67478
       
     1 r"""
       
     2 
       
     3 >>> from django.conf import settings
       
     4 >>> from django.contrib.sessions.backends.db import SessionStore as DatabaseSession
       
     5 >>> from django.contrib.sessions.backends.cache import SessionStore as CacheSession
       
     6 >>> from django.contrib.sessions.backends.file import SessionStore as FileSession
       
     7 >>> from django.contrib.sessions.backends.base import SessionBase
       
     8 
       
     9 >>> db_session = DatabaseSession()
       
    10 >>> db_session.modified
       
    11 False
       
    12 >>> db_session['cat'] = "dog"
       
    13 >>> db_session.modified
       
    14 True
       
    15 >>> db_session.pop('cat')
       
    16 'dog'
       
    17 >>> db_session.pop('some key', 'does not exist')
       
    18 'does not exist'
       
    19 >>> db_session.save()
       
    20 >>> db_session.exists(db_session.session_key)
       
    21 True
       
    22 >>> db_session.delete(db_session.session_key)
       
    23 >>> db_session.exists(db_session.session_key)
       
    24 False
       
    25 
       
    26 >>> file_session = FileSession()
       
    27 >>> file_session.modified
       
    28 False
       
    29 >>> file_session['cat'] = "dog"
       
    30 >>> file_session.modified
       
    31 True
       
    32 >>> file_session.pop('cat')
       
    33 'dog'
       
    34 >>> file_session.pop('some key', 'does not exist')
       
    35 'does not exist'
       
    36 >>> file_session.save()
       
    37 >>> file_session.exists(file_session.session_key)
       
    38 True
       
    39 >>> file_session.delete(file_session.session_key)
       
    40 >>> file_session.exists(file_session.session_key)
       
    41 False
       
    42 
       
    43 # Make sure the file backend checks for a good storage dir
       
    44 >>> settings.SESSION_FILE_PATH = "/if/this/directory/exists/you/have/a/weird/computer"
       
    45 >>> FileSession()
       
    46 Traceback (innermost last):
       
    47     ...
       
    48 ImproperlyConfigured: The session storage path '/if/this/directory/exists/you/have/a/weird/computer' doesn't exist. Please set your SESSION_FILE_PATH setting to an existing directory in which Django can store session data.
       
    49 
       
    50 >>> cache_session = CacheSession()
       
    51 >>> cache_session.modified
       
    52 False
       
    53 >>> cache_session['cat'] = "dog"
       
    54 >>> cache_session.modified
       
    55 True
       
    56 >>> cache_session.pop('cat')
       
    57 'dog'
       
    58 >>> cache_session.pop('some key', 'does not exist')
       
    59 'does not exist'
       
    60 >>> cache_session.save()
       
    61 >>> cache_session.delete(cache_session.session_key)
       
    62 >>> cache_session.exists(cache_session.session_key)
       
    63 False
       
    64 
       
    65 >>> s = SessionBase()
       
    66 >>> s._session['some key'] = 'exists' # Pre-populate the session with some data
       
    67 >>> s.accessed = False   # Reset to pretend this wasn't accessed previously
       
    68 
       
    69 >>> s.accessed, s.modified
       
    70 (False, False)
       
    71 
       
    72 >>> s.pop('non existant key', 'does not exist')
       
    73 'does not exist'
       
    74 >>> s.accessed, s.modified
       
    75 (True, False)
       
    76 
       
    77 >>> s.setdefault('foo', 'bar')
       
    78 'bar'
       
    79 >>> s.setdefault('foo', 'baz')
       
    80 'bar'
       
    81 
       
    82 >>> s.accessed = False  # Reset the accessed flag
       
    83 
       
    84 >>> s.pop('some key')
       
    85 'exists'
       
    86 >>> s.accessed, s.modified
       
    87 (True, True)
       
    88 
       
    89 >>> s.pop('some key', 'does not exist')
       
    90 'does not exist'
       
    91 """
       
    92 
       
    93 if __name__ == '__main__':
       
    94     import doctest
       
    95     doctest.testmod()