mirror of
https://github.com/projectsend/projectsend.git
synced 2026-09-16 16:45:07 +00:00
6e47d76ba6
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.
53 lines
1.4 KiB
PHP
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;
|
|
}
|
|
}
|