From 9fb0951c16c4949b89bd208ea45120392af032f3 Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Fri, 4 Jan 2008 22:58:20 +0000 Subject: [PATCH] Unit test for one user saving a note that was created by a different user. --- controller/test/Test_notebooks.py | 87 +++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/controller/test/Test_notebooks.py b/controller/test/Test_notebooks.py index af023ba..7d60765 100644 --- a/controller/test/Test_notebooks.py +++ b/controller/test/Test_notebooks.py @@ -21,7 +21,11 @@ class Test_notebooks( Test_controller ): self.username = u"mulder" self.password = u"trustno1" 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.user2 = None self.invite = None self.anonymous = 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.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 ): self.user = User.create( self.database.next_id( User ), self.username, self.password, self.email_address ) 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.database.save( self.anonymous, commit = False ) @@ -763,6 +773,75 @@ class Test_notebooks( Test_controller ): def test_save_startup_note( self ): 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"

new title

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 ): # save over an existing note supplying new contents and a new title new_note_contents = u"

new title

new blah" @@ -2416,3 +2495,11 @@ class Test_notebooks( Test_controller ): login_button = u"login", ) ) 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" ]