Unit test for one user saving a note that was created by a different user.
This commit is contained in:
parent
28473599e0
commit
9fb0951c16
|
@ -21,7 +21,11 @@ class Test_notebooks( Test_controller ):
|
||||||
self.username = u"mulder"
|
self.username = u"mulder"
|
||||||
self.password = u"trustno1"
|
self.password = u"trustno1"
|
||||||
self.email_address = u"outthere@example.com"
|
self.email_address = u"outthere@example.com"
|
||||||
|
self.username2 = u"deepthroat"
|
||||||
|
self.password2 = u"mmmtobacco"
|
||||||
|
self.email_address2 = u"parkinglot@example.com"
|
||||||
self.user = None
|
self.user = None
|
||||||
|
self.user2 = None
|
||||||
self.invite = None
|
self.invite = None
|
||||||
self.anonymous = None
|
self.anonymous = None
|
||||||
self.session_id = None
|
self.session_id = None
|
||||||
|
@ -54,10 +58,16 @@ class Test_notebooks( Test_controller ):
|
||||||
self.database.execute( self.user.sql_save_notebook( self.notebook.trash_id, read_write = True, owner = True ) )
|
self.database.execute( self.user.sql_save_notebook( self.notebook.trash_id, read_write = True, owner = True ) )
|
||||||
self.database.execute( self.user.sql_save_notebook( self.anon_notebook.object_id, read_write = False, owner = False ) )
|
self.database.execute( self.user.sql_save_notebook( self.anon_notebook.object_id, read_write = False, owner = False ) )
|
||||||
|
|
||||||
|
self.database.execute( self.user2.sql_save_notebook( self.notebook.object_id, read_write = True, owner = False ) )
|
||||||
|
self.database.execute( self.user2.sql_save_notebook( self.notebook.trash_id, read_write = True, owner = False ) )
|
||||||
|
|
||||||
def make_users( self ):
|
def make_users( self ):
|
||||||
self.user = User.create( self.database.next_id( User ), self.username, self.password, self.email_address )
|
self.user = User.create( self.database.next_id( User ), self.username, self.password, self.email_address )
|
||||||
self.database.save( self.user, commit = False )
|
self.database.save( self.user, commit = False )
|
||||||
|
|
||||||
|
self.user2 = User.create( self.database.next_id( User ), self.username2, self.password2, self.email_address2 )
|
||||||
|
self.database.save( self.user2, commit = False )
|
||||||
|
|
||||||
self.anonymous = User.create( self.database.next_id( User ), u"anonymous" )
|
self.anonymous = User.create( self.database.next_id( User ), u"anonymous" )
|
||||||
self.database.save( self.anonymous, commit = False )
|
self.database.save( self.anonymous, commit = False )
|
||||||
|
|
||||||
|
@ -763,6 +773,75 @@ class Test_notebooks( Test_controller ):
|
||||||
def test_save_startup_note( self ):
|
def test_save_startup_note( self ):
|
||||||
self.test_save_note( startup = True )
|
self.test_save_note( startup = True )
|
||||||
|
|
||||||
|
def test_save_note_by_different_user( self, startup = False ):
|
||||||
|
self.login2()
|
||||||
|
|
||||||
|
# save over an existing note as a different user, supplying new contents and a new title
|
||||||
|
previous_revision = self.note.revision
|
||||||
|
new_note_contents = u"<h3>new title</h3>new blah"
|
||||||
|
result = self.http_post( "/notebooks/save_note/", dict(
|
||||||
|
notebook_id = self.notebook.object_id,
|
||||||
|
note_id = self.note.object_id,
|
||||||
|
contents = new_note_contents,
|
||||||
|
startup = startup,
|
||||||
|
previous_revision = previous_revision,
|
||||||
|
), session_id = self.session_id )
|
||||||
|
|
||||||
|
assert result[ "new_revision" ]
|
||||||
|
assert result[ "new_revision" ].revision != previous_revision
|
||||||
|
assert result[ "new_revision" ].user_id == self.user2.object_id
|
||||||
|
assert result[ "new_revision" ].username == self.username2
|
||||||
|
current_revision = result[ "new_revision" ].revision
|
||||||
|
assert result[ "previous_revision" ].revision == previous_revision
|
||||||
|
assert result[ "previous_revision" ].user_id == self.user.object_id
|
||||||
|
assert result[ "previous_revision" ].username == self.username
|
||||||
|
|
||||||
|
self.login()
|
||||||
|
|
||||||
|
# make sure the old title can no longer be loaded
|
||||||
|
result = self.http_post( "/notebooks/load_note_by_title/", dict(
|
||||||
|
notebook_id = self.notebook.object_id,
|
||||||
|
note_title = "my title",
|
||||||
|
), session_id = self.session_id )
|
||||||
|
|
||||||
|
note = result[ "note" ]
|
||||||
|
assert note == None
|
||||||
|
|
||||||
|
# make sure the new title is now loadable
|
||||||
|
result = self.http_post( "/notebooks/load_note_by_title/", dict(
|
||||||
|
notebook_id = self.notebook.object_id,
|
||||||
|
note_title = "new title",
|
||||||
|
), session_id = self.session_id )
|
||||||
|
|
||||||
|
note = result[ "note" ]
|
||||||
|
|
||||||
|
assert note.object_id == self.note.object_id
|
||||||
|
assert note.title == "new title"
|
||||||
|
assert note.contents == new_note_contents
|
||||||
|
assert note.startup == startup
|
||||||
|
assert note.user_id == self.user2.object_id
|
||||||
|
|
||||||
|
if startup:
|
||||||
|
assert note.rank == 0
|
||||||
|
else:
|
||||||
|
assert note.rank is None
|
||||||
|
|
||||||
|
# make sure that the correct revisions are returned and are in chronological order
|
||||||
|
result = self.http_post( "/notebooks/load_note_revisions/", dict(
|
||||||
|
notebook_id = self.notebook.object_id,
|
||||||
|
note_id = self.note.object_id,
|
||||||
|
), session_id = self.session_id )
|
||||||
|
|
||||||
|
revisions = result[ "revisions" ]
|
||||||
|
assert revisions != None
|
||||||
|
assert len( revisions ) == 2
|
||||||
|
assert revisions[ 0 ].revision == previous_revision
|
||||||
|
assert revisions[ 0 ].user_id == self.user.object_id
|
||||||
|
assert revisions[ 0 ].username == self.username
|
||||||
|
assert revisions[ 1 ].revision == current_revision
|
||||||
|
assert revisions[ 1 ].user_id == self.user2.object_id
|
||||||
|
assert revisions[ 1 ].username == self.username2
|
||||||
|
|
||||||
def test_save_note_without_login( self, startup = False ):
|
def test_save_note_without_login( self, startup = False ):
|
||||||
# save over an existing note supplying new contents and a new title
|
# save over an existing note supplying new contents and a new title
|
||||||
new_note_contents = u"<h3>new title</h3>new blah"
|
new_note_contents = u"<h3>new title</h3>new blah"
|
||||||
|
@ -2416,3 +2495,11 @@ class Test_notebooks( Test_controller ):
|
||||||
login_button = u"login",
|
login_button = u"login",
|
||||||
) )
|
) )
|
||||||
self.session_id = result[ u"session_id" ]
|
self.session_id = result[ u"session_id" ]
|
||||||
|
|
||||||
|
def login2( self ):
|
||||||
|
result = self.http_post( "/users/login", dict(
|
||||||
|
username = self.username2,
|
||||||
|
password = self.password2,
|
||||||
|
login_button = u"login",
|
||||||
|
) )
|
||||||
|
self.session_id = result[ u"session_id" ]
|
||||||
|
|
Reference in New Issue
Block a user