انتقل إلى محتوى الدرس
الدرس 57
دورة إطار العمل Laravel

اختبار طلبات HTTP والعروض وتدفقات المصادقة في LaravelTesting HTTP Requests Views and Authentication Flows

محاكاة طلبات HTTP والمستخدم المسجل بـ actingAs والتحقق من رموز الاستجابة والتحويلات وأخطاء التحقق برمجياً.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تتيح اختبارات الميزات في Laravel محاكاة طلبات HTTP الواردة دون الحاجة لتشغيل خادم ويب حقيقي، وذلك عبر استدعاء دوال مثل $this->get و $this->post و $this->put و $this->delete. تُرجع كل دالة كائن TestResponse مزوداً بعشرات دوال التوكيد المعبرة مثل assertStatus و assertOk.

  • التمرير الداخلي للنواة (Internal Kernel Dispatch): تمرر دالة $this->get طلباً افتراضياً مباشرة عبر نواة HTTP والبرمجيات الوسيطة.
  • توكيدات رموز الحالة (Status Code Assertions): اربط دوال الفحص مثل assertStatus(200) أو assertOk أو assertNotFound بالاستجابة.
  • إرسال بيانات النموذج (Payload Submission): مرر مصفوفة حقول الإدخال كوسيط ثانٍ عند استدعاء دالتي $this->post أو $this->put.
مخطط معماري يوضح اختبار طلبات HTTP والعروض وتدفقات المصادقة في Laravel في إطار العمل Laravel 12
PHP
public function test_home_page_is_ok(): void
{
    $response = $this->get('/');
    $response->assertStatus(200)
        ->assertSee('Welcome');
}

بعد أن يعالج المتحكم إرسال النموذج أو يعرض قالب Blade، يمكنك التحقق برمجياً من وجهة إعادة التوجيه ومن المتغيرات الممررة إلى الواجهة. اربط الدالة assertRedirect للتأكد من مسار التحويل، والدالة assertViewHas لفحص البيانات المرسلة للقالب.

  • التحقق من التحويل (Redirect Verification): استخدم دالة assertRedirect أو assertRedirectToRoute للتأكد من توجيه الزائر للمسار الصحيح.
  • فحص متغيرات الواجهة (Inspecting View Variables): استدع دالة assertViewIs للتأكد من اسم القالب ودالة assertViewHas لفحص المتغيرات الممررة.
  • فحص النصوص الظاهرة (Rendered Text Checks): استخدم دالتي assertSee و assertDontSee للتحقق من ظهور أو اختفاء النصوص في HTML الناتج.
PHP
public function test_about_view_data(): void
{
    $this->get('/about')
        ->assertStatus(200)
        ->assertViewIs('about')
        ->assertViewHas('company', 'CloseTag');
}

لا يتطلب اختبار المسارات المحمية إرسال نموذج تسجيل الدخول في كل دالة اختبار على حدة. يتيح استدعاء الدالة $this->actingAs($user) تعيين كائن المستخدم الممرر كمستخدم مصادق عليه حالياً في حارس الجلسة طوال فترة تنفيذ الطلب الاختباري.

  • تجاوز نموذج الدخول (Bypassing Login Forms): اربط دالة $this->actingAs($user) بطلب الجلب لاختبار الصفحات المحمية مباشرة.
  • توكيدات حالة المصادقة (Auth State Assertions): تحقق من حالة الجلسة باستخدام دالتي assertAuthenticated للمسجل و assertGuest للزائر.
  • تحديد الحارس المخصص (Custom Guard Selection): مرر اسم الحارس كوسيط ثانٍ في دالة actingAs عند اختبار تطبيقات متعددة الحراس.
PHP
public function test_user_sees_dashboard(): void
{
    $user = new User(['id' => 1, 'name' => 'Sara']);
    $this->actingAs($user)
        ->get('/dashboard')
        ->assertStatus(200);
}

لا تقتصر حزمة الاختبارات القوية على فحص المسار الناجح بالبيانات الصحيحة، بل تتحقق أيضاً من رفض المدخلات غير الصالحة بدقة. يتيح إرسال حقول فارغة أو خاطئة مع ربط الدالة assertSessionHasErrors التأكد من أن قواعد التحقق في المتحكم تحمي المسار.

  • توكيد أخطاء الحقول (Asserting Field Errors): مرر أسماء الحقول مثل ['title', 'email'] إلى دالة assertSessionHasErrors للتأكد من رفضها.
  • فحص سلامة المدخلات (Happy Path Verification): استخدم دالة assertSessionHasNoErrors للتأكد من مرور البيانات الصحيحة دون أي أخطاء تحقق.
  • فحص رسائل الجلسة (Flash Data Inspection): استخدم دالة assertSessionHas للتحقق من تخزين رسالة النجاح المؤقتة في الجلسة.
PHP
public function test_post_requires_a_title(): void
{
    $user = new User(['id' => 1]);

    $this->actingAs($user)
        ->post('/posts', ['title' => ''])
        ->assertSessionHasErrors(['title']);
}

