2 use CRM_OAuth_ExtensionUtil
as E
;
3 use Civi\Test\HeadlessInterface
;
4 use Civi\Test\HookInterface
;
5 use Civi\Test\TransactionalInterface
;
8 * Read list of OAuth providers
12 class api_v4_OAuthProviderTest
extends \PHPUnit\Framework\TestCase
implements HeadlessInterface
, HookInterface
, TransactionalInterface
{
14 public function setUpHeadless() {
15 // Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile().
16 // See: https://docs.civicrm.org/dev/en/latest/testing/phpunit/#civitest
17 return \Civi\Test
::headless()->install('oauth-client')->apply();
20 public function setUp() {
24 public function tearDown() {
29 * Create, read, and destroy token - with full access to secrets.
31 public function testGet() {
32 \CRM_Core_Config
::singleton()->userPermissionClass
->permissions
= ['access CiviCRM'];
34 $examples = Civi\Api4\OAuthProvider
::get()
35 ->addWhere('name', 'LIKE', 'test_example%')
36 ->addOrderBy('name', 'DESC')
38 $this->assertEquals(2, $examples->count());
40 $this->assertEquals('Civi\OAuth\CiviGenericProvider', $examples->last()['class']);
41 $this->assertEquals('My\Example2', $examples->first()['class']);
42 $this->assertEquals('https://example.com/one/auth', $examples->last()['options']['urlAuthorize']);
43 $this->assertEquals('https://example.com/two', $examples->first()['options']['urlAuthorize']);