X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/07b889547d28e68e5fc8f923c166bd607da17ad7..refs/pull/3138/head:/tests/Uploads/AvatarTest.php diff --git a/tests/Uploads/AvatarTest.php b/tests/Uploads/AvatarTest.php index ecf7037a9..650f5b4ea 100644 --- a/tests/Uploads/AvatarTest.php +++ b/tests/Uploads/AvatarTest.php @@ -1,6 +1,9 @@ -asAdmin()->post('/settings/users/create', [ - 'name' => $user->name, - 'email' => $user->email, - 'password' => 'testing', - 'password-confirm' => 'testing', + $this->asAdmin()->post('/settings/users/create', [ + 'name' => $user->name, + 'email' => $user->email, + 'password' => 'testing101', + 'password-confirm' => 'testing101', ]); - return User::where('email', '=', $user->email)->first(); + + return User::query()->where('email', '=', $user->email)->first(); } protected function assertImageFetchFrom(string $url) { - $http = \Mockery::mock(HttpFetcher::class); - $this->app->instance(HttpFetcher::class, $http); + $http = $this->mock(HttpFetcher::class); $http->shouldReceive('fetch') ->once()->with($url) @@ -40,26 +42,26 @@ class AvatarTest extends TestCase config()->set([ 'services.disable_services' => false, ]); - $user = factory(User::class)->make(); - $this->assertImageFetchFrom('https://www.gravatar.com/avatar/'.md5(strtolower($user->email)).'?s=500&d=identicon'); + $user = User::factory()->make(); + $this->assertImageFetchFrom('https://www.gravatar.com/avatar/' . md5(strtolower($user->email)) . '?s=500&d=identicon'); $user = $this->createUserRequest($user); $this->assertDatabaseHas('images', [ - 'type' => 'user', - 'created_by' => $user->id + 'type' => 'user', + 'created_by' => $user->id, ]); $this->deleteUserImage($user); } - public function test_custom_url_used_if_set() { config()->set([ - 'services.avatar_url' => 'https://example.com/${email}/${hash}/${size}', + 'services.disable_services' => false, + 'services.avatar_url' => 'https://example.com/${email}/${hash}/${size}', ]); - $user = factory(User::class)->make(); - $url = 'https://example.com/'. urlencode(strtolower($user->email)) .'/'. md5(strtolower($user->email)).'/500'; + $user = User::factory()->make(); + $url = 'https://example.com/' . urlencode(strtolower($user->email)) . '/' . md5(strtolower($user->email)) . '/500'; $this->assertImageFetchFrom($url); $user = $this->createUserRequest($user); @@ -72,13 +74,27 @@ class AvatarTest extends TestCase 'services.disable_services' => true, ]); - $user = factory(User::class)->make(); + $user = User::factory()->make(); - $http = \Mockery::mock(HttpFetcher::class); - $this->app->instance(HttpFetcher::class, $http); + $http = $this->mock(HttpFetcher::class); $http->shouldNotReceive('fetch'); $this->createUserRequest($user); } + public function test_no_failure_but_error_logged_on_failed_avatar_fetch() + { + config()->set([ + 'services.disable_services' => false, + ]); + + $http = $this->mock(HttpFetcher::class); + $http->shouldReceive('fetch')->andThrow(new HttpFetchException()); + + $logger = $this->withTestLogger(); + + $user = User::factory()->make(); + $this->createUserRequest($user); + $this->assertTrue($logger->hasError('Failed to save user avatar image')); + } }