package de.twenty11.skysail.server.ext.osgimonitor.resources; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.codehaus.jackson.type.TypeReference; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.Version; import org.restlet.Context; import org.restlet.Request; import org.restlet.representation.Representation; import de.twenty11.skysail.common.ext.osgimonitor.domain.BundleDescriptor; import de.twenty11.skysail.common.responses.SkysailResponse; import de.twenty11.skysail.server.ext.osgimonitor.OsgiMonitorViewerApplication; import de.twenty11.skysail.server.ext.osgimonitor.domain.BundleDetails; import de.twenty11.skysail.server.ext.osgimonitor.test.BaseTests; public class BundleResourceTest extends BaseTests { private BundleResource bundleResource; private Bundle bundle; @Before public void setUp() throws Exception { OsgiMonitorViewerApplication spy = setUpRestletApplication(); BundleContext bundleContext = mock(BundleContext.class); bundle = mock(Bundle.class); when(bundle.getBundleId()).thenReturn(99l); when(bundle.getSymbolicName()).thenReturn("symbolic"); when(bundle.getLastModified()).thenReturn(111l); when(bundleContext.getBundle(99l)).thenReturn(bundle); when(bundle.getVersion()).thenReturn(new Version("1.0.0")); when(spy.getBundleContext()).thenReturn(bundleContext); Context context = mock(Context.class); when(context.getAttributes()).thenReturn(new ConcurrentHashMap<String, Object>()); bundleResource = new BundleResource(); Request request = mock(Request.class); ConcurrentMap<String, Object> attributes = new ConcurrentHashMap<String, Object>(); attributes.putIfAbsent("bundleId", "99"); when(request.getAttributes()).thenReturn(attributes); bundleResource.init(context, request, null); } @Test @Ignore public void getBundle_returns_bundleDetails_for_bundleId_from_request() throws Exception { SkysailResponse<BundleDetails> bundle = bundleResource.getBundle(); BundleDescriptor details = bundle.getData(); assertThat(details.getBundleId(), is(equalTo(99l))); } @Test @Ignore // TODO public void canIssue_GET_request() throws Exception { org.restlet.Response response = get("bundles/details/99"); assertDefaults(response); Representation entity = response.getEntity(); System.out.println(entity.getText()); SkysailResponse<BundleDetails> skysailResponse = mapper.readValue(entity.getText(), new TypeReference<SkysailResponse<BundleDetails>>() { }); // assertThat(skysailResponse.getMessage(), skysailResponse.getSuccess(), is(true)); } @Test @Ignore public void canIssue_PUT_request_to_start_bundle() throws Exception { org.restlet.Response response = put("bundles/details/99/start"); assertDefaults(response); Representation entity = response.getEntity(); assertThat(entity.getText(), is(equalTo("Success!"))); verify(bundle).start(); } @Test @Ignore public void canIssue_PUT_request_to_stop_bundle() throws Exception { org.restlet.Response response = put("bundles/details/99/stop"); assertDefaults(response); Representation entity = response.getEntity(); assertThat(entity.getText(), is(equalTo("Success!"))); verify(bundle).stop(); } @Test @Ignore public void canIssue_PUT_request_to_update_bundle() throws Exception { org.restlet.Response response = put("bundles/details/99/update"); assertDefaults(response); Representation entity = response.getEntity(); assertThat(entity.getText(), is(equalTo("Success!"))); verify(bundle).update(); } }