Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@
- Added method `Bitrix24AccountRepositoryInterface::findByApplicationToken` in contracts for
support «[Delete Application](https://github.com/bitrix24/b24phpsdk/issues/62)» use case

### Changed

- Added nullable argument `bitrix24UserId` in method `Bitrix24AccountRepositoryInterface::findByMemberId` in contracts
for support use case «[RenewAuthToken](https://github.com/bitrix24/b24phpsdk/issues/63)»

### Fixed

- Fixed errors in `Bitrix24\SDK\Services\Workflows\Common\WorkflowDocumentId`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,15 @@ public function findOneAdminByMemberId(string $memberId): ?Bitrix24AccountInterf
/**
* Find bitrix24 accounts by member_id and filter by status and isAdmin flag
* @param non-empty-string $memberId
* @param positive-int $bitrix24UserId
* @return Bitrix24AccountInterface[]
*/
public function findByMemberId(string $memberId, ?Bitrix24AccountStatus $bitrix24AccountStatus = null, ?bool $isAdmin = null): array;
public function findByMemberId(
string $memberId,
?Bitrix24AccountStatus $bitrix24AccountStatus = null,
?int $bitrix24UserId = null,
?bool $isAdmin = null
): array;

/**
* Find bitrix24 accounts by applicationToken
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,7 @@ final public function testFindByMemberIdWithIsAdminHappyPath(
$acc = $bitrix24AccountRepository->getById($uuid);
$this->assertEquals($bitrix24Account, $acc);

$found = $bitrix24AccountRepository->findByMemberId($memberId, null, true);
$found = $bitrix24AccountRepository->findByMemberId($memberId, null, null, true);
$this->assertEquals($acc, $found[0]);
}

Expand Down Expand Up @@ -422,7 +422,39 @@ final public function testFindByMemberIdWithIsAdminNotFound(
$acc = $bitrix24AccountRepository->getById($uuid);
$this->assertEquals($bitrix24Account, $acc);

$found = $bitrix24AccountRepository->findByMemberId($memberId, null, true);
$found = $bitrix24AccountRepository->findByMemberId($memberId, null, null, true);
$this->assertEquals([], $found);
}

/**
* @throws Bitrix24AccountNotFoundException
*/
#[Test]
#[DataProvider('bitrix24AccountForInstallDataProvider')]
#[TestDox('test findByMemberId method with b24UserId - not found')]
final public function testFindByMemberIdWithB24UserIdNotFound(
Uuid $uuid,
int $bitrix24UserId,
bool $isBitrix24UserAdmin,
string $memberId,
string $domainUrl,
Bitrix24AccountStatus $bitrix24AccountStatus,
AuthToken $authToken,
CarbonImmutable $createdAt,
CarbonImmutable $updatedAt,
int $applicationVersion,
Scope $applicationScope
): void
{
$bitrix24Account = $this->createBitrix24AccountImplementation($uuid, $bitrix24UserId, $isBitrix24UserAdmin, $memberId, $domainUrl, $bitrix24AccountStatus, $authToken, $createdAt, $updatedAt, $applicationVersion, $applicationScope);
$bitrix24AccountRepository = $this->createBitrix24AccountRepositoryImplementation();

$bitrix24AccountRepository->save($bitrix24Account);

$acc = $bitrix24AccountRepository->getById($uuid);
$this->assertEquals($bitrix24Account, $acc);

$found = $bitrix24AccountRepository->findByMemberId($memberId, null, $bitrix24UserId + 1, $isBitrix24UserAdmin);
$this->assertEquals([], $found);
}

Expand All @@ -446,15 +478,15 @@ final public function testFindByMemberIdWithAllArgs(
Scope $applicationScope
): void
{
$bitrix24Account = $this->createBitrix24AccountImplementation($uuid, $bitrix24UserId, false, $memberId, $domainUrl, $bitrix24AccountStatus, $authToken, $createdAt, $updatedAt, $applicationVersion, $applicationScope);
$bitrix24Account = $this->createBitrix24AccountImplementation($uuid, $bitrix24UserId, $isBitrix24UserAdmin, $memberId, $domainUrl, $bitrix24AccountStatus, $authToken, $createdAt, $updatedAt, $applicationVersion, $applicationScope);
$bitrix24AccountRepository = $this->createBitrix24AccountRepositoryImplementation();

$bitrix24AccountRepository->save($bitrix24Account);

$acc = $bitrix24AccountRepository->getById($uuid);
$this->assertEquals($bitrix24Account, $acc);

$found = $bitrix24AccountRepository->findByMemberId($memberId, Bitrix24AccountStatus::new, false);
$found = $bitrix24AccountRepository->findByMemberId($memberId, Bitrix24AccountStatus::new, $bitrix24UserId, $isBitrix24UserAdmin);
$this->assertEquals($acc, $found[0]);
}

Expand Down Expand Up @@ -704,6 +736,7 @@ final public function testFindByApplicationToken(
$found[0]->getId()
);
}

#[Test]
#[TestDox('test FindByApplicationToken method with empty string')]
final public function testFindByApplicationTokenWithEmptyString(): void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,11 @@ public function findOneAdminByMemberId(string $memberId): ?Bitrix24AccountInterf
/**
* @throws InvalidArgumentException
*/
public function findByMemberId(string $memberId, ?Bitrix24AccountStatus $bitrix24AccountStatus = null, ?bool $isAdmin = null): array
public function findByMemberId(string $memberId,
?Bitrix24AccountStatus $bitrix24AccountStatus = null,
?int $bitrix24UserId = null,
?bool $isAdmin = null
): array
{
$this->logger->debug('b24AccountRepository.findByMemberId', [
'memberId' => $memberId,
Expand All @@ -110,9 +114,10 @@ public function findByMemberId(string $memberId, ?Bitrix24AccountStatus $bitrix2
}

$isStatusMatch = (!$bitrix24AccountStatus instanceof Bitrix24AccountStatus || $bitrix24AccountStatus === $item->getStatus());
$b24UserMatch = ($bitrix24UserId === null || $bitrix24UserId === $item->getBitrix24UserId());
$isAdminMatch = ($isAdmin === null || $isAdmin === $item->isBitrix24UserAdmin());

if ($isStatusMatch && $isAdminMatch) {
if ($isStatusMatch && $b24UserMatch && $isAdminMatch) {
$items[] = $item;
}

Expand Down
Loading