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.
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.
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>
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).
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).
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!