| /******************************************************************************* |
| * Copyright (c) 2008, 2010 VMware Inc. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * VMware Inc. - initial contribution |
| *******************************************************************************/ |
| |
| package org.eclipse.virgo.snaps.core.internal; |
| |
| import static org.easymock.EasyMock.createMock; |
| import static org.easymock.EasyMock.expect; |
| import static org.easymock.EasyMock.replay; |
| import static org.easymock.EasyMock.verify; |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.assertNull; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.util.Dictionary; |
| import java.util.Hashtable; |
| import java.util.Set; |
| |
| import org.eclipse.virgo.util.osgi.manifest.BundleManifest; |
| import org.junit.Test; |
| import org.osgi.framework.Bundle; |
| import org.springframework.mock.web.MockHttpServletRequest; |
| |
| public class SnapUtilsTests { |
| |
| @Test |
| public void determineSnapContextPathFromDeepPathInfo() { |
| MockHttpServletRequest request = new MockHttpServletRequest(); |
| request.setServletPath("/hotels/booking/index"); |
| String contextPath = SnapUtils.determineSnapContextPath(request); |
| assertEquals("/hotels", contextPath); |
| } |
| |
| @Test |
| public void determineSnapContextPathFromPathInfo() { |
| MockHttpServletRequest request = new MockHttpServletRequest(); |
| request.setServletPath("/hotels/booking"); |
| String contextPath = SnapUtils.determineSnapContextPath(request); |
| assertEquals("/hotels", contextPath); |
| } |
| |
| @Test |
| public void determineSnapContextPathFromStraightPathInfo() { |
| MockHttpServletRequest request = new MockHttpServletRequest(); |
| request.setServletPath("/hotels"); |
| String contextPath = SnapUtils.determineSnapContextPath(request); |
| assertEquals("/hotels", contextPath); |
| } |
| |
| @Test |
| public void hasSnapHostHeaderTrue() { |
| BundleManifest manifest = createMock(BundleManifest.class); |
| expect(manifest.getHeader(SnapUtils.HEADER_SNAP_HOST)).andReturn("foo"); |
| |
| replay(manifest); |
| assertTrue(SnapUtils.hasSnapHostHeader(manifest)); |
| verify(manifest); |
| } |
| |
| @Test |
| public void hasSnapHostHeaderFalse() { |
| BundleManifest manifest = createMock(BundleManifest.class); |
| expect(manifest.getHeader(SnapUtils.HEADER_SNAP_HOST)).andReturn(null); |
| |
| replay(manifest); |
| assertFalse(SnapUtils.hasSnapHostHeader(manifest)); |
| verify(manifest); |
| } |
| |
| @Test |
| public void getSnapHostHeader() { |
| BundleManifest manifest = createMock(BundleManifest.class); |
| expect(manifest.getHeader(SnapUtils.HEADER_SNAP_HOST)).andReturn("travel;version=\"[1.2, 1.3)\""); |
| |
| replay(manifest); |
| Set<SnapHostDefinition> header = SnapUtils.getSnapHostHeader(manifest); |
| assertEquals(1, header.size()); |
| |
| assertNotNull(header); |
| assertEquals("travel", header.iterator().next().getSymbolicName()); |
| verify(manifest); |
| } |
| |
| @Test |
| public void getSnapHostHeaderNull() { |
| BundleManifest manifest = createMock(BundleManifest.class); |
| expect(manifest.getHeader(SnapUtils.HEADER_SNAP_HOST)).andReturn(null); |
| |
| replay(manifest); |
| Set<SnapHostDefinition> header = SnapUtils.getSnapHostHeader(manifest); |
| assertNull(header); |
| verify(manifest); |
| } |
| |
| @Test |
| public void getSnapContextPath() { |
| Dictionary<String, String> p = new Hashtable<String, String>(); |
| p.put(SnapUtils.HEADER_SNAP_CONTEXT_PATH, "snap"); |
| |
| Bundle bundle = createMock(Bundle.class); |
| expect(bundle.getHeaders()).andReturn(p); |
| |
| replay(bundle); |
| assertEquals("snap", SnapUtils.getSnapContextPath(bundle)); |
| verify(bundle); |
| } |
| |
| @Test |
| public void getDefaultSnapContextPath() { |
| Dictionary<String, String> p = new Hashtable<String, String>(); |
| |
| Bundle bundle = createMock(Bundle.class); |
| expect(bundle.getHeaders()).andReturn(p); |
| expect(bundle.getLocation()).andReturn("file:../foo/mysnap.jar"); |
| |
| replay(bundle); |
| assertEquals("mysnap", SnapUtils.getSnapContextPath(bundle)); |
| verify(bundle); |
| } |
| } |