X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/440af55d72c65f5c149718dc52abd00f512ffb71..05fd0aa117566503026dbedfe4d9b0485da2d5ed:/tests/playlists.py diff --git a/tests/playlists.py b/tests/playlists.py index 600991a..0932632 100755 --- a/tests/playlists.py +++ b/tests/playlists.py @@ -26,9 +26,11 @@ def test(): dtest.create_user() c = disorder.client() c.random_disable() + # print " checking initial playlist set is empty" l = c.playlists() assert l == [], "checking initial playlist set is empty" + # print " creating a shared playlist" c.playlist_lock("wibble") c.playlist_set("wibble", ["one", "two", "three"]) @@ -39,6 +41,111 @@ def test(): print " checking new playlist contents is as assigned" l = c.playlist_get("wibble") assert l == ["one", "two", "three"], "checking playlist contents" + # + print " checking new playlist is shared" + s = c.playlist_get_share("wibble") + assert s == "shared", "checking playlist is shared" + # + print " checking cannot unshare un-owned playlist" + try: + c.playlist_set_share("wibble", "private") + print "*** should not be able to adjust shared playlist's sharing ***" + assert False + except disorder.operationError: + pass # good + # + print " modifying shared playlist" + c.playlist_lock("wibble") + c.playlist_set("wibble", ["three", "two", "one"]) + c.playlist_unlock() + 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()