البرمجة

اختبار Spring Boot مع تمكين الأمان

عندما تستخدم Spring Boot لاختبار تطبيقك مع تمكين الأمان، يمكنك استخدام عدة طرق للمصادقة على المستخدمين في اختباراتك. إليك بعض الطرق الشائعة:

  1. استخدام @WithMockUser: يمكنك استخدام هذا الإعلام لإضافة مستخدم مزيف إلى اختبارك بدون الحاجة إلى تكوين مخدم ويب الوهمي. يمكنك تعيين الدور واسم المستخدم لهذا المستخدم المزيف.

    java
    @Test @WithMockUser(username = "user", roles = "USER") public void testHome() throws Exception { this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(view().name("posts")); }
  2. تمكين الأمان الكامل: يمكنك تمكين الأمان الكامل في اختبارك بتكوين ويب الوهمي مع مستخدمين حقيقيين. هذا يتطلب تهيئة الحماية لاستخدام تكوين غير منتجة (unsecured configuration) واستخدام معرف مستخدم وكلمة مرور وهميين.

  3. استخدام @WithUserDetails: يتيح لك هذا الإعلام استخدام بيانات مستخدم من النظام الأساسي في اختباراتك. يعمل جيدًا مع تكوين الأمان الكامل.

    java
    @Test @WithUserDetails("username") public void testHome() throws Exception { this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(view().name("posts")); }
  4. استخدام بيانات المستخدم القياسية: إذا كنت تستخدم مصادقة مبنية على مصادقة HTTP الأساسية (Basic Authentication) أو برنامج توجيه OAuth2، يمكنك تضمين بيانات المستخدم في طلباتك كجزء من الاختبار.

    java
    @Test public void testHome() throws Exception { this.mvc.perform(get("/").header("Authorization", "Basic " + Base64Utils.encodeToString("username:password".getBytes()))) .andExpect(status().isOk()).andExpect(view().name("posts")); }

يرجى ملاحظة أنه يجب عليك تكوين تطبيقك ليسمح ببيانات المستخدم القياسية أو بيانات المستخدم الوهمية في بيئة الاختبار، حيث يمكن أن يؤدي استخدام بيانات المستخدم الحقيقية إلى مشاكل في الاختبارات أو إلى الوصول إلى بيانات حقيقية في نظامك.

المزيد من المعلومات

بالطبع! إليك مزيدًا من المعلومات حول اختبار Spring Boot مع تمكين الأمان:

  1. استخدام @WithUserDetails: إذا كنت ترغب في استخدام بيانات مستخدم حقيقية من قاعدة البيانات الخاصة بك، فيمكنك استخدام @WithUserDetails لتحديد اسم المستخدم.

    java
    @Test @WithUserDetails("username") public void testHome() throws Exception { this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(view().name("posts")); }
  2. استخدام مستخدمين وهميين مخصصين: يمكنك تعريف مستخدمين وهميين مخصصين للاختبارات الخاصة بك باستخدام مثيل UserDetailsService.

    java
    @TestConfiguration static class CustomUserDetailsServiceConfiguration { @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
  3. اختبار بدون تأمين: في حالة كنت ترغب في اختبار نقاط النهاية بدون أمان، يمكنك استخدام تهيئة مخصصة للسماح بذلك.

    java
    @TestConfiguration @EnableWebSecurity static class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/public/**").permitAll() .anyRequest().authenticated() .and() .formLogin().permitAll(); } }

تأكد من استخدام الطريقة التي تناسب احتياجات اختباراتك بشكل أفضل.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر