Files
ignacionelson 6e47d76ba6 ProjectSend 2.0.0
Client file sharing, rebuilt from the ground up: a private area per
client, resumable uploads, folders, groups and categories, sharing with
expiry dates and download limits, comments, file versions, an activity
log, a REST API, and sixteen languages.

This repository begins here. ProjectSend 2 was developed privately, and
that development history is not published — the previous generation
remains available, with its own history, at projectsend/legacy.

Free software under the GNU General Public License v2, or (at your
option) any later version.
2026-08-14 01:38:12 -03:00

53 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Support;
use App\Modules\Identity\Social\SocialGateway;
use App\Modules\Identity\Social\SocialIdentity;
use App\Modules\Identity\Social\SocialSettings;
use Symfony\Component\HttpFoundation\RedirectResponse;
/**
* An identity provider that lives in a variable.
*
* Swapped in with `$this->swap(SocialGateway::class, ...)`, this
* exercises everything above the wire — which addresses may reach which
* accounts, provisioning, approval, the two-factor hand-off — with no
* OAuth server anywhere. It also counts calls, so a test can assert the
* provider was *not* consulted, which is how "a disabled provider is
* never contacted" is proven rather than assumed.
*
* The same shape as FakeLdapDirectory, deliberately.
*/
class FakeSocialGateway implements SocialGateway
{
public int $redirects = 0;
public int $identityCalls = 0;
public function __construct(private ?SocialIdentity $identity = null) {}
public function willReturn(?SocialIdentity $identity): self
{
$this->identity = $identity;
return $this;
}
public function redirect(SocialSettings $settings): RedirectResponse
{
$this->redirects++;
return new RedirectResponse('https://provider.test/authorize');
}
public function identity(SocialSettings $settings): ?SocialIdentity
{
$this->identityCalls++;
return $this->identity;
}
}