TestCase.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. namespace Adldap\Laravel\Tests;
  3. use Adldap\Connections\Ldap;
  4. use Adldap\Laravel\AdldapAuthServiceProvider;
  5. use Adldap\Laravel\AdldapServiceProvider;
  6. use Adldap\Laravel\Auth\DatabaseUserProvider;
  7. use Adldap\Laravel\Facades\Adldap;
  8. use Adldap\Laravel\Tests\Models\TestUser;
  9. use Adldap\Schemas\ActiveDirectory;
  10. use Illuminate\Support\Facades\Hash;
  11. use Orchestra\Testbench\TestCase as BaseTestCase;
  12. class TestCase extends BaseTestCase
  13. {
  14. public function createApplication()
  15. {
  16. $app = parent::createApplication();
  17. Hash::setRounds(4);
  18. return $app;
  19. }
  20. protected function getPackageProviders($app)
  21. {
  22. return [
  23. AdldapServiceProvider::class,
  24. AdldapAuthServiceProvider::class,
  25. ];
  26. }
  27. /**
  28. * Define the environment setup.
  29. *
  30. * @param \Illuminate\Foundation\Application $app
  31. */
  32. protected function getEnvironmentSetup($app)
  33. {
  34. $config = $app['config'];
  35. // Laravel database setup.
  36. $config->set('database.default', 'testbench');
  37. $config->set('database.connections.testbench', [
  38. 'driver' => 'sqlite',
  39. 'database' => ':memory:',
  40. 'prefix' => '',
  41. ]);
  42. // Adldap connection set$configup.
  43. $config->set('ldap.connections.default.auto_connect', false);
  44. $config->set('ldap.connections.default.connection', Ldap::class);
  45. $config->set('ldap.connections.default.settings', [
  46. 'username' => 'admin@email.com',
  47. 'password' => 'password',
  48. 'schema' => ActiveDirectory::class,
  49. ]);
  50. // Adldap auth setup.
  51. $config->set('ldap_auth.provider', DatabaseUserProvider::class);
  52. $config->set('ldap_auth.sync_attributes', [
  53. 'email' => 'userprincipalname',
  54. 'name' => 'cn',
  55. ]);
  56. // Laravel auth setup.
  57. $config->set('auth.guards.web.provider', 'ldap');
  58. $config->set('auth.providers', [
  59. 'ldap' => [
  60. 'driver' => 'ldap',
  61. 'model' => TestUser::class,
  62. ],
  63. 'users' => [
  64. 'driver' => 'eloquent',
  65. 'model' => TestUser::class,
  66. ],
  67. ]);
  68. }
  69. /**
  70. * Returns a new LDAP user model.
  71. *
  72. * @param array $attributes
  73. *
  74. * @return \Adldap\Models\User
  75. */
  76. protected function makeLdapUser(array $attributes = [])
  77. {
  78. return Adldap::getDefaultProvider()->make()->user($attributes ?: [
  79. 'objectguid' => ['cc07cacc-5d9d-fa40-a9fb-3a4d50a172b0'],
  80. 'samaccountname' => ['jdoe'],
  81. 'userprincipalname' => ['jdoe@email.com'],
  82. 'mail' => ['jdoe@email.com'],
  83. 'cn' => ['John Doe'],
  84. ]);
  85. }
  86. /**
  87. * Returns a mock LDAP connection object.
  88. *
  89. * @param array $methods
  90. *
  91. * @return \PHPUnit\Framework\MockObject\MockObject
  92. */
  93. protected function getMockConnection($methods = [])
  94. {
  95. $defaults = ['isBound', 'search', 'getEntries', 'bind', 'close'];
  96. $connection = $this->getMockBuilder(Ldap::class)
  97. ->setMethods(array_merge($defaults, $methods))
  98. ->getMock();
  99. Adldap::getDefaultProvider()->setConnection($connection);
  100. return $connection;
  101. }
  102. }