3 # This file is part of DisOrder.
4 # Copyright (C) 2008 Richard Kettlewell
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
24 """Playlist testing"""
30 print " checking initial playlist set is empty"
32 assert l
== [], "checking initial playlist set is empty"
34 print " creating a shared playlist"
35 c
.playlist_lock("wibble")
36 c
.playlist_set("wibble", ["one", "two", "three"])
38 print " checking new playlist appears in list"
40 assert l
== ["wibble"], "checking new playlists"
41 print " checking new playlist contents is as assigned"
42 l
= c
.playlist_get("wibble")
43 assert l
== ["one", "two", "three"], "checking playlist contents"
45 print " checking new playlist is shared"
46 s
= c
.playlist_get_share("wibble")
47 assert s
== "shared", "checking playlist is shared"
49 print " checking cannot unshare un-owned playlist"
51 c
.playlist_set_share("wibble", "private")
52 print "*** should not be able to adjust shared playlist's sharing ***"
54 except disorder
.operationError
:
57 print " modifying shared playlist"
58 c
.playlist_lock("wibble")
59 c
.playlist_set("wibble", ["three", "two", "one"])
61 print " checking updated playlist contents is as assigned"
62 l
= c
.playlist_get("wibble")
63 assert l
== ["three", "two", "one"], "checking modified playlist contents"
65 print " creating a private playlist"
66 c
.playlist_lock("fred.spong")
67 c
.playlist_set("fred.spong", ["a", "b", "c"])
69 s
= c
.playlist_get_share("fred.spong")
70 assert s
== "private", "owned playlists are private by default"
72 print " creating a public playlist"
73 c
.playlist_lock("fred.foo")
74 c
.playlist_set("fred.foo", ["p", "q", "r"])
75 c
.playlist_set_share("fred.foo", "public")
77 s
= c
.playlist_get_share("fred.foo")
78 assert s
== "public", "new playlist is now public"
80 print " checking fred can see all playlists"
82 assert dtest
.lists_have_same_contents(l
,
83 ["fred.spong", "fred.foo", "wibble"]), "playlist list is as expected"
85 print " adding a second user"
86 c
.adduser("bob", "bobpass")
87 d
= disorder
.client(user
="bob", password
="bobpass")
88 print " checking bob cannot see fred's private playlist"
90 assert dtest
.lists_have_same_contents(l
,
91 ["fred.foo", "wibble"]), "playlist list is as expected"
93 print " checking bob can read shared and public playlists"
94 d
.playlist_get("wibble")
95 d
.playlist_get("fred.foo")
96 print " checking bob cannot read private playlist"
98 d
.playlist_get("fred.spong")
99 print "*** should not be able to read private playlist ***"
101 except disorder
.operationError
:
104 print " checking bob cannot modify fred's playlists"
106 d
.playlist_lock("fred.foo")
107 print "*** should not be able to lock fred's public playlist ***"
109 except disorder
.operationError
:
112 d
.playlist_lock("fred.spong")
113 print "*** should not be able to lock fred's private playlist ***"
115 except disorder
.operationError
:
117 print " checking unlocked playlists cannot be modified"
120 c
.playlist_set("wibble", ["a"])
121 print "*** should not be able to modify unlocked playlists ***"
123 except disorder
.operationError
:
126 print " deleting playlists"
127 c
.playlist_delete("fred.spong")
129 assert dtest
.lists_have_same_contents(l
,
130 ["fred.foo", "wibble"])
132 d
.playlist_delete("fred.foo")
133 print "*** should not be to delete fred's playlist ***"
135 except disorder
.operationError
:
137 d
.playlist_delete("wibble")
139 assert l
== ["fred.foo"]
140 c
.playlist_delete("fred.foo")
144 c
.playlist_delete("nonesuch")
145 print "*** should not be to delete nonexistent playlist ***"
147 except disorder
.operationError
:
150 if __name__
== '__main__':