Michael Ziegler
15 years ago
1 changed files with 199 additions and 0 deletions
@ -0,0 +1,199 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
""" |
||||
|
* Copyright (C) 2009, Michael "Svedrin" Ziegler <diese-addy@funzt-halt.net> |
||||
|
* |
||||
|
* Mumble-Django is free software; you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation; either version 2 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* |
||||
|
* This package is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
""" |
||||
|
|
||||
|
from unittest import TestCase |
||||
|
|
||||
|
from django.conf import settings |
||||
|
|
||||
|
from models import * |
||||
|
from utils import ObjectInfo |
||||
|
|
||||
|
|
||||
|
class InstancesHandling( TestCase ): |
||||
|
""" Tests creation, editing and removing of vserver instances. """ |
||||
|
|
||||
|
def setUp( self ): |
||||
|
# Make sure we always start with a FRESH murmur instance, checking for left-over instances |
||||
|
# and deleting them before creating ours. |
||||
|
try: |
||||
|
self.murmur = Mumble.objects.get( addr="0.0.0.0", port=31337 ); |
||||
|
except Mumble.DoesNotExist: |
||||
|
pass |
||||
|
else: |
||||
|
self.murmur.delete(); |
||||
|
finally: |
||||
|
self.murmur = Mumble( name="#unit testing instance#", addr="0.0.0.0", port=31337 ); |
||||
|
self.murmur.save(); |
||||
|
|
||||
|
def testDefaultConf( self ): |
||||
|
conf = self.murmur.ctl.getAllConf( self.murmur.srvid ); |
||||
|
|
||||
|
self.assert_( type(conf) == dict ); |
||||
|
self.assert_( "host" in conf ); |
||||
|
self.assert_( "port" in conf ); |
||||
|
self.assert_( "certificate" in conf ); |
||||
|
self.assert_( "key" in conf ); |
||||
|
self.assert_( "registerhostname" in conf ); |
||||
|
self.assert_( "registername" in conf ); |
||||
|
self.assert_( "channelname" in conf ); |
||||
|
self.assert_( "username" in conf ); |
||||
|
self.assert_( "obfuscate" in conf ); |
||||
|
self.assert_( "defaultchannel" in conf ); |
||||
|
|
||||
|
def testAddrPortUnique( self ): |
||||
|
try: |
||||
|
duplicate = Mumble( name="#another unit testing instance#", addr="0.0.0.0", port=31337 ); |
||||
|
if duplicate.ctl.method == "ICE": |
||||
|
import Murmur |
||||
|
self.assertRaises( Murmur.ServerFailureException, duplicate.save ); |
||||
|
else: |
||||
|
from sqlite3 import IntegrityError |
||||
|
self.assertRaises( IntegrityError, duplicate.save ); |
||||
|
finally: |
||||
|
# make sure the duplicate is removed |
||||
|
duplicate.ctl.deleteServer( duplicate.srvid ); |
||||
|
|
||||
|
def tearDown( self ): |
||||
|
self.murmur.delete(); |
||||
|
|
||||
|
|
||||
|
class DataReading( TestCase ): |
||||
|
""" Tests reading data from murmur using the low-level CTL methods. """ |
||||
|
|
||||
|
def setUp( self ): |
||||
|
self.murmur = Mumble.objects.get(id=1); |
||||
|
|
||||
|
|
||||
|
def testCtlGetChannels( self ): |
||||
|
""" Test getChannels() """ |
||||
|
|
||||
|
channels = self.murmur.ctl.getChannels( self.murmur.srvid ); |
||||
|
|
||||
|
if self.murmur.ctl.method == "ICE": |
||||
|
import Murmur |
||||
|
self.assertEquals( type( channels[0] ), Murmur.Channel ); |
||||
|
else: |
||||
|
self.assertEquals( type( channels[0] ), ObjectInfo ); |
||||
|
|
||||
|
self.assert_( hasattr( channels[0], "id" ) ); |
||||
|
self.assert_( hasattr( channels[0], "name" ) ); |
||||
|
self.assert_( hasattr( channels[0], "parent" ) ); |
||||
|
self.assert_( hasattr( channels[0], "links" ) ); |
||||
|
|
||||
|
|
||||
|
def testCtlGetPlayers( self ): |
||||
|
""" Test getPlayers() """ |
||||
|
|
||||
|
players = self.murmur.ctl.getPlayers( self.murmur.srvid ); |
||||
|
|
||||
|
self.assert_( len(players) > 0 ); |
||||
|
|
||||
|
self.assertEquals( type(players), dict ); |
||||
|
|
||||
|
for plidx in players: |
||||
|
player = players[plidx]; |
||||
|
|
||||
|
if self.murmur.ctl.method == "ICE" and self.murmur.version[:2] == ( 1, 2 ): |
||||
|
import Murmur |
||||
|
self.assertEquals( type( player ), Murmur.User ); |
||||
|
else: |
||||
|
self.assertEquals( type( player ), ObjectInfo ); |
||||
|
|
||||
|
self.assert_( hasattr( player, "session" ) ); |
||||
|
self.assert_( hasattr( player, "mute" ) ); |
||||
|
self.assert_( hasattr( player, "deaf" ) ); |
||||
|
self.assert_( hasattr( player, "selfMute" ) ); |
||||
|
self.assert_( hasattr( player, "selfDeaf" ) ); |
||||
|
self.assert_( hasattr( player, "channel" ) ); |
||||
|
self.assert_( hasattr( player, "userid" ) ); |
||||
|
self.assert_( hasattr( player, "name" ) ); |
||||
|
self.assert_( hasattr( player, "onlinesecs" ) ); |
||||
|
self.assert_( hasattr( player, "bytespersec" ) ); |
||||
|
|
||||
|
|
||||
|
def testCtlGetRegisteredPlayers( self ): |
||||
|
""" Test getRegistredPlayers() and getRegistration() """ |
||||
|
|
||||
|
players = self.murmur.ctl.getRegisteredPlayers( self.murmur.srvid ); |
||||
|
|
||||
|
self.assert_( len(players) > 0 ); |
||||
|
|
||||
|
self.assertEquals( type(players), dict ); |
||||
|
|
||||
|
for plidx in players: |
||||
|
player = players[plidx]; |
||||
|
|
||||
|
self.assertEquals( type( player ), ObjectInfo ); |
||||
|
|
||||
|
self.assert_( hasattr( player, "userid" ) ); |
||||
|
self.assert_( hasattr( player, "name" ) ); |
||||
|
self.assert_( hasattr( player, "email" ) ); |
||||
|
self.assert_( hasattr( player, "pw" ) ); |
||||
|
|
||||
|
# compare with getRegistration result |
||||
|
reg = self.murmur.ctl.getRegistration( self.murmur.srvid, player.userid ); |
||||
|
|
||||
|
self.assertEquals( type( reg ), ObjectInfo ); |
||||
|
|
||||
|
self.assert_( hasattr( reg, "userid" ) ); |
||||
|
self.assert_( hasattr( reg, "name" ) ); |
||||
|
self.assert_( hasattr( reg, "email" ) ); |
||||
|
self.assert_( hasattr( reg, "pw" ) ); |
||||
|
|
||||
|
self.assertEquals( player.userid, reg.userid ); |
||||
|
self.assertEquals( player.name, reg.name ); |
||||
|
self.assertEquals( player.email, reg.email ); |
||||
|
self.assertEquals( player.pw, reg.pw ); |
||||
|
|
||||
|
|
||||
|
def testCtlGetAcl( self ): |
||||
|
""" Test getACL() for the root channel """ |
||||
|
|
||||
|
acls, groups, inherit = self.murmur.ctl.getACL( self.murmur.srvid, 0 ); |
||||
|
|
||||
|
for rule in acls: |
||||
|
if self.murmur.ctl.method == "ICE" and self.murmur.version[:2] == ( 1, 2 ): |
||||
|
import Murmur |
||||
|
self.assertEquals( type( rule ), Murmur.ACL ); |
||||
|
else: |
||||
|
self.assertEquals( type( rule ), ObjectInfo ); |
||||
|
|
||||
|
self.assert_( hasattr( rule, "applyHere" ) ); |
||||
|
self.assert_( hasattr( rule, "applySubs" ) ); |
||||
|
self.assert_( hasattr( rule, "inherited" ) ); |
||||
|
self.assert_( hasattr( rule, "userid" ) ); |
||||
|
self.assert_( hasattr( rule, "group" ) ); |
||||
|
self.assert_( hasattr( rule, "allow" ) ); |
||||
|
self.assert_( hasattr( rule, "deny" ) ); |
||||
|
|
||||
|
for grp in groups: |
||||
|
if self.murmur.ctl.method == "ICE" and self.murmur.version[:2] == ( 1, 2 ): |
||||
|
import Murmur |
||||
|
self.assertEquals( type( grp ), Murmur.Group ); |
||||
|
else: |
||||
|
self.assertEquals( type( grp ), ObjectInfo ); |
||||
|
|
||||
|
self.assert_( hasattr( grp, "name" ) ); |
||||
|
self.assert_( hasattr( grp, "inherited" ) ); |
||||
|
self.assert_( hasattr( grp, "inherit" ) ); |
||||
|
self.assert_( hasattr( grp, "inheritable" ) ); |
||||
|
self.assert_( hasattr( grp, "add" ) ); |
||||
|
self.assert_( hasattr( grp, "remove" ) ); |
||||
|
self.assert_( hasattr( grp, "members" ) ); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue