Hi

You mean you get null? Normally nothing special is needed


Romain Manni-Bucau
@rmannibucau
http://www.tomitribe.com
http://rmannibucau.wordpress.com
https://github.com/rmannibucau


2014-11-06 17:35 GMT+00:00 Ulrich Metzger <[email protected]>:
> Hi list,
> does anybody know how to mock a SecurityContext which gets injected in a
> Service Class exposed as Rest service in a junit test?
>
> Here is the Service Class (the get method checks the currently logged in
> user):
> ##################### ...
> @Path("/user")
> @Produces(MediaType.APPLICATION_JSON)
> @Stateless
> @Lock(LockType.READ)
> public class UserService {
>
>      @Context
>     private SecurityContext context;
>
>     /**
>      * returns logged in user
>      */
>     @Path("/get")
>     @GET
>     @Lock(LockType.WRITE)
>     public Response get() {
>         try {
>             User user = ((UserPrincipal)
> context.getUserPrincipal()).getUser();
>             return Response.ok(getDefaultGson().toJson(user),
> MediaType.APPLICATION_JSON_TYPE).build();
>         } catch (Exception e) {
>             logger.debug("no user principal in context");
>             return Response.status(Status.FORBIDDEN).build();
>         }
>     }
>
> ... #########################
>
> the JUnit tests uses the ApplicationComposer and looks like this:
>
> ....#########################
>
> @EnableServices(value = "jaxrs")
> @RunWith(ApplicationComposer.class)
>
> public class UserServiceTest {
>
>     @Module
>     @Classes(value = { UserService.class}, cdi = true) // scan these classes
>     public WebApp war() {
>         return new WebApp() // define rest Application
>                 .contextRoot("UserServiceTest");
>     }
>
>     @Test
>     public void get() throws IOException, NamingException {
>         final Response message = WebClient.create("http://localhost:4204";)
>                 .path("/UserServiceTest/user/get").get(Response.class);
>         assertEquals(403, message.getStatus());
>     }
>
> ....###################
>  I tried several hours to find an example how to create a SecurityContext
> mock in the test, which than is injected in the UserService with no luck.
> I hope someone has a hint for me.
>
> Uli

Reply via email to