deltaspike-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Karl Pietrzak <kap4...@gmail.com>
Subject Re: how to test different java.security.Principal's
Date Fri, 12 Feb 2016 03:53:18 GMT
I'm not sure how to use my custom CDI qualifiers to achieve my goal.  Care
to send a blog post or a link to an example?

I guess one of the confounding problems might be a test executing in Maven
has two bean archives:

   - target/classes
   - target/test-classes

So whatever solution needs to recognize that target/classes might have its
own bean.xml (for production).

Do I need an @Alternative or something?

Thanks!  Any tips would be greatly appreciated.

On Wed, Feb 10, 2016 at 9:24 AM, Gerhard Petracek <
gerhard.petracek@gmail.com> wrote:

> hi,
>
> you can use your own cdi-qualifier/s or you can use just one (central)
> producer which has at least one parameter of type
> javax.enterprise.inject.spi.InjectionPoint.
> (InjectionPoint allows to get information about the target
> -> you can produce dependent-scoped instances e.g. based on the target
> test-class).
>
> regards,
> gerhard
>
>
>
> 2016-02-10 14:27 GMT+01:00 Karl Pietrzak <kap4020@gmail.com>:
>
> > Thanks to Java EE 7, or maybe even before it, you can inject a
> > java.security.Principal
> > <https://docs.oracle.com/javaee/7/tutorial/cdi-adv004.htm>.
> >
> > This is awesome, and I'd love to use this functionality to unit test my
> > code with my own Principal's.
> >
> > Something like:
> >
> > @Dependent
> >
> > @RunWith(CdiTestRunner.*class*)
> >
> > *public* *class* AliceUnitTest {
> >
> >     @Produces
> >
> >     *public* Principal customPrincipal() {
> >
> >         *return* *new* CustomPrincipal("alice@example.com");
> >
> >     }
> >
> >     @Inject
> >
> >     Principal principal;
> >
> >
> >     @Test
> >
> >     *public* *void* injection() {
> >
> >         *assertThat*(principal.getName(), *is*("alice@example.com"));
> >
> >     }
> >
> > @Dependent
> >
> > @RunWith(CdiTestRunner.*class*)
> >
> > *public* *class* BobUnitTest {
> >
> >     @Produces
> >
> >     *public* Principal customPrincipal() {
> >
> >         *return* *new* CustomPrincipal("bob@example.com");
> >
> >     }
> >
> >
> >     @Inject
> >
> >     Principal principal;
> >
> >
> >     @Test
> >
> >     *public* *void* injection() {
> >
> >         *assertThat*(principal.getName(), *is*("bob@example.com"));
> >
> >     }
> >
> >
> > }
> >
> >
> > This results in "WELD-001409: Ambiguous dependencies for type Principal
> > with qualifiers @Default" and "WELD-001318: Cannot resolve an ambiguous
> > dependency between: ".
> >
> > I think I tried every different scope and bean-discovery-mode.  Is this
> > supported at all?
> >
> > Code available at
> >
> >
> https://github.com/The-Alchemist/javaeetesting/tree/testing-different-principals/deltaspike
> >
> > Any tips would be greatly appreciated. :)
> >
> > --
> > Karl
> >
>



-- 
Karl

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message