post('/api/me/avatar')->assertStatus(401); }); test('upload avatar image', function () { $this->login(); Storage::fake('public'); $file = UploadedFile::fake()->image('avatar.png', 500, 500); $response = $this->post('api/me/avatar', [ 'file' => $file, ]); $this->assertNotNull($response->json('data.avatar')); $uploadedFile = str_replace(url(''), '', $response->json('data.avatar')); $uploadedFile = ltrim($uploadedFile, '/storage/'); Storage::disk('public')->assertExists($uploadedFile); [$width, $height] = getimagesizefromstring( Storage::disk('public')->get($uploadedFile) ); $this->assertEquals(160, $width); $this->assertEquals(160, $height); }); test('upload invalid image', function () { $this->login(); Storage::fake('public'); $file = UploadedFile::fake()->create('avatar.txt', 500); $this->post('/api/me/avatar', ['file' => $file]) ->assertStatus(422) ->assertJsonFragment([ 'file' => [ trans('validation.image', ['attribute' => 'file']), ], ]); }); test('update avatar from external source', function () { $this->login(); $url = 'http://google.com'; $this->putJson('/api/me/avatar/external', ['url' => $url]) ->assertOk() ->assertJsonFragment(['avatar' => $url]); }); test('update avatar with invalid external source', function () { $this->login(); $this->putJson('/api/me/avatar/external', ['url' => 'foo']) ->assertStatus(422); }); test('delete avatar', function () { $user = $this->login(); $user->forceFill(['avatar' => 'http://google.com'])->save(); $this->deleteJson('api/me/avatar') ->assertOk() ->assertJsonFragment([ 'avatar' => url('assets/img/profile.png'), // default profile image ]); });