1   package net.sf.fleet.test;
2   
3   import static org.testng.Assert.*;
4   import static org.easymock.EasyMock.*;
5   
6   import net.sf.fleet.configuration.impl.ConfigurationBuildingInterceptor;
7   import net.sf.fleet.configuration.model.ConfigurationManager;
8   import net.sf.fleet.configuration.model.ConfigurationsFacet;
9   import net.sf.fleet.configuration.model.PendingContributionsFacet;
10  import net.sf.fleet.exceptions.FleetConfigurationException;
11  import net.sf.fleet.impl.ContextImpl;
12  import net.sf.fleet.interceptor.InterceptorPipeline;
13  import net.sf.fleet.interceptor.ServiceModuleInterceptorContext;
14  import net.sf.fleet.interceptor.model.InvocationHandlerFacet;
15  import net.sf.fleet.interceptor.model.ModuleMethodInterceptorFacet;
16  import net.sf.fleet.model.ModuleInterface;
17  import net.sf.fleet.util.URIUtils;
18  
19  import org.testng.annotations.Test;
20  
21  public class BuilderTest {
22  	@Test
23  	public void testConfigurationBuilder() {
24  		ContextImpl lContext = new ContextImpl();
25  		lContext.addModule(new DummyModuleImpl());
26  		ConfigurationManager lConfiguration = lContext.getModuleInterface(DummyModule.class).getFacet(ConfigurationsFacet.class).getConfiguration("list");
27  		assertNotNull(lConfiguration);
28  	}
29  	
30  	@Test
31  	public void testConfigurationBuilderWithDuplicateConfiguration() {
32  		ContextImpl lContext = new ContextImpl();
33  		DuplicateConfigurationModule lModule = createMock(DuplicateConfigurationModule.class);
34  		try {
35  			lContext.addModule(lModule);
36  			fail("Adding a module with two configurations of the same name should have thrown an exception.");
37  		} catch ( FleetConfigurationException e ) {
38  			// expected.
39  		}
40  	}
41  	
42  	@Test
43  	public void testModuleInterceptorProxyBuilder() {
44  		ContextImpl lContext = new ContextImpl();
45  		lContext.addModule(new DummyModuleImpl());
46  		InvocationHandlerFacet lFacet = lContext.getModuleInterface(DummyModule.class).getFacet(InvocationHandlerFacet.class);
47  		assertNotNull(lFacet.getInvocationHandler());
48  	}
49  	
50  	@Test
51  	public void testContributionBuilder() {
52  		ContextImpl lContext = new ContextImpl();
53  		lContext.addModule(new DummyModuleImpl());
54  		PendingContributionsFacet lFacet = lContext.getFacet(PendingContributionsFacet.class);
55  		assertTrue(lFacet.getPendingContributionCount() > 0, "Pending contributions should have numbered at least one.");
56  	}
57  	
58  	@Test
59  	public void testContributionResolverBuilder() {
60  		ContextImpl lContext = new ContextImpl();
61  		lContext.addModule(new DummyModuleImpl());
62  		ModuleInterface lModule = lContext.getModuleInterface(DummyModule.class);
63  		ConfigurationsFacet lConfigurationsFacet = lModule.getFacet(ConfigurationsFacet.class);
64  		ConfigurationManager lConfiguration = lConfigurationsFacet.getConfiguration("list");
65  		assertEquals((int)lConfiguration.getContributorCount(),1);
66  	}
67  	
68  	@Test
69  	public void testConfigurationBuildingInterceptorBuilder() throws SecurityException, NoSuchMethodException {
70  		ContextImpl lContext = new ContextImpl();
71  		lContext.addModule(new DummyModuleImpl());
72  		ModuleInterface lModule = lContext.getModuleInterface(DummyModule.class);
73  		InterceptorPipeline<ServiceModuleInterceptorContext> lPipelineForMethod = lModule.getFacet(ModuleMethodInterceptorFacet.class).get(DummyModule.class.getMethod("listConfiguration", new Class[0]));
74  		assertTrue(lPipelineForMethod.contains(URIUtils.classURI(ConfigurationBuildingInterceptor.class)));
75  	}
76  }