# -*- encoding: UTF8 -*- # Test harness for UserPermissionsReport.py from __future__ import print_function import sys import unittest import os import re import P4 sys.path.append(os.path.join('..', '..', 'triggers', 'tests')) from p4testutils import TestCase, P4Server, localDirectory, create_file, append_to_file parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, parent_dir) from UserPermissionsReport import UserPermissionsReport os.environ["LOGS"] = "." LOGGER_NAME = "TestUserPermissionsReport" LOG_FILE = "log-TestUserPermissionsReport.log" class TestUserPermissionsReport(TestCase): def __init__(self, methodName='runTest'): super(TestUserPermissionsReport, self).__init__(LOGGER_NAME, LOG_FILE, methodName=methodName) def setUp(self): self.server = P4Server() p4 = self.server.p4 self.p4 = p4 p4.logger = self.logger # This works if no spaces in server root pathname! port = p4.port.replace('"', '') self.logger.debug("port: |%s|" % port) os.chdir(self.server.root) # Reconnect to pick up changes #p4.disconnect() #p4.connect() protect = p4.fetch_protect() p4.save_protect(protect) def tearDown(self): pass def testUserPermissionsReport(self): """simple test""" p4 = self.p4 #define a couple of users user1 = { 'User': 'firstuser', 'Email': 'firstuser@perforce.com', 'FullName': 'First Bobby User' } user2 = { 'User': 'seconduser', 'Email': 'seconduser@perforce.com', 'FullName': 'Second Joe Bob User' } #define the protection table lines protectionView = [ "write user * * //... ## standard", "super user testuser * //... ## super user line", "list group usergroup * //depot/..." ] #add users to instance p4.save_user(user1, "-f") p4.save_user(user2, "-f") #create group group = p4.fetch_group( "usergroup" ) #add users to group group[ "Users" ] = "firstuser\n" p4.save_group( group ) #create group group = p4.fetch_group( "otherusergroup" ) #add users to group group[ "Users" ] = "firstuser\n" p4.save_group( group ) ##populating the protection table protect = p4.fetch_protect() protect._protections = protectionView p4.save_protect(protect) #print (protect) #print (group) users = p4.run_users() self.assertEqual(3, len(users)) UPR = UserPermissionsReport() contents = UPR.generateReport() expected = """userID,first,last,email,usertype,group firstuser,First,User,firstuser@perforce.com,user,otherusergroup firstuser,First,User,firstuser@perforce.com,user,usergroup seconduser,Second,User,seconduser@perforce.com,user, testuser,testuser,testuser,testuser@test_ws,admin,""" self.assertEqual(expected,contents) # inside = localDirectory(self.server.client_root, "inside") # outside = localDirectory(self.server.client_root, "outside") # file1 = os.path.join(inside, "file1") # file2 = os.path.join(inside, "file2") # create_file(file1, "Some content") # create_file(file2, "Some content2") def testAddGroup(self): p4 = self.p4 def testAddThreeUsers(self): p4 = self.p4 if __name__ == '__main__': unittest.main()