cleanest workaround for junit/mockito problems so far by putting them on the global...
[xmlrouter] / integrationtest / src / test / java / org / wamblee / xmlrouter / integrationtest / XmlRouterIntegrationTest.java
1 /*
2  * Copyright 2005-2011 the original author or authors.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.wamblee.xmlrouter.integrationtest;
17
18 import static org.mockito.Matchers.*;
19 import static org.mockito.Mockito.*;
20 import static org.ops4j.pax.exam.CoreOptions.*;
21
22 import javax.xml.transform.dom.DOMSource;
23
24 import org.junit.Test;
25 import org.junit.runner.RunWith;
26 import org.ops4j.pax.exam.Option;
27 import org.ops4j.pax.exam.junit.Configuration;
28 import org.ops4j.pax.exam.junit.JUnit4TestRunner;
29 import org.osgi.framework.BundleContext;
30 import org.osgi.framework.ServiceRegistration;
31 import org.wamblee.xmlrouter.subscribe.Destination;
32
33 @RunWith(JUnit4TestRunner.class)
34 public class XmlRouterIntegrationTest {
35
36     @Configuration()
37     public Option[] config() {
38         return options(
39             cleanCaches(),
40             // Test dependencies
41             // wrappedBundle(mavenBundle().groupId("junit")
42             // .artifactId("junit-dep").version("4.8.2")), //
43             // mavenBundle().groupId("org.mockito").artifactId("mockito-all")
44             // .version("1.8.5"), //
45             // junitBundles(),
46             // mockitoBundles(),
47
48             systemPackages("org.mockito", "org.junit"),
49
50             // XML Router API packages.
51             mavenBundle().groupId("org.wamblee.xmlrouter")
52                 .artifactId("xmlrouter-common").versionAsInProject(),//
53             mavenBundle().groupId("org.wamblee.xmlrouter")
54                 .artifactId("xmlrouter-config").versionAsInProject(),//
55             mavenBundle().groupId("org.wamblee.xmlrouter")
56                 .artifactId("xmlrouter-publish").versionAsInProject(),//
57             mavenBundle().groupId("org.wamblee.xmlrouter")
58                 .artifactId("xmlrouter-subscribe").versionAsInProject(),//
59             mavenBundle().groupId("org.wamblee.xmlrouter")
60                 .artifactId("xmlrouter-listener").versionAsInProject(),//
61
62             // XML Router bundle.
63             mavenBundle().groupId("org.wamblee.xmlrouter")
64                 .artifactId("xmlrouter-router-bundle").versionAsInProject(), //
65
66             // OSGI runtimes
67             felix());
68     }
69
70     @Test
71     public void test1(BundleContext aContext) throws InterruptedException {
72         System.out.println("=== Got context " + aContext);
73
74         Destination dest = mock(Destination.class);
75         ServiceRegistration registration = aContext.registerService(
76             Destination.class.getName(), dest, null);
77
78         Thread.sleep(5000);
79         verify(dest, atLeastOnce()).receive(any(DOMSource.class));
80
81         registration.unregister();
82     }
83 }