def setUp(self):
     """
     1. Make sure "sudo keystone-all -d" in 192.168.122.194
     2. Make sure token, endpoint as configured
     3. Make sure role "%s" exist
     """ % self.TEST_MEMBER_ROLE
        
     self.requestClient = RequestClient(username=self.TEST_USERNAME, 
                                        password=self.TEST_PASSWORD, 
                                        email=self.TEST_EMAIL, 
                                        phoneNum=self.TEST_PHONE_NUMBER,
                                        realName = self.TEST_REAL_NAME,
                                        corpName = self.TEST_CORP_NAME,
                                        applyReason=self.TEST_APPLY_REASON,
                                        quota=self.TEST_QUOTA,
                                        token=self.TEST_TOKEN,
                                        adminTenant=self.TEST_ADMIN_TENANT, 
                                        adminUser=self.TEST_ADMIN_USER, 
                                        adminPasswd=self.TEST_ADMIN_PASSWD,)
     self.requestClient.deleteAccount()
class Test(unittest.TestCase):

    TEST_TOKEN = "ADMIN_TOKEN"
    TEST_ENPOINT = ENDPOINT_URL
    
    TEST_USERNAME = "******"
    TEST_PASSWORD = "******"
    TEST_EMAIL = "test_email"
    TEST_PHONE_NUMBER = "test_phone_number"
    TEST_REAL_NAME = "test_real_name"
    TEST_CORP_NAME = "test_corp_name"
    TEST_APPLY_REASON = "test_apply_reason"

    TEST_MEMBER_ROLE = MEMBER_ROLE
    TEST_ADMIN_TOKEN = "ADMIN_TOKEN"
    TEST_ADMIN_TENANT = "admin"
    TEST_ADMIN_USER = "******"
    TEST_ADMIN_PASSWD = "231"
    TEST_QUOTA = {"cores":4,
                  "floating_ips":1,
                  "instances":4,
                  'ram':4096,
                  'gigabytes':10,
                  'volumes':2,
                  "metadata_items": 128, 
                  "security_group_rules": 20, 
                  "security_groups": 10, 
                  "injected_file_content_bytes": 10240, 
                  "injected_files": 5,
                  }

    def setUp(self):
        """
        1. Make sure "sudo keystone-all -d" in 192.168.122.194
        2. Make sure token, endpoint as configured
        3. Make sure role "%s" exist
        """ % self.TEST_MEMBER_ROLE
           
        self.requestClient = RequestClient(username=self.TEST_USERNAME, 
                                           password=self.TEST_PASSWORD, 
                                           email=self.TEST_EMAIL, 
                                           phoneNum=self.TEST_PHONE_NUMBER,
                                           realName = self.TEST_REAL_NAME,
                                           corpName = self.TEST_CORP_NAME,
                                           applyReason=self.TEST_APPLY_REASON,
                                           quota=self.TEST_QUOTA,
                                           token=self.TEST_TOKEN,
                                           adminTenant=self.TEST_ADMIN_TENANT, 
                                           adminUser=self.TEST_ADMIN_USER, 
                                           adminPasswd=self.TEST_ADMIN_PASSWD,)
        self.requestClient.deleteAccount()

    def tearDown(self):
        self.requestClient.deleteAccount()

    def testMemberRoleId(self):
        memberRoleNameList = [str(item.name) for item in self.requestClient.roleList 
                              if str(item.id) == self.requestClient.memberRoleId]  
        self.assertEqual(len(memberRoleNameList), 1)
        self.assertEqual(memberRoleNameList[0], self.TEST_MEMBER_ROLE)

    def testExistUser(self):
        try:
            self.requestClient2 = RequestClient(username=self.TEST_USERNAME, 
                                                password=self.TEST_PASSWORD, 
                                                email=self.TEST_EMAIL, 
                                                phoneNum=self.TEST_PHONE_NUMBER,
                                                realName = self.TEST_REAL_NAME,
                                                corpName = self.TEST_CORP_NAME,
                                                applyReason=self.TEST_APPLY_REASON,
                                                quota=self.TEST_QUOTA,
                                                token=self.TEST_TOKEN,
                                                adminTenant=self.TEST_ADMIN_TENANT, 
                                                adminUser=self.TEST_ADMIN_USER, 
                                                adminPasswd=self.TEST_ADMIN_PASSWD)
        except RequestException as e:
            self.assertTrue(str(e) == ERR_MSG["accountExist"])
                
    def testCreateTenant(self):
        self.requestClient._createTenant()
        self.assertTrue(self.requestClient._isTenantNameExist())

    def testDeleteTenant(self):
        self.requestClient._createTenant()
        self.requestClient._deleteTenant()
        self.assertFalse(self.requestClient._isTenantNameExist())
        
    def testCreateUser(self):
        self.requestClient._createUser()
        self.assertTrue(self.requestClient._isUserNameExist())

    def testDeleteUser(self):
        self.requestClient._createUser()
        self.requestClient._deleteUser()
        self.assertFalse(self.requestClient._isUserNameExist())
        
    def testAddRole(self):
        self.requestClient._createTenant()
        self.requestClient._createUser()
        self.requestClient._addRole()
        self.assertTrue(self.requestClient._isBound2Role())
        
    def testDeleteAccount(self):
        self.requestClient.deleteAccount()
        self.assertFalse(self.requestClient._isAccountExist())
        
    def testAddAccount(self):
        self.requestClient.createAccount()
        self.assertTrue(self.requestClient._isAccountExist())
        self.assertTrue(self.requestClient._isTenantNameExist())
        self.assertTrue(self.requestClient._isUserNameExist())
        self.assertTrue(self.requestClient._isBound2Role())
        
    def testUpdateQuota(self):
        self.requestClient.createAccount()
        self.requestClient._updateQuota()
        quotaSet = self.requestClient._getQuota()
        self.assertTrue(quotaSet["nova"].cores == self.requestClient.quota["cores"])
        self.assertTrue(quotaSet["cinder"].gigabytes == self.requestClient.quota["gigabytes"])