class MongolidUserProviderTest extends TestCase { public function testShouldRetrieveById() { // Set $provider = $this->getProvider(); $params = ['_id' => new ObjectID()]; // Actions $result = $provider->retrieveByID($params); // Assertions $this->assertInstanceOf(MongolidModel::class, $result); } public function testShouldRetrieveByCredentials() { // Set $provider = $this->getProvider(); $params = ['_id' => new ObjectID(), 'password' => '1234']; // Actions $result = $provider->retrieveByCredentials($params); // Assertions $this->assertInstanceOf(MongolidModel::class, $result); } public function testShouldValidateCredentials() { // Set $provider = $this->getProvider(); $user = m::mock(Authenticatable::class); $params = ['user' => 'user', 'password' => '1234']; $hasher = $this->app->make(Hasher::class); // Expectations $user->shouldReceive('getAuthPassword')->once()->with()->andReturn($hasher->make('1234')); // Actions $result = $provider->validateCredentials($user, $params); // Assertions $this->assertTrue($result); } public function testShouldRetrieveByToken() { // Set $provider = $this->getProvider(); // Actions $result = $provider->retrieveByToken('1234', '4321'); // Assertions $this->assertInstanceOf(MongolidModel::class, $result); } public function testShouldNotRetrieveByToken() { // Set $model = new class extends MongolidModel { public static function first($query = [], array $projection = [], bool $useCache = false) { } }; $hasher = $this->app->make(Hasher::class); $provider = new MongolidUserProvider($hasher, get_class($model)); // Actions $result = $provider->retrieveByToken('1234', '4321'); // Assertions $this->assertNull($result); } public function testShouldUpdateRememberToken() { // Set $provider = $this->getProvider(); $user = m::mock(Authenticatable::class); // Expectations $user->shouldReceive('save')->once()->with()->andReturn(true); // Actions $provider->updateRememberToken($user, '1234'); // Assertions $this->assertEquals('1234', $user->remember_token); } /** * @return MongolidUserProvider */ protected function getProvider() { $model = new class extends MongolidModel { public static function first($query = [], array $projection = [], bool $useCache = false) { return m::mock(MongolidModel::class); } }; $hasher = $this->app->make(Hasher::class); $provider = new MongolidUserProvider($hasher, get_class($model)); return $provider; } }