/******************************************************************************* * 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.kernel.install.artifact.internal; import org.eclipse.virgo.kernel.install.artifact.ArtifactIdentity; import org.eclipse.virgo.repository.ArtifactBridge; import org.eclipse.virgo.repository.ArtifactDescriptor; import org.eclipse.virgo.repository.ArtifactGenerationException; import org.junit.Test; import org.osgi.framework.Version; import java.io.File; import java.util.Arrays; import java.util.Collections; import java.util.LinkedHashSet; import static org.easymock.EasyMock.*; import static org.junit.Assert.*; public class StandardArtifactIdentityDeterminerTests { private static final File TEST_FILE = new File("test"); @Test public void identityWithoutBridge() { ArtifactIdentity identity = new StandardArtifactIdentityDeterminer(Collections.<ArtifactBridge>emptySet()).determineIdentity(TEST_FILE, null); assertNull(identity); } @Test public void identityFromBridge() throws ArtifactGenerationException { ArtifactDescriptor artifactDescriptor = createArtifactDescriptorMock(); ArtifactBridge bridge = createArtifactBridgeMock(artifactDescriptor); checkIdentityDeterminer(bridge); verify(artifactDescriptor, bridge); } @Test public void identityFromBridgeThrowingException() throws ArtifactGenerationException { ArtifactDescriptor artifactDescriptor = createArtifactDescriptorMock(); ArtifactBridge interestedBridge = createArtifactBridgeMock(artifactDescriptor); ArtifactBridge throwingBridge = createMock(ArtifactBridge.class); expect(throwingBridge.generateArtifactDescriptor(new File("test"))).andThrow(new ArtifactGenerationException("Illegal argument")); replay(throwingBridge); assertNull(new StandardArtifactIdentityDeterminer(new LinkedHashSet<ArtifactBridge>(Arrays.asList(throwingBridge, interestedBridge))).determineIdentity(new File("test"), null)); } @Test public void identityFromSeveralBridges() throws ArtifactGenerationException { ArtifactDescriptor artifactDescriptor = createArtifactDescriptorMock(); ArtifactBridge interestedBridge = createArtifactBridgeMock(artifactDescriptor); ArtifactBridge throwingBridge = createMock(ArtifactBridge.class); ArtifactBridge uninterestedBridge = createMock(ArtifactBridge.class); expect(uninterestedBridge.generateArtifactDescriptor(TEST_FILE)).andReturn(null); replay(throwingBridge, uninterestedBridge); checkIdentityDeterminer(uninterestedBridge, interestedBridge, throwingBridge); verify(artifactDescriptor, throwingBridge, interestedBridge, uninterestedBridge); } private ArtifactDescriptor createArtifactDescriptorMock() throws ArtifactGenerationException { ArtifactDescriptor artifactDescriptor = createMock(ArtifactDescriptor.class); expect(artifactDescriptor.getType()).andReturn("foo"); expect(artifactDescriptor.getName()).andReturn("bar"); expect(artifactDescriptor.getVersion()).andReturn(new Version(1, 2, 3)); replay(artifactDescriptor); return artifactDescriptor; } private ArtifactBridge createArtifactBridgeMock(ArtifactDescriptor descriptor) throws ArtifactGenerationException { ArtifactBridge bridge = createMock(ArtifactBridge.class); expect(bridge.generateArtifactDescriptor(new File("test"))).andReturn(descriptor); replay(bridge); return bridge; } private void checkIdentityDeterminer(ArtifactBridge... bridges) { ArtifactIdentity artifactIdentity = new StandardArtifactIdentityDeterminer(new LinkedHashSet<ArtifactBridge>(Arrays.asList(bridges))).determineIdentity(TEST_FILE, null); assertNotNull(artifactIdentity); assertEquals("foo", artifactIdentity.getType()); assertEquals("bar", artifactIdentity.getName()); assertEquals(new Version(1, 2, 3), artifactIdentity.getVersion()); } }