ConfigRetrieverTest.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace SocialiteProviders\Manager\Test;
  3. use PHPUnit\Framework\TestCase;
  4. use SocialiteProviders\Manager\Exception\MissingConfigException;
  5. use SocialiteProviders\Manager\Helpers\ConfigRetriever;
  6. class ConfigRetrieverTest extends TestCase
  7. {
  8. use ManagerTestTrait;
  9. /**
  10. * @test
  11. */
  12. public function it_throws_if_there_is_a_problem_with_the_services_config(): void
  13. {
  14. $this->expectExceptionObject(new MissingConfigException('There is no services entry for test'));
  15. $providerName = 'test';
  16. self::$functions
  17. ->shouldReceive('config')
  18. ->with("services.{$providerName}")
  19. ->once()
  20. ->andReturn(null);
  21. $configRetriever = new ConfigRetriever();
  22. $configRetriever->fromServices($providerName)->get();
  23. }
  24. /**
  25. * @test
  26. */
  27. public function it_throws_if_there_are_missing_items_in_the_services_config(): void
  28. {
  29. $this->expectExceptionObject(new MissingConfigException('There is no services entry for test'));
  30. $providerName = 'test';
  31. self::$functions
  32. ->shouldReceive('config')
  33. ->with("services.{$providerName}")
  34. ->once()
  35. ->andReturn([]);
  36. $configRetriever = new ConfigRetriever();
  37. $configRetriever->fromServices($providerName)->get();
  38. }
  39. /**
  40. * @test
  41. */
  42. public function it_retrieves_a_config_from_the_services(): void
  43. {
  44. $providerName = 'test';
  45. $key = 'key';
  46. $secret = 'secret';
  47. $uri = 'uri';
  48. $additionalConfigItem = 'test';
  49. $config = [
  50. 'client_id' => $key,
  51. 'client_secret' => $secret,
  52. 'redirect' => $uri,
  53. 'additional' => $additionalConfigItem,
  54. ];
  55. self::$functions
  56. ->shouldReceive('config')
  57. ->with("services.{$providerName}")
  58. ->once()
  59. ->andReturn($config);
  60. $configRetriever = new ConfigRetriever();
  61. $result = $configRetriever->fromServices($providerName, ['additional'])->get();
  62. $this->assertSame($key, $result['client_id']);
  63. $this->assertSame($secret, $result['client_secret']);
  64. $this->assertSame($uri, $result['redirect']);
  65. $this->assertSame($additionalConfigItem, $result['additional']);
  66. }
  67. }
  68. namespace SocialiteProviders\Manager\Helpers;
  69. use SocialiteProviders\Manager\Test\ConfigRetrieverTest;
  70. function env($key)
  71. {
  72. return ConfigRetrieverTest::$functions->env($key);
  73. }
  74. function config($key)
  75. {
  76. return ConfigRetrieverTest::$functions->config($key);
  77. }
  78. function app()
  79. {
  80. return new applicationStub();
  81. }
  82. class applicationStub
  83. {
  84. public function runningInConsole(): bool
  85. {
  86. return false;
  87. }
  88. }