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("[email protected]");

    }

    @Inject

    Principal principal;


    @Test

    *public* *void* injection() {

        *assertThat*(principal.getName(), *is*("[email protected]"));

    }

@Dependent

@RunWith(CdiTestRunner.*class*)

*public* *class* BobUnitTest {

    @Produces

    *public* Principal customPrincipal() {

        *return* *new* CustomPrincipal("[email protected]");

    }


    @Inject

    Principal principal;


    @Test

    *public* *void* injection() {

        *assertThat*(principal.getName(), *is*("[email protected]"));

    }


}


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

Reply via email to