added ShareTest test methods

This commit is contained in:
Peter Papp
2021-02-28 16:45:34 +01:00
parent 81dc7d7ed7
commit b82f34ed4d
8 changed files with 246 additions and 51 deletions

View File

@@ -5,8 +5,9 @@ namespace App\Http\Controllers\FileFunctions;
use App\Http\Requests\Share\CreateShareRequest;
use App\Http\Requests\Share\UpdateShareRequest;
use App\Http\Resources\ShareResource;
use App\Models\Share;
use App\Models\Zip;
use App\Notifications\SharedSendViaEmail;
use App\Zip;
use Illuminate\Contracts\Routing\ResponseFactory;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
@@ -15,7 +16,6 @@ use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Str;
use App\Share;
use Validator;
class ShareController extends Controller
@@ -38,40 +38,43 @@ class ShareController extends Controller
* Generate file share link
*
* @param CreateShareRequest $request
* @param $id
* @return ShareResource
*/
public function store(CreateShareRequest $request)
public function store(CreateShareRequest $request, $id)
{
// TODO: poriesit binarny string
do {
// Generate unique token
$token = Str::random(16);
} while (Share::where(DB::raw('BINARY `token`'), $token)->exists());
} while (Share::where('token', $token)->exists());
// Create shared options
$options = [
'password' => $request->has('password') ? Hash::make($request->password) : null,
'type' => $request->type === 'folder' ? 'folder' : 'file',
'protected' => $request->isPassword,
'permission' => $request->permission,
'item_id' => $request->unique_id,
'expire_in' => $request->expiration,
'user_id' => Auth::id(),
'token' => $token,
'password' => $request->has('password') ? Hash::make($request->password) : null,
'type' => $request->type === 'folder' ? 'folder' : 'file',
'is_protected' => $request->isPassword,
'permission' => $request->permission ?? null,
'item_id' => $id,
'expire_in' => $request->expiration ?? null,
'user_id' => Auth::id(),
'token' => $token,
];
// Return created shared record
$share = new ShareResource(Share::create($options));
// Send shared link via email
if ($request->has('emails')) {
foreach ($request->emails as $email) {
Notification::route('mail', $email)->notify(new SharedSendViaEmail($token));
Notification::route('mail', $email)->notify(
new SharedSendViaEmail($token)
);
}
}
return $share;
// Return created shared record
return new ShareResource(Share::create($options));
}
/**
@@ -137,8 +140,9 @@ class ShareController extends Controller
* @param $token
* @param $request
*/
public function shared_send_via_email(Request $request, $token)
public function send_to_emails_recipients(Request $request, $token)
{
// TODO: pridat validation request
// Make validation of array of emails
$validator = Validator::make($request->all(), [
'emails.*' => 'required|email',
@@ -148,9 +152,11 @@ class ShareController extends Controller
if ($validator->fails()) abort(400, 'Bad email input');
// Send shared link via email
if($request->has('emails')) {
if ($request->has('emails')) {
foreach ($request->emails as $email) {
Notification::route('mail', $email)->notify(new SharedSendViaEmail($token));
Notification::route('mail', $email)
->notify(new SharedSendViaEmail($token));
}
}