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

Menguji pengesahan Spring Security menggunakan JUnit

王林
Lepaskan: 2023-09-10 10:01:05
ke hadapan
679 orang telah melayarinya

使用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>
Salin selepas log masuk

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());
   }
}
Salin selepas log masuk

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());
}
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan