| 1 | # vim:fileencoding=utf-8:nomodified |
|---|
| 2 | # $Id$ |
|---|
| 3 | # Test of the dao module |
|---|
| 4 | |
|---|
| 5 | import json |
|---|
| 6 | from radiomate.dao import * |
|---|
| 7 | from radiomate.mate import * |
|---|
| 8 | import sys |
|---|
| 9 | import MySQLdb |
|---|
| 10 | |
|---|
| 11 | # connection parameters |
|---|
| 12 | DBHOST="127.0.0.1" |
|---|
| 13 | DBUSER="mate" |
|---|
| 14 | DBPASSWORD="radi0" |
|---|
| 15 | DATABASE="radiomate0" |
|---|
| 16 | |
|---|
| 17 | def roledaotest(): |
|---|
| 18 | r = Role() |
|---|
| 19 | r.rolename = "testrole" |
|---|
| 20 | cm = DBConnectionManager( |
|---|
| 21 | dbhost = DBHOST, |
|---|
| 22 | dbuser = DBUSER, |
|---|
| 23 | dbpassword = DBPASSWORD, |
|---|
| 24 | database = DATABASE |
|---|
| 25 | ) |
|---|
| 26 | roledao = RoleDAO(cm) |
|---|
| 27 | roledao.insert(r) |
|---|
| 28 | r1 = roledao.getByName("testrole") |
|---|
| 29 | print r1 |
|---|
| 30 | rall = roledao.getAll() |
|---|
| 31 | print rall |
|---|
| 32 | r1.canManageRoles = True |
|---|
| 33 | roledao.update(r1) |
|---|
| 34 | r2 = roledao.getByName("testrole") |
|---|
| 35 | print r2 |
|---|
| 36 | roledao.removeByName("testrole") |
|---|
| 37 | |
|---|
| 38 | def userdaotest(): |
|---|
| 39 | r = Role() |
|---|
| 40 | r.rolename = "testrole" |
|---|
| 41 | cm = DBConnectionManager( |
|---|
| 42 | dbhost = DBHOST, |
|---|
| 43 | dbuser = DBUSER, |
|---|
| 44 | dbpassword = DBPASSWORD, |
|---|
| 45 | database = DATABASE |
|---|
| 46 | ) |
|---|
| 47 | roledao = RoleDAO(cm) |
|---|
| 48 | roledao.insert(r) |
|---|
| 49 | u = User() |
|---|
| 50 | u.name = "testuser" |
|---|
| 51 | u.password = "secret" |
|---|
| 52 | u.displayname = "Test User" |
|---|
| 53 | u.rolename = r.rolename |
|---|
| 54 | userdao = UserDAO(cm) |
|---|
| 55 | userdao.insert(u) |
|---|
| 56 | u0 = userdao.logincheck(u.name, u.password) |
|---|
| 57 | print u0 |
|---|
| 58 | assert u0 |
|---|
| 59 | u1 = userdao.getByName(u.name) |
|---|
| 60 | print u1 |
|---|
| 61 | u1.displayname = "Modified Test User" |
|---|
| 62 | userdao.update(u1) |
|---|
| 63 | u2 = userdao.getByName(u1.name) |
|---|
| 64 | print u2 |
|---|
| 65 | res = userdao.getAll() |
|---|
| 66 | print res |
|---|
| 67 | userdao.removeByName(u.name) |
|---|
| 68 | roledao.removeByName(r.rolename) |
|---|
| 69 | |
|---|
| 70 | def mediafilesdaotest(): |
|---|
| 71 | r = Role() |
|---|
| 72 | r.rolename = "testrole" |
|---|
| 73 | u = User() |
|---|
| 74 | u.name = "foobar1" |
|---|
| 75 | u.rolename = r.rolename |
|---|
| 76 | |
|---|
| 77 | mf = MediaFile() |
|---|
| 78 | mf.user = u.name |
|---|
| 79 | mf.path = "/tmp/ulululu.mp3" |
|---|
| 80 | mf.type = 'audio' |
|---|
| 81 | mf.title = "Ulululu" |
|---|
| 82 | mf.author = "Shakerobba" |
|---|
| 83 | mf.album = "Steam this album" |
|---|
| 84 | mf.genre = "steam pop" |
|---|
| 85 | mf.year = 1932 |
|---|
| 86 | mf.comment = "very good music" |
|---|
| 87 | mf.license = "CC" |
|---|
| 88 | mf.tags = "shakerobba,steam,wolves" |
|---|
| 89 | cm = DBConnectionManager( |
|---|
| 90 | dbhost = DBHOST, |
|---|
| 91 | dbuser = DBUSER, |
|---|
| 92 | dbpassword = DBPASSWORD, |
|---|
| 93 | database = DATABASE |
|---|
| 94 | ) |
|---|
| 95 | rdao = RoleDAO(cm) |
|---|
| 96 | rdao.insert(r) |
|---|
| 97 | |
|---|
| 98 | udao = UserDAO(cm) |
|---|
| 99 | udao.insert(u) |
|---|
| 100 | mediafiledao = MediaFileDAO(cm) |
|---|
| 101 | id = mediafiledao.insert(mf) |
|---|
| 102 | mf2 = mediafiledao.getById(id) |
|---|
| 103 | print mf2 |
|---|
| 104 | mf2.license = "AGPL" |
|---|
| 105 | mediafiledao.update(mf2) |
|---|
| 106 | mf3 = mediafiledao.getById(id) |
|---|
| 107 | print mf3 |
|---|
| 108 | mediafiledao.removeById(id) |
|---|
| 109 | udao.removeByName(u.name) |
|---|
| 110 | rdao.removeByName(r.rolename) |
|---|
| 111 | |
|---|
| 112 | def playlistdaotest(): |
|---|
| 113 | cm = DBConnectionManager( |
|---|
| 114 | dbhost = DBHOST, |
|---|
| 115 | dbuser = DBUSER, |
|---|
| 116 | dbpassword = DBPASSWORD, |
|---|
| 117 | database = DATABASE |
|---|
| 118 | ) |
|---|
| 119 | r = Role() |
|---|
| 120 | r.rolename = "testrole" |
|---|
| 121 | rdao = RoleDAO(cm) |
|---|
| 122 | rdao.insert(r) |
|---|
| 123 | u1 = User() |
|---|
| 124 | u1.name = "foobar1" |
|---|
| 125 | u1.rolename = r.rolename |
|---|
| 126 | udao = UserDAO(cm) |
|---|
| 127 | udao.insert(u1) |
|---|
| 128 | u2 = User() |
|---|
| 129 | u2.name = "foobar2" |
|---|
| 130 | u2.rolename = r.rolename |
|---|
| 131 | udao.insert(u2) |
|---|
| 132 | |
|---|
| 133 | mf = MediaFile() |
|---|
| 134 | mf.user = "foobar2" |
|---|
| 135 | mf.path = "/tmp/ulululu.mp3" |
|---|
| 136 | mf.type = 'audio' |
|---|
| 137 | mf.title = "Ulululu" |
|---|
| 138 | mf.author = "Shakerobba" |
|---|
| 139 | mf.album = "Steam this album" |
|---|
| 140 | mf.genre = "steam pop" |
|---|
| 141 | mf.year = 1932 |
|---|
| 142 | mf.comment = "very good music" |
|---|
| 143 | mf.license = "CC" |
|---|
| 144 | mf.tags = "shakerobba,steam,wolves" |
|---|
| 145 | |
|---|
| 146 | mf2 = MediaFile() |
|---|
| 147 | mf2.user = "foobar2" |
|---|
| 148 | mf2.path = "/tmp/ulululu2.mp3" |
|---|
| 149 | mf2.type = 'audio' |
|---|
| 150 | mf2.title = "Ulululu2" |
|---|
| 151 | mf2.author = "Shakerobba" |
|---|
| 152 | mf2.album = "Steam this album" |
|---|
| 153 | mf2.genre = "steam pop" |
|---|
| 154 | mf2.year = 1932 |
|---|
| 155 | mf2.comment = "very good music" |
|---|
| 156 | mf2.license = "CC" |
|---|
| 157 | mf2.tags = "shakerobba,steam,wolves,sequel" |
|---|
| 158 | |
|---|
| 159 | mediafiledao = MediaFileDAO(cm) |
|---|
| 160 | id1 = mediafiledao.insert(mf) |
|---|
| 161 | id2 = mediafiledao.insert(mf2) |
|---|
| 162 | mf = mediafiledao.getById(id1) |
|---|
| 163 | mf2 = mediafiledao.getById(id2) |
|---|
| 164 | |
|---|
| 165 | pl = PlayList() |
|---|
| 166 | pl.title = "just a test" |
|---|
| 167 | pl.creator = "foobar2" |
|---|
| 168 | pl.private = False |
|---|
| 169 | pl.random = False |
|---|
| 170 | pl.description = "testing dao" |
|---|
| 171 | pl.comment = ":)" |
|---|
| 172 | pl.tags = "test,prova,foo,bar" |
|---|
| 173 | |
|---|
| 174 | pl.addMediaFile(mf) |
|---|
| 175 | pl.addMediaFile(mf2) |
|---|
| 176 | |
|---|
| 177 | pl.addOwner("foobar1") |
|---|
| 178 | pl.addViewer("foobar2") |
|---|
| 179 | |
|---|
| 180 | print pl |
|---|
| 181 | |
|---|
| 182 | playlistdao = PlayListDAO(cm) |
|---|
| 183 | plid = playlistdao.insert(pl) |
|---|
| 184 | print plid |
|---|
| 185 | pl2 = playlistdao.getById(plid) |
|---|
| 186 | print pl2 |
|---|
| 187 | |
|---|
| 188 | pl2.description = "testing dao 2" |
|---|
| 189 | playlistdao.update(pl2) |
|---|
| 190 | pl3 = playlistdao.getById(pl2.id) |
|---|
| 191 | print pl3 |
|---|
| 192 | |
|---|
| 193 | res = playlistdao.getByUser("foobar1") |
|---|
| 194 | print res |
|---|
| 195 | |
|---|
| 196 | res = playlistdao.getByCreator("foobar2") |
|---|
| 197 | print res |
|---|
| 198 | |
|---|
| 199 | mediafiledao.removeById(id1) |
|---|
| 200 | mediafiledao.removeById(id2) |
|---|
| 201 | playlistdao.removeById(plid) |
|---|
| 202 | udao.removeByName(u1.name) |
|---|
| 203 | udao.removeByName(u2.name) |
|---|
| 204 | rdao.removeByName(r.rolename) |
|---|
| 205 | |
|---|
| 206 | def timeslotdaotest(): |
|---|
| 207 | cm = DBConnectionManager( |
|---|
| 208 | dbhost = DBHOST, |
|---|
| 209 | dbuser = DBUSER, |
|---|
| 210 | dbpassword = DBPASSWORD, |
|---|
| 211 | database = DATABASE |
|---|
| 212 | ) |
|---|
| 213 | rdao = RoleDAO(cm) |
|---|
| 214 | udao = UserDAO(cm) |
|---|
| 215 | tsdao = TimeSlotDAO(cm) |
|---|
| 216 | playlistdao = PlayListDAO(cm) |
|---|
| 217 | |
|---|
| 218 | |
|---|
| 219 | r = Role() |
|---|
| 220 | r.rolename = "testrole" |
|---|
| 221 | |
|---|
| 222 | u1 = User() |
|---|
| 223 | u1.name = "foobar1" |
|---|
| 224 | u1.rolename = "testrole" |
|---|
| 225 | |
|---|
| 226 | u2 = User() |
|---|
| 227 | u2.name = "foobar2" |
|---|
| 228 | u2.rolename = "testrole" |
|---|
| 229 | |
|---|
| 230 | try: |
|---|
| 231 | rdao.insert(r) |
|---|
| 232 | udao.insert(u1) |
|---|
| 233 | udao.insert(u2) |
|---|
| 234 | except: |
|---|
| 235 | pass |
|---|
| 236 | |
|---|
| 237 | print "-- Playlist --" |
|---|
| 238 | pl = PlayList() |
|---|
| 239 | pl.title = "just a test" |
|---|
| 240 | pl.creator = "foobar2" |
|---|
| 241 | pl.private = False |
|---|
| 242 | pl.random = False |
|---|
| 243 | pl.description = "testing dao" |
|---|
| 244 | pl.comment = ":)" |
|---|
| 245 | pl.tags = "test,prova,foo,bar" |
|---|
| 246 | plid = playlistdao.insert(pl) |
|---|
| 247 | print "--" |
|---|
| 248 | |
|---|
| 249 | print "-- TimeSlot --" |
|---|
| 250 | ts = TimeSlot() |
|---|
| 251 | ts.creator = 'foobar1' |
|---|
| 252 | ts.slottype = 'dummy' |
|---|
| 253 | ts.slotparams = {'par1': 0, 'par2': 'ciao'} |
|---|
| 254 | ts.beginningtime = {'year': 2010, 'month': 07, 'day': 1, 'hour': 10, 'minute': 0} |
|---|
| 255 | ts.duration = 60 |
|---|
| 256 | ts.title = "The Test Show" |
|---|
| 257 | ts.description = "the best test show ever" |
|---|
| 258 | ts.comment = "just a test" |
|---|
| 259 | ts.tags = "test, show, radio" |
|---|
| 260 | print ts.beginningtime |
|---|
| 261 | print ts |
|---|
| 262 | |
|---|
| 263 | print "-- TimeSlot --" |
|---|
| 264 | ts.fallbackplaylist = plid |
|---|
| 265 | print ts |
|---|
| 266 | print "insertion" |
|---|
| 267 | tsid = tsdao.insert(ts) |
|---|
| 268 | print "getById --" |
|---|
| 269 | ts1 = tsdao.getById(tsid) |
|---|
| 270 | print ts1 |
|---|
| 271 | ts1.description = "testing dao" |
|---|
| 272 | tsdao.update(ts1) |
|---|
| 273 | |
|---|
| 274 | ts2 = tsdao.getById(tsid) |
|---|
| 275 | print ts2 |
|---|
| 276 | |
|---|
| 277 | res = tsdao.getFromTo("2010-07-01 9:00", "2010-07-01 12:00") |
|---|
| 278 | print res |
|---|
| 279 | |
|---|
| 280 | tss = TimeSlot() |
|---|
| 281 | tss.title = "show" |
|---|
| 282 | res = tsdao.search(tss) |
|---|
| 283 | print res |
|---|
| 284 | |
|---|
| 285 | print "getNext" |
|---|
| 286 | res = tsdao.getNext("2010-07-01 8:00") |
|---|
| 287 | print res |
|---|
| 288 | |
|---|
| 289 | tsdao.removeById(tsid) |
|---|
| 290 | playlistdao.removeById(plid) |
|---|
| 291 | udao.removeByName(u1.name) |
|---|
| 292 | udao.removeByName(u2.name) |
|---|
| 293 | rdao.removeByName(r.rolename) |
|---|
| 294 | |
|---|
| 295 | |
|---|
| 296 | def exceptiontest(): |
|---|
| 297 | conn = MySQLdb.connect( |
|---|
| 298 | host = DBHOST, |
|---|
| 299 | user = DBUSER, |
|---|
| 300 | passwd = DBPASSWORD, |
|---|
| 301 | db = DATABASE |
|---|
| 302 | ) |
|---|
| 303 | try: |
|---|
| 304 | selstring = "SELECT dummyfield FROM roles" |
|---|
| 305 | cursor = conn.cursor(MySQLdb.cursors.DictCursor) |
|---|
| 306 | cursor.execute(selstring) |
|---|
| 307 | cursor.close() |
|---|
| 308 | except MySQLdb.Error, e: |
|---|
| 309 | raise RadioMateDAOException(e.args) |
|---|
| 310 | |
|---|
| 311 | conn.close() |
|---|
| 312 | |
|---|
| 313 | |
|---|
| 314 | #execute |
|---|
| 315 | print "---" |
|---|
| 316 | roledaotest() |
|---|
| 317 | userdaotest() |
|---|
| 318 | mediafilesdaotest() |
|---|
| 319 | playlistdaotest() |
|---|
| 320 | timeslotdaotest() |
|---|
| 321 | #exceptiontest() |
|---|
| 322 | |
|---|