'value_1_' . self::$UNIQUE_TEST_ID, 'key_2_' . self::$UNIQUE_TEST_ID => 'value_2_' . self::$UNIQUE_TEST_ID, ]; self::$SUB_ACCOUNT_NEW_CUSTOM_ATTRIBUTES = [ 'key_3_' . self::$UNIQUE_TEST_ID => 'value_3_' . self::$UNIQUE_TEST_ID ]; $subAccount = self::$accountApi->createSubAccount(self::$SUB_ACCOUNT_GET_NAME); self::$SUB_ACCOUNTS[] = self::$SUB_ACCOUNT_GET_ID = $subAccount['id']; self::assertValidSubAccountUser($subAccount, ['name' => self::$SUB_ACCOUNT_GET_NAME]); $subAccount = self::$accountApi->createSubAccount(self::$SUB_ACCOUNT_DELETE_NAME); self::$SUB_ACCOUNTS[] = self::$SUB_ACCOUNT_DELETE_ID = $subAccount['id']; self::assertValidSubAccountUser($subAccount, ['name' => self::$SUB_ACCOUNT_DELETE_NAME]); $subAccount = self::$accountApi->createSubAccount( self::$SUB_ACCOUNT_UPDATE_NAME, null, self::$SUB_ACCOUNT_CUSTOM_ATTRIBUTES ); self::$SUB_ACCOUNTS[] = self::$SUB_ACCOUNT_UPDATE_ID = $subAccount['id']; self::assertValidSubAccountUser($subAccount, ['name' => self::$SUB_ACCOUNT_UPDATE_NAME]); } public static function tearDownAfterClass() { foreach (self::$SUB_ACCOUNTS as $subAccountId) { self::cleanupSubAccount($subAccountId); } parent::tearDownAfterClass(); } /** * Tests getting all user sub accounts. */ public function testGetSubAccountsWithoutParameters() { $result = self::$accountApi->subAccounts(); self::assertNotEmpty($result['sub_accounts'][0]); self::assertValidSubAccountUser($result['sub_accounts'][0]); } /** * Tests getting user sub accounts by ids. */ public function testGetSubAccountsByIDs() { $result = self::$accountApi->subAccounts( null, [ self::$SUB_ACCOUNTS[0], self::$SUB_ACCOUNTS[1] ] ); self::assertCount(2, $result['sub_accounts']); self::assertValidSubAccountUser($result['sub_accounts'][0]); } /** * Tests getting user sub accounts by prefix. */ public function testGetSubAccountsByPrefix() { $result = self::$accountApi->subAccounts(null, null, self::$PREFIX); self::assertCount(1, $result['sub_accounts']); self::assertValidSubAccountUser( $result['sub_accounts'][0], [ 'name' => self::$SUB_ACCOUNT_GET_NAME ] ); } /** * Tests getting a single user sub account by id. */ public function testGetSubAccountById() { $subAccount = self::$accountApi->subAccount(self::$SUB_ACCOUNT_GET_ID); self::assertValidSubAccountUser( $subAccount, [ 'id' => self::$SUB_ACCOUNT_GET_ID, 'name' => self::$SUB_ACCOUNT_GET_NAME, ] ); } /** * Tests creating a user sub account. */ public function testCreateSubAccount() { $subAccount = self::$accountApi->createSubAccount( self::$SUB_ACCOUNT_CREATE_NAME, self::$SUB_ACCOUNT_CREATE_CLOUD_NAME, self::$SUB_ACCOUNT_CUSTOM_ATTRIBUTES ); self::$SUB_ACCOUNTS[] = $subAccount['id']; self::assertValidSubAccountUser( $subAccount, [ 'name' => self::$SUB_ACCOUNT_CREATE_NAME, 'cloud_name' => self::$SUB_ACCOUNT_CREATE_CLOUD_NAME, 'custom_attributes' => self::$SUB_ACCOUNT_CUSTOM_ATTRIBUTES, 'enabled' => true ] ); } /** * Tests creating a new sub account based on an existing account. */ public function testCreateSubAccountBasedOnExistingAccount() { $subAccount = self::$accountApi->createSubAccount( self::$SUB_ACCOUNT_CREATE_2_NAME, null, null, null, self::$SUB_ACCOUNT_UPDATE_ID ); self::$SUB_ACCOUNTS[] = $subAccount['id']; self::assertNotEquals(self::$SUB_ACCOUNT_UPDATE_ID, $subAccount['id']); self::assertValidSubAccountUser( $subAccount, [ 'name' => self::$SUB_ACCOUNT_CREATE_2_NAME, 'cloud_name' => str_replace('_', '-', self::$SUB_ACCOUNT_CREATE_2_NAME), ] ); } /** * Tests creating a new sub account based on an existing account with custom attributes. */ public function testCreateSubAccountBasedOnExistingAccountWithCustomAttributes() { self::markTestSkipped('The custom attributes is not copied from a base sub account'); $subAccount = self::$accountApi->createSubAccount( self::$SUB_ACCOUNT_CREATE_3_NAME, null, null, null, self::$SUB_ACCOUNT_UPDATE_ID ); self::$SUB_ACCOUNTS[] = $subAccount['id']; self::assertValidSubAccountUser( $subAccount, [ 'custom_attributes' => self::$SUB_ACCOUNT_CUSTOM_ATTRIBUTES ] ); } /** * Tests deleting a single user sub account by id. * * @throws ApiError */ public function testDeleteSubAccount() { $result = self::$accountApi->deleteSubAccount(self::$SUB_ACCOUNT_DELETE_ID); self::assertSubAccountDeleted($result); $this->expectException(NotFound::class); self::$accountApi->subAccount(self::$SUB_ACCOUNT_DELETE_ID); } /** * Tests updating a single user sub account. * * @throws ApiError */ public function testUpdateSubAccount() { $subAccount = self::$accountApi->updateSubAccount( self::$SUB_ACCOUNT_UPDATE_ID, self::$SUB_ACCOUNT_UPDATE_NEW_NAME, self::$SUB_ACCOUNT_UPDATE_NEW_CLOUD_NAME, self::$SUB_ACCOUNT_NEW_CUSTOM_ATTRIBUTES, false ); self::assertValidSubAccountUser( $subAccount, [ 'name' => self::$SUB_ACCOUNT_UPDATE_NEW_NAME, 'cloud_name' => self::$SUB_ACCOUNT_UPDATE_NEW_CLOUD_NAME, 'custom_attributes' => self::$SUB_ACCOUNT_NEW_CUSTOM_ATTRIBUTES, 'enabled' => false ] ); } }