dnet-core/dnet-information-service/src/test/java/eu/dnetlib/enabling/is/registry/CompatPendingResourceManage...

150 lines
4.6 KiB
Java

package eu.dnetlib.enabling.is.registry;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import javax.xml.xpath.XPathExpressionException;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import eu.dnetlib.enabling.is.registry.rmi.ISRegistryException;
import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
import eu.dnetlib.enabling.is.registry.schema.ValidationException;
import eu.dnetlib.enabling.is.registry.validation.ProfileValidationStrategy;
import eu.dnetlib.enabling.is.registry.validation.RegistrationPhase;
import eu.dnetlib.enabling.tools.OpaqueResource;
/**
* test compatibility pending resource manager implementation.
*
* @author marko
*
*/
@RunWith(MockitoJUnitRunner.class)
public class CompatPendingResourceManagerImplTest {
/**
* instance under test.
*/
private transient CompatPendingResourceManagerImpl pendingManager;
/**
* registry service mock.
*/
@Mock
private transient ISRegistryService registryService;
/**
* resource mock.
*/
@Mock
private transient OpaqueResource resource;
/**
* used to validate resources w.r.t. a set of defined properties.
*/
@Mock
private ProfileValidationStrategy profileValidationStrategy;
/**
* prepare instance for testing.
*/
@Before
public void setUp() {
pendingManager = new CompatPendingResourceManagerImpl();
pendingManager.setIsRegistry(registryService);
pendingManager.setResourceKindResolver(new ApplicationProfileResourceKindResolver());
pendingManager.setProfileValidationStrategy(profileValidationStrategy);
}
/**
* test that the application profile can be queried correctly.
*
* @throws XPathExpressionException
* shouldn't happen
*/
@Test
public void testGetPendingKindForType() throws XPathExpressionException {
assertEquals("check pending", "PendingRepositoryResources", pendingManager.getPendingKindForType("RepositoryServiceResourceType"));
assertEquals("check pending", "PendingDSResources", pendingManager.getPendingKindForType("UserDSResourceType"));
}
/**
* check that unexistent types throw an exception.
*
* @throws XPathExpressionException
* shouldn't happen
*/
@Test(expected = IllegalStateException.class)
public void testGetPendingKindForNoSuchType() throws XPathExpressionException {
pendingManager.getPendingKindForType("NoSuchType");
}
/**
* test that the application profile can be queried correctly.
*
* @throws XPathExpressionException
* shouldn't happen
*/
@Test
public void testGetNormalKindForType() throws XPathExpressionException {
assertEquals("check kind", "RepositoryServiceResources", pendingManager.getNormalKindForType("RepositoryServiceResourceType"));
assertEquals("check kind", "UserDSResources", pendingManager.getNormalKindForType("UserDSResourceType"));
assertNull("check unexisting type", pendingManager.getNormalKindForType("NoSuchType"));
}
/**
* test that the resource is correctly moved from the pending collection to the new collection.
*
* @throws ISRegistryException
* shoudn't happen
* @throws ValidationException
*/
@Test
public void testSetValid() throws ISRegistryException, ValidationException {
final String profId = "123";
when(resource.asString()).thenReturn("");
when(resource.getResourceId()).thenReturn(profId);
//when(profileValidationStrategy.accept(any(OpaqueResource.class), eq(RegistrationPhase.Register))).thenReturn(true);
pendingManager.setValid(resource);
verify(registryService).deleteProfile(profId);
verify(registryService).registerProfile(anyString());
assertNotNull("dummy", registryService);
}
/**
* test that the resource is correctly moved from the current collection to the correct pending collection.
*
* @throws ISRegistryException
* shoudn't happen
*/
@Test
public void testSetPending() throws ISRegistryException {
final String profId = "321";
when(resource.asString()).thenReturn("");
when(resource.getResourceId()).thenReturn(profId);
when(resource.getResourceType()).thenReturn("RepositoryServiceResourceType");
pendingManager.setPending(resource);
verify(registryService).deleteProfile(profId);
verify(registryService).registerProfile(anyString());
assertNotNull("dummy", registryService);
}
}