witten
/
luminotes
Archived
1
0
Fork 0
This repository has been archived on 2023-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
luminotes/controller/test/Test_groups.py

168 lines
5.6 KiB
Python

from Test_controller import Test_controller
import Stub_urllib2
from controller.Groups import Groups
from model.Group import Group
from model.User import User
class Test_groups( Test_controller ):
def setUp( self ):
Test_controller.setUp( self )
Groups.urllib2 = Stub_urllib2
self.group_name = u"my group"
self.group_name2 = u"other group"
self.username = u"mulder"
self.password = u"trustno1"
self.email_address = u"out-there@example.com"
self.username2 = u"scully"
self.password2 = u"trustsome1"
self.email_address2 = u"out-there@example.com"
self.username3 = u"skinner"
self.password3 = u"trustne1"
self.email_address3 = u"somewhere@gov.gov"
self.group = Group.create( self.database.next_id( Group ), self.group_name )
self.database.save( self.group, commit = False )
self.group2 = Group.create( self.database.next_id( Group ), self.group_name )
self.database.save( self.group2, commit = False )
self.user = User.create( self.database.next_id( User ), self.username, self.password, self.email_address )
self.database.save( self.user, commit = False )
self.database.execute( self.user.sql_save_group( self.group.object_id, admin = False ) )
self.user2 = User.create( self.database.next_id( User ), self.username2, self.password2, self.email_address2 )
self.database.save( self.user2, commit = False )
self.database.execute( self.user2.sql_save_group( self.group.object_id, admin = True ) )
self.user3 = User.create( self.database.next_id( User ), self.username3, self.password3, self.email_address3 )
self.database.save( self.user3, commit = False )
self.database.execute( self.user3.sql_save_group( self.group.object_id, admin = False ) )
self.database.commit()
def test_load_users( self ):
self.login2()
result = self.http_post( "/groups/load_users", dict(
group_id = self.group.object_id,
), session_id = self.session_id )
assert len( result[ u"admin_users" ] ) == 1
assert result[ u"admin_users" ][ 0 ].object_id == self.user2.object_id
assert result[ u"admin_users" ][ 0 ].username == self.user2.username
assert len( result[ u"other_users" ] ) == 2
assert result[ u"other_users" ][ 0 ].object_id == self.user.object_id
assert result[ u"other_users" ][ 0 ].username == self.user.username
assert result[ u"other_users" ][ 1 ].object_id == self.user3.object_id
assert result[ u"other_users" ][ 1 ].username == self.user3.username
assert result[ u"group" ].object_id == self.group.object_id
assert result[ u"group" ].name == self.group.name
assert result[ u"group" ].admin == self.group.admin
def test_load_users_without_access( self ):
self.login2()
result = self.http_post( "/groups/load_users", dict(
group_id = self.group2.object_id,
), session_id = self.session_id )
assert u"access" in result[ u"error" ]
def test_load_users_without_admin_access( self ):
self.login()
result = self.http_post( "/groups/load_users", dict(
group_id = self.group.object_id,
), session_id = self.session_id )
assert u"access" in result[ u"error" ]
def test_load_users_with_unknown_group( self ):
self.login()
result = self.http_post( "/groups/load_users", dict(
group_id = u"unknowngroupid",
), session_id = self.session_id )
assert u"access" in result[ u"error" ]
def test_update_settings( self ):
self.login2()
new_name = u"new group name"
result = self.http_post( "/groups/update_settings", dict(
group_id = self.group.object_id,
group_name = new_name,
group_settings_button = u"save settings",
), session_id = self.session_id )
assert u"saved" in result[ u"message" ]
group = self.database.load( Group, self.group.object_id )
assert group.name == new_name
def test_update_settings_without_access( self ):
self.login2()
new_name = u"new group name"
result = self.http_post( "/groups/update_settings", dict(
group_id = self.group2.object_id,
group_name = new_name,
group_settings_button = u"save settings",
), session_id = self.session_id )
assert u"access" in result[ u"error" ]
group = self.database.load( Group, self.group.object_id )
assert group.name == self.group.name
def test_update_settings_without_admin_access( self ):
self.login()
new_name = u"new group name"
result = self.http_post( "/groups/update_settings", dict(
group_id = self.group.object_id,
group_name = new_name,
group_settings_button = u"save settings",
), session_id = self.session_id )
assert u"access" in result[ u"error" ]
group = self.database.load( Group, self.group.object_id )
assert group.name == self.group.name
def test_update_settings_with_unknown_group( self ):
self.login2()
new_name = u"new group name"
result = self.http_post( "/groups/update_settings", dict(
group_id = u"unknowngroupid",
group_name = new_name,
group_settings_button = u"save settings",
), session_id = self.session_id )
assert u"access" in result[ u"error" ]
group = self.database.load( Group, self.group.object_id )
assert group.name == self.group.name
def login( self ):
result = self.http_post( "/users/login", dict(
username = self.username,
password = self.password,
login_button = u"login",
) )
self.session_id = result[ u"session_id" ]
def login2( self ):
result = self.http_post( "/users/login", dict(
username = self.username2,
password = self.password2,
login_button = u"login",
) )
self.session_id = result[ u"session_id" ]