Nicely done Lucas!  I changed it a bit.  AOP dependency is test scope.  I’m 
also keeping its resources under test as well.

Now past the duplicate schema problem.  Yes, it’s a workaround, but fairly easy 
to get going.  Thanks for taking the time to put this together.

--Shawn

> On Dec 18, 2018, at 4:59 PM, Lucas Theisen <[email protected]> wrote:
> 
> Hi Shawn,
> 
> Sorry for the delay, took me a bit to extract out a working example.  I 
> published it here: https://github.com/lucastheisen/apacheds-test
> 
> The README has the details (_i am pretty sure_) that are needed for your 
> project.  However, even if i missed something in the README, the project 
> itself is a fully working example that demonstrates how i test my password 
> policy.  It should not be all that difficult to adapt to your use case.  Hope 
> it helps!
> 
> Lucas
> 
> On Fri, Dec 14, 2018 at 11:38 AM Shawn McKinney <[email protected]> wrote:
> Lucas,
> 
> My lack of any proficiency in aspects (whatsoever) means I can’t piece 
> together how your example gets wired into the execution chain in order to try 
> it out.
> 
> Currently, there’s this in the test class that I’m using:
> 
> @RunWith(FrameworkRunner.class)
> @CreateDS(name = "classDS", partitions =
>     { @CreatePartition(name = "example", suffix = "dc=example,dc=com") })
> @CreateLdapServer(
>     transports =
>         {
>             @CreateTransport(protocol = "LDAP", port = 10389)
>     })
> @ApplyLdifFiles(
>     { "fortress-schema.ldif", "init-ldap.ldif"/*, "test-data.ldif"*/})
> public class FortressJUnitApachedsTest extends AbstractLdapTestUnit
> 
> ***
> 
> How does your aspect get hooked in?  Sorry for the rudimentary question.  Is 
> there a more complete example you can point me to?
> 
> Thanks,
> 
> Shawn
> 
> > On Dec 12, 2018, at 11:27 AM, Lucas Theisen <[email protected]> 
> > wrote:
> >
> > Not sure this helps much, but my team works around this for our integration 
> > test by using aop.  Specifically:
> >
> > <aspectj>
> >   <aspects>
> >     <aspect name=" com.pastdev.apacheds.server.GetUniqueResourceReplacer" />
> >   </aspects>
> > </aspectj>
> >
> >
> > And this implementation
> >
> > /**
> >  * An aspect workaround for <a
> >  * href="https://issues.apache.org/jira/browse/DIRSERVER-1606";
> >  * >DIRSERVER-1606</a>
> >  *
> >  * @author LTHEISEN
> >  */
> > @Aspect
> > public class GetUniqueResourceReplacer {
> >     private static final Logger log = LoggerFactory.getLogger( 
> > GetUniqueResourceReplacer.class );
> >
> >     @Pointcut( "execution(* 
> > org.apache.directory.api.ldap.schema.extractor.impl.DefaultSchemaLdifExtractor.getUniqueResource(String,String))
> >  &&" +
> >             "args(resourceName,resourceDescription)" )
> >     private void getUniqueResourceReplacer( String resourceName, String 
> > resourceDescription ) {
> >     }
> >
> >     @Around( 
> > "com.pastdev.apacheds.server.GetUniqueResourceReplacer.getUniqueResourceReplacer(resourceName,resourceDescription)"
> >  )
> >     public URL getFirstMatchingResource( String resourceName, String 
> > resourceDescription ) throws IOException {
> >         Enumeration<URL> resources = 
> > DefaultSchemaLdifExtractor.class.getClassLoader().getResources( 
> > resourceName );
> >         if ( !resources.hasMoreElements() ) {
> >             throw new UniqueResourceException( resourceName, 
> > resourceDescription );
> >         }
> >         URL result = resources.nextElement();
> >         if ( resources.hasMoreElements() ) {
> >             log.debug( "found more than one copy of " + resourceName + " 
> > using first one" );
> >         }
> >         return result;
> >     }
> > }
> >
> > As stated in the comment, this issue relates to 
> > https://issues.apache.org/jira/browse/DIRSERVER-1606
> >
> > Maybe that will work for you too.
> >
> > On Wed, Dec 12, 2018 at 8:58 AM Shawn McKinney <[email protected]> wrote:
> >
> > > On Dec 12, 2018, at 5:08 AM, Emmanuel Lécharny <[email protected]> 
> > > wrote:
> > >
> > > if you include ApacheDS, it will implicitely include LDAP API, so 
> > > including ldap-api-all will be a duplicate, AFAIR.
> >
> > Here, fortress core apacheDS depends are:  <scope>test</scope>, and of 
> > course we have compile-time dependency on the api.
> >
> > >
> > > On Dec 12, 2018, at 5:08 AM, Emmanuel Lécharny <[email protected]> 
> > > wrote:
> > >
> > > I'll have  a closer look later today. What command are you executing that 
> > > I can run to get the same result ?
> >
> > Simply executed the test class inside IDE, but it could command-line:
> >
> > $ mvn -Dtest=FortressJUnitApachedsTest test
> >
> > Thanks,
> > —Shawn
> >
> 

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to