تحدث الثغرات الأمنية غالباً عند نسيان فحص ملكية السجل عبر البوابات أو السياسات داخل المسار أو المتحكم. اكتب دائماً اختبارات مخصصة يحاول فيها مستخدم أول تعديل أو حذف سجل يخص مستخدماً آخر، وتحقق من إرجاع الاستجابة للرمز المحظور 403.

  • اختبارات منع ثغرات IDOR (IDOR Prevention Tests): حاكِ محاولة تعديل سجل مستخدم آخر وتحقق من المنع عبر assertForbidden أو assertStatus(403).
  • فحص توجيه الزوار (Guest Redirect Checks): تأكد من تحويل الزائر غير المسجل عند طلب مسار محمي إلى صفحة الدخول عبر assertRedirect.
  • تغطية السماح والمنع (Role & Gate Coverage): اختبر حالة المالك المصرح له وحالة المستخدم غير المالك الممنوع بالرمز 403.
PHP
publicfunction test_stranger_ gets_403(): void
{
    $stranger = new User(['id' => 99]);
    $this->actingAs($stranger)
        ->put('/posts/1', ['title' => 'Hacked'])
        ->assertStatus(403);
}

يتيح لك الجمع بين محاكاة طلبات HTTP ومصادقة الجلسة عبر actingAs وتوكيدات العرض والجلسة فحص جميع مسارات المتحكمات من البداية للنهاية. راجع أهم دوال اختبار طلبات الويب أدناه قبل الانتقال لاختبار قواعد البيانات وواجهات JSON.

وجه المقارنة الهندسيالأسلوب المتزامن أو التقليديمعيار Laravel 12 الحديث
فحص مسارات الويبتصفح الصفحات يدوياً أو إرسال طلبات منفردة عبر برامج خارجيةمحاكاة آلية عبر دوال $this->get و $this->post داخل الاختبارات
اختبار الصفحات المحميةإرسال نموذج تسجيل الدخول في بداية كل اختبار على حدةمصادقة فورية في الذاكرة عبر الدالة $this->actingAs($user)
تدقيق قواعد التحققافتراض عمل قواعد التحقق دون اختبار إرسال بيانات خاطئةاختبارات سلبية صريحة تفحص الأخطاء عبر assertSessionHasErrors
أمان صلاحيات التفويضالاكتفاء باختبار نجاح المالك في تعديل سجله الخاص فقطاختبار محاولة تعديل غير المالك والتأكد من إرجاع الرمز 403
PHP
$this->actingAs($user)
    ->post('/posts', ['title' => 'Laravel 12 Guide'])
    ->assertRedirect('/posts')
    ->assertSessionHasNoErrors();
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «اختبار طلبات HTTP والعروض وتدفقات المصادقة في Laravel» مفاهيم محاكاة طلبات HTTP في الاختبارات، وفحص التحويلات وبيانات قوالب العرض، ومحاكاة تسجيل الدخول بدالة actingAs وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «اختبار قواعد البيانات وتوكيدات واجهات API في Laravel» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Feature Testing اختبار الطلبات
محاكاة طلبات HTTP والمستخدم المسجل بـ actingAs والتحقق من رموز الاستجابة والتحويلات وأخطاء التحقق برمجياً.
للمراجعة
02 Simulating HTTP Requests in Tests محاكاة طلبات HTTP في الاختبارات
المفهوم الهندسي والتطبيق العملي المباشر لقسم محاكاة طلبات HTTP في الاختبارات في إطار العمل Laravel 12.
للمراجعة
03 Asserting Redirects and View Data فحص التحويلات وبيانات قوالب العرض
المفهوم الهندسي والتطبيق العملي المباشر لقسم فحص التحويلات وبيانات قوالب العرض في إطار العمل Laravel 12.
للمراجعة
04 Authenticating Users with actingAs محاكاة تسجيل الدخول بدالة actingAs
المفهوم الهندسي والتطبيق العملي المباشر لقسم محاكاة تسجيل الدخول بدالة actingAs في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 MVC MVC
Model View Controller
النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
للمراجعة
02 CLI CLI
Command Line Interface
واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
للمراجعة
03 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
للمراجعة
04 PSR PSR
PHP Standards Recommendations
المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «محاكاة طلبات HTTP في الاختبارات» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «فحص التحويلات وبيانات قوالب العرض» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من محاكاة طلبات HTTP في الاختبارات في إطار العمل Laravel 12؟

يسهم محاكاة طلبات HTTP في الاختبارات في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «فحص التحويلات وبيانات قوالب العرض» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة محاكاة تسجيل الدخول بدالة actingAs بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة محاكاة تسجيل الدخول بدالة actingAs.

04

لماذا يُعد تطبيق اختبار قواعد التحقق وأخطاء الجلسة مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق اختبار صلاحيات الوصول ومنع التعديل في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع توكيدات طلبات HTTP والمصادقة؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.