79 lines
1.9 KiB
PHP
79 lines
1.9 KiB
PHP
<?php
|
|
|
|
use Illuminate\Http\UploadedFile;
|
|
|
|
test('only authenticated user can update avatar', function () {
|
|
$this->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
|
|
]);
|
|
});
|