It sets the port automatically, and you can just do 
resourceMock.target("/inquiries/1/q") to automatically get a jersey client 
pointing at the correct port.

If you still want to control the port, I believe setting the system 
property "jersey.config.test.container.port" via System.setProperty() 
should allow you to do so

On Friday, May 29, 2020 at 8:24:34 AM UTC-7, jeremiah adams wrote:
>
> Thanks Joe, that does help. Any idea how to setup a port for the 
> GrizzlyWebTestContainer?  I'm getting:
>
> javax.ws.rs.ProcessingException: java.net.ConnectException: Connection 
> refused (Connection refused)
>
> When:
>      URI uri = builder.setScheme("http://";)
>             .setHost("localhost")
>             .setPath("/inquiries/1/q")
>             .build();
>
>         Response response = resourceMock.client()
>                 .target(uri)
>                 .request()
>                 .get();
>
>
> Here's the setup for my test rule:
> @ClassRule
>     public static final ResourceTestRule resourceMock = 
> ResourceTestRule.builder()
>         .addResource(new InquiryResource(mockDao, mockSearchDao, 
> findApiConfiguration, mockInquiryCreateSvc))
>         .addProvider(new AuthDynamicFeature(mockFilter))
>         .addProvider(RolesAllowedDynamicFeature.class)
>         .addProvider(new 
> AuthValueFactoryProvider.Binder<>(HelixUser.class))
>         .setTestContainerFactory(new GrizzlyWebTestContainerFactory())
>         .build();
>
>
>
>
> On Thursday, May 28, 2020 at 5:07:56 PM UTC-6, Joe Barnett wrote:
>>
>> Have you tried using the grizzly test container per 
>> https://www.dropwizard.io/en/latest/manual/testing.html#test-containers 
>> ?  That should, I believe, get you past the injection source issue but may 
>> result in a null user being injected (not 100% sure on exactly what 
>> happens, as we have the following set up as well as the changed test 
>> container):
>>
>> To get a user injected, you'll need to register an AuthDynamicFeature as 
>> a provider per 
>> https://www.dropwizard.io/en/latest/manual/auth.html#testing-protected-resources
>>  
>> .  something along the lines of:
>>
>> ResourceTestRule.builder()
>>     .addResource(new InquiryResource(...))
>>     .addProvider(new AuthDynamicFeature(mockAuthFilter)) // <-- may be 
>> able to use the auth filter you're registering for your application 
>> directly, depending on how integration-y the test is
>>     .addProvider(RolesAllowedDynamicFeature.class)
>>     .addProvider(new authValueFactoryProvider.Binder<>(User.class))
>>     .setTestContainerFactory(new GrizzlyWebTestContainerFactory())
>>     .build()
>>
>> Hope that helps,
>> -Joe
>>
>> On Thursday, May 28, 2020 at 2:39:04 PM UTC-7, jeremiah adams wrote:
>>>
>>> I am having issues using io.dropwizard.testing.junit.ResourceTestRule in 
>>> tandem with @Auth decorations associated with io.dropwizard.auth.Auth.
>>>
>>> I am using the @Auth decoration to fetch the Principal in my route 
>>> handlers. I am able to get our Okta roles in this manner for access 
>>> control. This all works fine when standing the AP and execute it as a jar. 
>>> However, I’m having problems when I attempt to UnitTest my route handlers. 
>>>
>>> Logs include this information:
>>>
>>> ERROR [2020-05-28 15:23:11,770] org.glassfish.jersey.internal.Errors: 
>>> Following issues have been detected:
>>>
>>> WARNING: No injection source found for a parameter of type public 
>>> javax.ws.rs.core.Response 
>>> com.helixeducation.ipa.admin.resources.InquiryResource.searchInquiries(com.helixeducation.components.auth.HelixUser,com.helixeducation.components.domain.InquirySearch)
>>>  
>>> at index 0.
>>>
>>> The parameter at index 0 is my Principal. Here is the method declaration:
>>>
>>>   @POST
>>>
>>>   @Timed
>>>
>>>   @Path("/search")
>>>
>>>   @Consumes(MediaType.APPLICATION_JSON)
>>>
>>>   @PermitAll
>>>
>>>   public Response searchInquiries(@Auth HelixUser user,
>>>
>>>       @Valid @NotNull InquirySearch inquirySearch) {
>>>
>>>     // check if user has an appropriate role or return 401.
>>>
>>> // implementation Omitted. 
>>>
>>> }
>>>
>>> Here’s the declaration of my TestRule:
>>>
>>> @ClassRule
>>>
>>> public static final ResourceTestRule resourceMock = 
>>> ResourceTestRule.builder()
>>>
>>>             .addResource(new InquiryResource(mockDao, mockSearchDao,  
>>> findApiConfiguration, mockInquiryCreateSvc))
>>>
>>>             .build();
>>>
>>>
>>>
>>> How do I get the TestRule to inject a mocked Principal? I think if I can 
>>> get past that issue, I can get unblocked.
>>>
>>> Regards,
>>>
>>> - jeremiah
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"dropwizard-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dropwizard-user/34778985-73ad-4b50-94e9-36485a9aac11%40googlegroups.com.

Reply via email to