test_print(desc, res.status_code < 300)

desc =  '#### get all reservations on resources, make sure there are still 12 rows after update to manage ####'
res = r.get_reservations_by_resources([resource_id1, resource_id2, resource_id3, resource_id4])
test_print(desc, len(r.json.loads(res.content)['results']) == 12)

desc =  '#### update group 1 to view only on resource1 ####'
res = r.update_group_permission_to_resource(resource_id1, group_id1, 'view')
test_print(desc, res.status_code < 300)

desc =  '#### get all reservations on resources, make sure there are only 9 rows after update to view - rahuls reservations on res1 should be gone, ashwins shouldnt ####'
res = r.get_reservations_by_resources([resource_id1, resource_id2, resource_id3, resource_id4])
test_print(desc, len(r.json.loads(res.content)['results']) == 9)

desc =  '#### remove permission for group2 on resource1 ####'
res = r.remove_group_permission_to_resource(resource_id1, [group_id2])
test_print(desc, res.status_code < 300)

desc =  '#### get all reservations on resources, make sure there are only 6 rows remove permission - ashwins reservations on res1 should now be gone too ####'
res = r.get_reservations_by_resources([resource_id1, resource_id2, resource_id3, resource_id4])
test_print(desc, len(r.json.loads(res.content)['results']) == 6)

desc =  '#### remove rahul and ashwin from group1 ####'
res = r.remove_users_from_group([rahul_user_id, ashwin_user_id], group_id1)
test_print(desc, res.status_code < 300)

desc =  '#### get all reservations on resources, make sure there are only 3 rows after removal of rahul - rahuls reservations should be gone ####'
res = r.get_reservations_by_resources([resource_id1, resource_id2, resource_id3, resource_id4])
test_print(desc, len(r.json.loads(res.content)['results']) == 3)

desc =  '#### delete group2 ####'
desc = '#### Give rahul view access to root ####'
res = r.add_group_permission_to_resource(root_resource_id, [rahul_group_id], ['view'])
test_print(desc, res.status_code < 300)

desc = '#### try adding reserve permission to a folder ####'
res = r.add_group_permission_to_resource(folder_id1, [group_id1], ['reserve'])
test_print(desc, res.status_code > 300)

desc = '#### try adding manage permission to a folder ####'
res = r.add_group_permission_to_resource(folder_id2, [group_id1], ['manage'])
test_print(desc, res.status_code > 300)

desc = '#### try adding permission to resource before its parent folder can be seen ####'
res = r.add_group_permission_to_resource(resource_id1, [group_id1], ['view'])
test_print(desc, res.status_code == 403)
res = r.remove_group_permission_to_resource(resource_id1, [group_id1])

desc = '#### successfully add view permissions to folders ####'
res = r.add_group_permission_to_resource(folder_id2, [group_id1], ['view'])
test_print(desc, res.status_code < 300)
res = r.add_group_permission_to_resource(folder_id1, [group_id1], ['view'])
test_print(desc, res.status_code < 300)

desc= '#### Try adding permission for two groups when only one can view ancestor folders ###'
res = r.add_group_permission_to_resource(resource_id1, [group_id1, rahul_group_id], ['view', 'view'])
test_print(desc, res.status_code == 403)

desc= '#### Try adding permission for two groups when both can view ancestor folders ###'
res = r.add_group_permission_to_resource(folder_id1, [rahul_group_id], ['view'])
test_print(desc, res.status_code < 300)
res = r.add_group_permission_to_resource(resource_id1, [rahul_group_id, group_id1], ['view', 'view'])