X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/97b379d29cf5247fb5071591a6809365d633f60b..2e9ba080dd30434f3e8f88e63029280889586a32:/tests/playlists.py diff --git a/tests/playlists.py b/tests/playlists.py index 11847fb..0932632 100755 --- a/tests/playlists.py +++ b/tests/playlists.py @@ -61,6 +61,91 @@ def test(): print " checking updated playlist contents is as assigned" l = c.playlist_get("wibble") assert l == ["three", "two", "one"], "checking modified playlist contents" + # + print " creating a private playlist" + c.playlist_lock("fred.spong") + c.playlist_set("fred.spong", ["a", "b", "c"]) + c.playlist_unlock() + s = c.playlist_get_share("fred.spong") + assert s == "private", "owned playlists are private by default" + # + print " creating a public playlist" + c.playlist_lock("fred.foo") + c.playlist_set("fred.foo", ["p", "q", "r"]) + c.playlist_set_share("fred.foo", "public") + c.playlist_unlock() + s = c.playlist_get_share("fred.foo") + assert s == "public", "new playlist is now public" + # + print " checking fred can see all playlists" + l = c.playlists() + assert dtest.lists_have_same_contents(l, + ["fred.spong", "fred.foo", "wibble"]), "playlist list is as expected" + # + print " adding a second user" + c.adduser("bob", "bobpass") + d = disorder.client(user="bob", password="bobpass") + print " checking bob cannot see fred's private playlist" + l = d.playlists() + assert dtest.lists_have_same_contents(l, + ["fred.foo", "wibble"]), "playlist list is as expected" + # + print " checking bob can read shared and public playlists" + d.playlist_get("wibble") + d.playlist_get("fred.foo") + print " checking bob cannot read private playlist" + try: + d.playlist_get("fred.spong") + print "*** should not be able to read private playlist ***" + assert False + except disorder.operationError: + pass # good + # + print " checking bob cannot modify fred's playlists" + try: + d.playlist_lock("fred.foo") + print "*** should not be able to lock fred's public playlist ***" + assert False + except disorder.operationError: + pass # good + try: + d.playlist_lock("fred.spong") + print "*** should not be able to lock fred's private playlist ***" + assert False + except disorder.operationError: + pass # good + print " checking unlocked playlists cannot be modified" + # + try: + c.playlist_set("wibble", ["a"]) + print "*** should not be able to modify unlocked playlists ***" + assert False + except disorder.operationError: + pass # good + # + print " deleting playlists" + c.playlist_delete("fred.spong") + l = c.playlists() + assert dtest.lists_have_same_contents(l, + ["fred.foo", "wibble"]) + try: + d.playlist_delete("fred.foo") + print "*** should not be to delete fred's playlist ***" + assert False + except disorder.operationError: + pass # good + d.playlist_delete("wibble") + l = c.playlists() + assert l == ["fred.foo"] + c.playlist_delete("fred.foo") + l = c.playlists() + assert l == [] + try: + c.playlist_delete("nonesuch") + print "*** should not be to delete nonexistent playlist ***" + assert False + except disorder.operationError: + pass # good if __name__ == '__main__': dtest.run()