Rumah  >  Artikel  >  Java  >  Menguji pengesahan Spring Security menggunakan JUnit

Menguji pengesahan Spring Security menggunakan JUnit

王林
王林ke hadapan
2023-09-10 10:01:05657semak imbas

使用JUnit测试Spring Security身份验证

Pengenalan

Spring Security ialah rangka kerja pengesahan dan kawalan akses yang sangat disesuaikan untuk aplikasi Java, terutamanya aplikasi berasaskan Spring. Menguji langkah keselamatan ini adalah penting untuk memastikan keselamatan aplikasi anda. Dalam artikel ini, kami akan meneroka cara menguji Spring Security dengan berkesan menggunakan JUnit, rangka kerja ujian unit terkemuka di Java.

Fahami Spring Security dan JUnit

Spring Security ialah rangka kerja berkuasa yang menyediakan pengesahan, kebenaran dan fungsi keselamatan lain untuk aplikasi peringkat perusahaan. Ia adalah komprehensif dan fleksibel, sesuai untuk pelbagai keperluan keselamatan.

JUnit ialah rangka kerja sumber terbuka ringkas untuk menulis ujian berulang dalam Java. Ia menyediakan anotasi untuk mengenal pasti kaedah ujian dan penegasan untuk menyemak keputusan ujian ini.

Menguji Keselamatan Spring menggunakan JUnit

Sediakan persekitaran ujian

Untuk menguji Spring Security menggunakan JUnit, kami perlu menambah kebergantungan yang diperlukan pada fail binaan Maven atau Gradle terlebih dahulu. Untuk Maven kami akan sertakan -

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

Tulis kes ujian untuk Keselamatan Musim Bunga

Sekarang, kami akan mula menulis kes ujian kami. Katakan kami mempunyai titik akhir REST API ("/api/data") yang hanya boleh diakses oleh pengguna yang disahkan. Kami boleh menulis ujian JUnit untuk mengesahkan ini −

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@SpringBootTest
@AutoConfigureMockMvc
public class WebSecurityTest {

   @Autowired
   private MockMvc mockMvc;

   @Test
   public void shouldReturnUnauthorizedForUnauthenticatedUsers() throws Exception {
      mockMvc.perform(get("/api/data"))
         .andExpect(status().isUnauthorized());
   }
}

Dalam ujian ini, kami menggunakan MockMvc untuk melaksanakan permintaan GET kepada "/api/data". Memandangkan pengguna tidak disahkan, kami menjangkakan kod status HTTP 401 (Tidak Diizinkan).

Uji Akses Pengesahan

Jika kami ingin menguji titik akhir untuk pengguna yang disahkan, maka Spring Security Test menyediakan anotasi @WithMockUser untuk mencapai tujuan ini -

import org.springframework.security.test.context.support.WithMockUser;

@Test
@WithMockUser
public void shouldReturnOkForAuthenticatedUsers() throws Exception {
   mockMvc.perform(get("/api/data")).andExpect(status().isOk());
}

Dalam ujian ini, @WithMockUser menyediakan pengguna olok-olok untuk membuat permintaan "disahkan". Kami kemudian menjangkakan status HTTP sebanyak 200 (OK).

Kesimpulan

Menguji Keselamatan Spring menggunakan JUnit ialah langkah kritikal dalam memastikan langkah keselamatan aplikasi anda berfungsi seperti yang diharapkan. Dengan persediaan dan pemahaman yang betul tentang kedua-dua rangka kerja, anda boleh menulis ujian yang berkesan dan meningkatkan keteguhan pelaksanaan keselamatan anda.

Atas ialah kandungan terperinci Menguji pengesahan Spring Security menggunakan JUnit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam