micronaut-projects / micronaut-security

The official Micronaut security solution
Apache License 2.0
168 stars 124 forks source link

Support `@WithMockUser` #1010

Open ozooxo opened 3 years ago

ozooxo commented 3 years ago

It will be very handy if we can support something similar to @WithMockUser in Spring. Then we can test an endpoint with an anonymous and authenticated user easily.

Task List

Steps to Reproduce

Assume I have

endpoints:
  health:
    enabled: true
    sensitive: false
    details-visible: AUTHENTICATED

Expected Behaviour

@MicronautTest
class HealthEndpointTest {
    val mapper = jacksonObjectMapper()

    @Inject
    lateinit var server: EmbeddedServer

    @Inject
    @field:Client("/")
    lateinit var client: HttpClient

    @Test
    fun testHealthEndpointForAnonymousUser() {
        val rsp: String = client.toBlocking().retrieve("/health")
        val json = mapper.readTree(rsp)
        assertTrue(json.hasNonNull("status"))
        assertFalse(json.hasNonNull("name"))
        assertFalse(json.hasNonNull("details"))
    }

    @Test
    @WithMockUser
    fun testHealthEndpointForAuthenticatedUser() {
        val rsp: String = client.toBlocking().retrieve("/health")
        val json = mapper.readTree(rsp)
        assertTrue(json.hasNonNull("status"))
        assertTrue(json.hasNonNull("name"))
        assertTrue(json.hasNonNull("details"))
    }

Actual Behaviour

I don't have something like @WithMockUser I can use.

Environment Information

Example Application

AbdelHajou commented 1 year ago

I could really use this feature. @ozooxo Do you know of any other way to mock an authenticated user currently?