package org.ovirt.engine.api.restapi.resource.validation; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import javax.ws.rs.core.PathSegment; import javax.ws.rs.core.Request; import javax.ws.rs.core.UriInfo; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.ovirt.engine.api.model.Fault; public class UsageFinderTest extends Assert { private UsageFinder usageFinder; @Before public void init() { usageFinder = new UsageFinder(); } @Test public void testAdd() { try { UriInfo uriInfo = mockUri("hosts", "00000001-0001-0001-0001-000000000011", "nics"); Request request = mockRequest("POST"); Fault fault = usageFinder.getUsageMessage(uriInfo, request); assertEquals("For correct usage, see: http://localhost:8080/ovirt-engine/api/model#services/host-nics/methods/add", fault.getDetail()); } catch (ClassNotFoundException | IOException | URISyntaxException e) { fail(); } } @Test public void testAction() { try { UriInfo uriInfo = mockUri("vms", "00000001-0001-0001-0001-000000000011", "freezefilesystems"); Request request = mockRequest("POST"); Fault fault = usageFinder.getUsageMessage(uriInfo, request); assertEquals( "For correct usage, see: http://localhost:8080/ovirt-engine/api/model#services/vm/methods/freeze-filesystems", fault.getDetail()); } catch (URISyntaxException | ClassNotFoundException | IOException e) { fail(); } } @Test public void testUpdateWithNonGuidId() { try { UriInfo uriInfo = mockUri("hosts", "00000001-0001-0001-0001-000000000011", "nics", "116"); //LUN id. Request request = mockRequest("PUT"); Fault fault = usageFinder.getUsageMessage(uriInfo, request); assertEquals("For correct usage, see: http://localhost:8080/ovirt-engine/api/model#services/host-nic/methods/update", fault.getDetail()); } catch (URISyntaxException | ClassNotFoundException | IOException e) { fail(); } } private Request mockRequest(String httpMethod) { Request requestMock = mock(Request.class); when(requestMock.getMethod()).thenReturn(httpMethod); return requestMock; } private UriInfo mockUri(String...strings) throws URISyntaxException { UriInfo uriInfoMock = mock(UriInfo.class); when(uriInfoMock.getBaseUri()).thenReturn(new URI("http://localhost:8080/ovirt-engine/api/")); List<PathSegment> pathSegments = new ArrayList<>(); for (String s : strings) { PathSegment segment = mock(PathSegment.class); when(segment.getPath()).thenReturn(s); pathSegments.add(segment); } when(uriInfoMock.getPathSegments()).thenReturn(pathSegments); return uriInfoMock; } }