added it_get_og_page_for_folder, it_get_og_page_for_image, it_get_og_page_for_protected_file test

This commit is contained in:
Peter Papp
2021-03-13 19:16:47 +01:00
parent b022cde9e0
commit deaac3717c
5 changed files with 123 additions and 56 deletions

View File

@@ -16,6 +16,7 @@ use App\Models\User;
use Artisan;
use Doctrine\DBAL\Driver\PDOException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\Mail;
use Schema;
@@ -70,59 +71,30 @@ class AppFunctionsController extends Controller
*/
public function og_site($token)
{
// Get all settings
$settings = get_settings_in_json();
// Get shared token
$shared = get_shared($token);
// Get user
$user = User::findOrFail($shared->user_id);
// Get file/folder record
$item = ('App\\Models\\' . ucfirst($shared->type))
::where('user_id', $shared->user->id)
->where('id', $shared->item_id)
->first();
// Handle single file
if ($shared->type === 'file') {
if ($item->thumbnail) {
$item->setPublicUrl($token);
}
// Get file record
$file = File::where('user_id', $shared->user_id)
->where('id', $shared->item_id)
->first();
if ($file->thumbnail) {
$file->setPublicUrl($token);
}
$metadata = [
return view("vuefilemanager.crawler.og-view")
->with('settings', get_settings_in_json())
->with('metadata', [
'url' => url('/shared', ['token' => $token]),
'is_protected' => $shared->is_protected,
'url' => url('/shared', ['token' => $token]),
'user' => $user->name,
'name' => $file->name,
'size' => $file->filesize,
'thumbnail' => $file->thumbnail ? $file->thumbnail : null,
];
}
// Handle single file
if ($shared->type === 'folder') {
// Get file record
$folder = Folder::where('user_id', $shared->user_id)
->where('unique_id', $shared->item_id)
->first();
$metadata = [
'is_protected' => $shared->protected,
'url' => url('/shared', ['token' => $token]),
'user' => $user->name,
'name' => $folder->name,
'size' => $folder->items,
'thumbnail' => null,
];
}
// Return view
return view("og-view")
->with('settings', $settings)
->with('metadata', $metadata);
'user' => $shared->user->settings->name,
'name' => $item->name,
'size' => $shared->type === 'folder'
? $item->items
: $item->filesize,
'thumbnail' => $item->thumbnail ?? null,
]);
}
/**

View File

@@ -94,7 +94,7 @@ class ShareController extends Controller
// Update sharing record
$shared->update([
'permission' => $request->permission,
'protected' => $request->protected,
'is_protected' => $request->protected,
'expire_in' => $request->expiration,
'password' => $request->password ? Hash::make($request->password) : $shared->password,
]);
@@ -149,7 +149,9 @@ class ShareController extends Controller
]);
// Return error
if ($validator->fails()) abort(400, 'Bad email input');
if ($validator->fails()) {
abort(400, 'Bad email input');
}
// Send shared link via email
if ($request->has('emails')) {

View File

@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<link rel="icon" href="{{ isset($settings->app_favicon) && $settings->app_favicon ? $settings->app_favicon : asset('favicon.png') }}?v={{ get_version() }}">
<link rel="icon" href="{{ $settings->app_favicon ?? asset('favicon.png') }}?v={{ get_version() }}">
<meta charset="utf-8">
<meta name="fragment" content="!">
@@ -15,8 +15,8 @@
{{--Show protected og metadata--}}
@if($metadata['is_protected'])
<meta property="og:title" content="{{ __('vuefilemanager.protected_file') }} | {{ isset($settings->app_title) && $settings->app_title ? $settings->app_title : 'VueFileManager' }}">
<title>{{ __('vuefilemanager.protected_file') }} | {{ isset($settings->app_title) && $settings->app_title ? $settings->app_title : 'VueFileManager' }}</title>
<meta property="og:title" content="{{ __('vuefilemanager.protected_file') }} | {{ $settings->app_title ?? 'VueFileManager' }}">
<title>{{ __('vuefilemanager.protected_file') }} | {{ $settings->app_title ?? 'VueFileManager' }}</title>
@endif
{{--Show public og metadata--}}
@@ -26,10 +26,9 @@
<meta property="og:image" content="{{ $metadata['thumbnail'] }}">
@endif
<meta property="og:title" content="{{ $metadata['name'] }} ({{ $metadata['size'] }}) | {{ isset($settings->app_title) && $settings->app_title ? $settings->app_title : 'VueFileManager' }}">
<title>{{ $metadata['name'] }} ({{ $metadata['size'] }}) | {{ isset($settings->app_title) && $settings->app_title ? $settings->app_title : 'VueFileManager' }}</title>
<meta property="og:title" content="{{ $metadata['name'] }} ({{ $metadata['size'] }}) | {{ $settings->app_title ?? 'VueFileManager' }}">
<title>{{ $metadata['name'] }} ({{ $metadata['size'] }}) | {{ $settings->app_title ?? 'VueFileManager' }}</title>
@endif
</head>
<body></body>
</html>

View File

@@ -1,5 +1,6 @@
<?php
use App\Http\Controllers\AppFunctionsController;
use App\Http\Controllers\FileFunctions\EditItemsController;
use App\Http\Controllers\FileFunctions\ShareController;
use App\Http\Controllers\Sharing\FileSharingController;
@@ -28,3 +29,5 @@ Route::group(['prefix' => 'browse'], function () {
Route::get('/files/{token}/public', [FileSharingController::class, 'file_public']);
Route::get('/shared/{token}', [ShareController::class, 'show']);
});
Route::get('/og-site/{token}', [AppFunctionsController::class, 'og_site']);

View File

@@ -3,7 +3,11 @@
namespace Tests\Feature\App;
use App\Http\Mail\SendContactMessage;
use App\Models\File;
use App\Models\Folder;
use App\Models\Setting;
use App\Models\Share;
use App\Models\User;
use App\Services\SetupService;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Mail;
@@ -32,6 +36,93 @@ class AppTest extends TestCase
->assertStatus(200);
}
/**
* @test
*/
public function it_get_og_page_for_folder()
{
$user = User::factory(User::class)
->create();
$folder = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'name' => 'Folder Title',
]);
$share = Share::factory(Share::class)
->create([
'item_id' => $folder->id,
'user_id' => $user->id,
'type' => 'folder',
'is_protected' => false,
]);
$this
->get("/api/og-site/$share->token")
->assertStatus(200)
->assertSee('Folder Title');
}
/**
* @test
*/
public function it_get_og_page_for_image()
{
$user = User::factory(User::class)
->create();
$file = File::factory(File::class)
->create([
'user_id' => $user->id,
'name' => 'Fake Image',
'thumbnail' => 'fake-image-thumbnail.jpg',
]);
$share = Share::factory(Share::class)
->create([
'item_id' => $file->id,
'user_id' => $user->id,
'type' => 'file',
'is_protected' => false,
]);
$this
->get("/api/og-site/$share->token")
->assertStatus(200)
->assertSee('Fake Image')
->assertSee('fake-image-thumbnail.jpg');
}
/**
* @test
*/
public function it_get_og_page_for_protected_file()
{
$user = User::factory(User::class)
->create();
$file = File::factory(File::class)
->create([
'user_id' => $user->id,
'name' => 'Fake Image',
'thumbnail' => 'fake-image-thumbnail.jpg',
]);
$share = Share::factory(Share::class)
->create([
'item_id' => $file->id,
'user_id' => $user->id,
'type' => 'file',
'is_protected' => true,
]);
$this
->get("/api/og-site/$share->token")
->assertStatus(200)
->assertSee('This link is protected by password');
}
/**
* @test
*/