unified test setup and fixed further permission based test failures

This commit is contained in:
Kai Börnert committed 2018-10-17 14:31:11 +02:00
1 parent 89781b5028
commit 18cf7403fa
13 files changed
+142 -126

No files matched your search

@@ -10,15 +10,24 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import javax.ws.rs.core.Response;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.impl.CompetitorImpl;
import com.sap.sailing.domain.base.impl.NationalityImpl;
import com.sap.sailing.domain.base.impl.PersonImpl;
import com.sap.sailing.domain.base.impl.TeamImpl;
import com.sap.sailing.domain.racelog.tracking.test.mock.MockSmartphoneUuidServiceFinderFactory;
import com.sap.sailing.domain.racelogtracking.RaceLogTrackingAdapterFactory;
import com.sap.sailing.server.RacingEventService;
import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource;
import com.sap.sailing.server.impl.RacingEventServiceImpl;
@@ -27,21 +36,89 @@ import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.mongodb.MongoDBConfiguration;
import com.sap.sse.mongodb.MongoDBService;
import com.sap.sse.security.ActionWithResult;
import com.sap.sse.security.SecurityService;
import com.sap.sse.security.shared.UserGroup;
import com.sap.sse.security.shared.WithQualifiedObjectIdentifier;
import com.sap.sse.security.shared.impl.UserGroupImpl;
public abstract class AbstractJaxRsApiTest {
protected RacingEventService racingEventService;
protected MongoDBService service;
protected MongoDBService service;
protected SecurityService securityService;
protected DummyEventsRessource eventsResource;
protected DummyRegattasResource regattasResource;
protected DummyLeaderboardGroupsResource leaderboardGroupsResource;
protected DummyLeaderboardsResource leaderboardsResource;
protected DummyBoatsResource boatsResource;
protected DummyCompetitorsResource competitorsResource;
protected static SimpleDateFormat TIMEPOINT_FORMATTER = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
@SuppressWarnings("unchecked")
public void setUp() throws Exception {
service = MongoDBConfiguration.getDefaultTestConfiguration().getService();
service.getDB().dropDatabase();
racingEventService = new RacingEventServiceImpl(/* clearPersistentCompetitorStore */ true,
new MockSmartphoneUuidServiceFinderFactory(), /* restoreTrackedRaces */ false);
UserGroupImpl defaultTenant = new UserGroupImpl(new UUID(0, 1), "defaultTenant");
securityService = Mockito.mock(SecurityService.class);
SecurityManager securityManager = Mockito.mock(org.apache.shiro.mgt.SecurityManager.class);
Subject fakeSubject = Mockito.mock(Subject.class);
SecurityUtils.setSecurityManager(securityManager);
Mockito.doReturn(fakeSubject).when(securityManager).createSubject(Mockito.any());
Mockito.doReturn(defaultTenant).when(securityService).getDefaultTenant();
Mockito.doAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
return invocation.getArgumentAt(4, ActionWithResult.class).run();
}
}).when(securityService).setOwnershipCheckPermissionForObjectCreationAndRevertOnError(Mockito.anyString(),
Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
Mockito.doAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
return invocation.getArgumentAt(4, ActionWithResult.class).run();
}
}).when(securityService).setOwnershipCheckPermissionForObjectCreationAndRevertOnError(
Mockito.any(UserGroup.class), Mockito.any(), Mockito.any(), Mockito.any(),
Mockito.any(ActionWithResult.class));
Mockito.doReturn(true).when(securityService)
.hasCurrentUserReadPermission(Mockito.any(WithQualifiedObjectIdentifier.class));
Mockito.doNothing().when(securityService).checkCurrentUserReadPermission(Mockito.any());
Mockito.doReturn(true).when(fakeSubject).isAuthenticated();
eventsResource = spyResource(new DummyEventsRessource());
doReturn(getSecurityService()).when(eventsResource).getSecurityService();
regattasResource = spyResource(new DummyRegattasResource());
doReturn(getSecurityService()).when(regattasResource).getSecurityService();
leaderboardGroupsResource = spyResource(new DummyLeaderboardGroupsResource());
doReturn(getSecurityService()).when(leaderboardGroupsResource).getSecurityService();
leaderboardsResource = spyResource(new DummyLeaderboardsResource());
doReturn(getSecurityService()).when(leaderboardsResource).getSecurityService();
boatsResource = spyResource(new DummyBoatsResource());
doReturn(getSecurityService()).when(boatsResource).getSecurityService();
competitorsResource = spyResource(new DummyCompetitorsResource());
doReturn(getSecurityService()).when(competitorsResource).getSecurityService();
doReturn(RaceLogTrackingAdapterFactory.INSTANCE.getAdapter(racingEventService.getBaseDomainFactory()))
.when(leaderboardsResource).getRaceLogTrackingAdapter();
}
protected <T extends AbstractSailingServerResource> T spyResource(T resource) {
public SecurityService getSecurityService() {
return securityService;
}
private <T extends AbstractSailingServerResource> T spyResource(T resource) {
T spyResource = spy(resource);
doReturn(racingEventService).when(spyResource).getService();
return spyResource;
@@ -12,7 +12,6 @@ import com.sap.sailing.domain.base.impl.BoatClassImpl;
import com.sap.sailing.domain.base.impl.DynamicBoat;
import com.sap.sailing.server.gateway.deserialization.impl.BoatJsonDeserializer;
import com.sap.sailing.server.gateway.deserialization.impl.Helpers;
import com.sap.sailing.server.gateway.jaxrs.api.BoatsResource;
public class BoatResourceTest extends AbstractJaxRsApiTest {
private final String id = "af855a56-9726-4a9c-a77e-da955bd289be";
@@ -29,8 +28,7 @@ public class BoatResourceTest extends AbstractJaxRsApiTest {
@Test
public void testGetBoatAsJson() throws Exception {
BoatsResource resource = spyResource(new BoatsResource());
String jsonString = resource.getBoat(id).getEntity().toString();
String jsonString = boatsResource.getBoat(id).getEntity().toString();
BoatJsonDeserializer boatJsonDeserializer = BoatJsonDeserializer.create(racingEventService.getBaseDomainFactory());
JSONObject jsonObject = Helpers.toJSONObjectSafe(JSONValue.parse(jsonString));
@@ -23,7 +23,6 @@ import com.sap.sailing.domain.base.impl.NationalityImpl;
import com.sap.sailing.domain.base.impl.PersonImpl;
import com.sap.sailing.domain.base.impl.TeamImpl;
import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants;
import com.sap.sailing.server.gateway.jaxrs.api.CompetitorsResource;
import com.sap.sse.filestorage.FileStorageManagementService;
import com.sap.sse.filestorage.FileStorageService;
import com.sap.sse.filestorage.InvalidPropertiesException;
@@ -56,7 +55,6 @@ public class CompetitorsResourceTeamImageTest extends AbstractJaxRsApiTest {
public void storeAndRemoveTeamImage() throws URISyntaxException, ParseException, MalformedURLException,
IOException, OperationFailedException, InvalidPropertiesException {
//set team image
CompetitorsResource r = spyResource(new CompetitorsResource());
String fileExtension = teamImageFile.substring(teamImageFile.lastIndexOf("."));;
InputStream stream = getClass().getResourceAsStream("/" + teamImageFile);
@@ -65,7 +63,7 @@ public class CompetitorsResourceTeamImageTest extends AbstractJaxRsApiTest {
// URL has the bundleresource:// scheme instead of file:, which File() can't handle
long length = stream.available();
String jsonString = r.setTeamImage(id, stream, fileExtension, length);
String jsonString = competitorsResource.setTeamImage(id, stream, fileExtension, length);
//now download and compare
JSONObject json = (JSONObject) JSONValue.parseWithException(jsonString);
@@ -14,7 +14,6 @@ import com.sap.sailing.domain.base.impl.NationalityImpl;
import com.sap.sailing.domain.base.impl.PersonImpl;
import com.sap.sailing.domain.base.impl.TeamImpl;
import com.sap.sailing.server.gateway.deserialization.impl.Helpers;
import com.sap.sailing.server.gateway.jaxrs.api.CompetitorsResource;
public class CompetitorsResourceTest extends AbstractJaxRsApiTest {
private final String name = "Heiko KRÖGER";
@@ -32,8 +31,7 @@ public class CompetitorsResourceTest extends AbstractJaxRsApiTest {
@Test
public void testGetCompetitorAsJson() throws Exception {
CompetitorsResource resource = spyResource(new CompetitorsResource());
String jsonString = resource.getCompetitor(id).getEntity().toString();
String jsonString = competitorsResource.getCompetitor(id).getEntity().toString();
JSONObject json = Helpers.toJSONObjectSafe(JSONValue.parse(jsonString));
assertTrue(json.get("id").equals(id));
assertTrue(json.get("name").equals(name));
@@ -0,0 +1,14 @@
package com.sap.sailing.server.gateway.test.jaxrs;
import com.sap.sailing.server.gateway.jaxrs.api.BoatsResource;
import com.sap.sse.security.SecurityService;
/**
* Required so mockito has visibility to getSecurityService
*/
public class DummyBoatsResource extends BoatsResource {
@Override
protected SecurityService getSecurityService() {
return super.getSecurityService();
}
}
@@ -0,0 +1,14 @@
package com.sap.sailing.server.gateway.test.jaxrs;
import com.sap.sailing.server.gateway.jaxrs.api.CompetitorsResource;
import com.sap.sse.security.SecurityService;
/**
* Required so mockito has visibility to getSecurityService
*/
public class DummyCompetitorsResource extends CompetitorsResource {
@Override
protected SecurityService getSecurityService() {
return super.getSecurityService();
}
}
@@ -3,7 +3,6 @@ package com.sap.sailing.server.gateway.test.jaxrs;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -16,89 +15,27 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import com.sap.sailing.domain.common.NotFoundException;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.impl.DegreePosition;
import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource;
import com.sap.sailing.server.gateway.jaxrs.api.AbstractLeaderboardsResource;
import com.sap.sse.InvalidDateException;
import com.sap.sse.security.ActionWithResult;
import com.sap.sse.security.SecurityService;
import com.sap.sse.security.shared.UserGroup;
import com.sap.sse.security.shared.WithQualifiedObjectIdentifier;
import com.sap.sse.security.shared.impl.UserGroupImpl;
public class EventResourceTest extends AbstractJaxRsApiTest {
private DummyEventsRessource eventsResource;
private DummyRegattasResource regattasResource;
private DummyLeaderboardGroupsResource leaderboardGroupsResource;
private DummyLeaderboardsResource leaderboardsResource;
private String randomName;
private UriInfo uriInfo;
@SuppressWarnings("unchecked")
@Before
public void setUp() throws Exception {
super.setUp();
uriInfo = mock(UriInfo.class);
when(uriInfo.getBaseUri()).thenReturn(new URI("http://127.0.0.1:8888/"));
UserGroupImpl defaultTenant = new UserGroupImpl(new UUID(0, 1), "defaultTenant");
SecurityService securityService = Mockito.mock(SecurityService.class);
SecurityManager securityManager = Mockito.mock(org.apache.shiro.mgt.SecurityManager.class);
Subject fakeSubject = Mockito.mock(Subject.class);
SecurityUtils.setSecurityManager(securityManager);
Mockito.doReturn(fakeSubject).when(securityManager).createSubject(Mockito.any());
Mockito.doReturn(defaultTenant).when(securityService).getDefaultTenant();
Mockito.doAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
return invocation.getArgumentAt(4, ActionWithResult.class).run();
}
}).when(securityService).setOwnershipCheckPermissionForObjectCreationAndRevertOnError(
Mockito.anyString(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
Mockito.doAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
return invocation.getArgumentAt(4, ActionWithResult.class).run();
}
}).when(securityService).setOwnershipCheckPermissionForObjectCreationAndRevertOnError(
Mockito.any(UserGroup.class), Mockito.any(), Mockito.any(), Mockito.any(),
Mockito.any(ActionWithResult.class));
Mockito.doReturn(true).when(securityService)
.hasCurrentUserReadPermission(Mockito.any(WithQualifiedObjectIdentifier.class));
Mockito.doNothing().when(securityService)
.checkCurrentUserReadPermission(Mockito.any());
Mockito.doReturn(true).when(fakeSubject).isAuthenticated();
eventsResource = createResource(new DummyEventsRessource());
doReturn(securityService).when(eventsResource).getSecurityService();
regattasResource = createResource(new DummyRegattasResource());
doReturn(securityService).when(regattasResource).getSecurityService();
leaderboardGroupsResource = createResource(new DummyLeaderboardGroupsResource());
doReturn(securityService).when(leaderboardGroupsResource).getSecurityService();
leaderboardsResource = createResource(new DummyLeaderboardsResource());
doReturn(securityService).when(leaderboardsResource).getSecurityService();
randomName = randomName();
}
@@ -304,10 +241,6 @@ public class EventResourceTest extends AbstractJaxRsApiTest {
return (String) toJSONObject((String) createEventResponse.getEntity()).get("eventid");
}
private <T extends AbstractSailingServerResource> T createResource(T resource){
return spyResource(resource);
}
private String getEventAsString(String eventId) {
return (String) eventsResource.getEvent(eventId).getEntity();
}
@@ -27,7 +27,6 @@ import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithStartTimeAndRanks;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.gateway.jaxrs.api.LeaderboardGroupsResource;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
@@ -78,9 +77,7 @@ public class LeaderboardGroupResourceTest extends AbstractJaxRsApiTest {
@Test
public void testExportLeaderboardGroupsAsJson() throws Exception {
LeaderboardGroupsResource resource = new LeaderboardGroupsResource();
LeaderboardGroupsResource spyResource = spyResource(resource);
Response leaderboardGroupsResponse = spyResource.getLeaderboardGroups();
Response leaderboardGroupsResponse = leaderboardGroupsResource.getLeaderboardGroups();
String jsonString = (String) leaderboardGroupsResponse.getEntity();
Object obj= JSONValue.parse(jsonString);
@@ -38,7 +38,6 @@ import com.sap.sailing.domain.racelogtracking.DeviceMapping;
import com.sap.sailing.domain.racelogtracking.DeviceMappingWithRegattaLogEvent;
import com.sap.sailing.domain.racelogtracking.SmartphoneUUIDIdentifier;
import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
import com.sap.sailing.server.gateway.jaxrs.api.LeaderboardsResource;
import com.sap.sse.common.Util;
import com.sap.sse.common.impl.MillisecondsTimePoint;
@@ -68,7 +67,6 @@ public class LeaderboardsResourceCheckinAndOutTest extends AbstractJaxRsApiTest
@Test
public void testCheckinAndCheckout() throws Exception {
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
UUID deviceUuid = UUID.randomUUID();
// checkin
@@ -78,7 +76,7 @@ public class LeaderboardsResourceCheckinAndOutTest extends AbstractJaxRsApiTest
json.put(DeviceMappingConstants.JSON_DEVICE_UUID, deviceUuid.toString());
json.put(DeviceMappingConstants.JSON_FROM_MILLIS, fromMillis);
Response response = resource.postCheckin(json.toString(), leaderboard.getName());
Response response = leaderboardsResource.postCheckin(json.toString(), leaderboard.getName());
assertThat("checkin returns OK", response.getStatus(), equalTo(Response.Status.OK.getStatusCode()));
Iterable<Competitor> registeredCompetitors = new CompetitorsInLogAnalyzer<>(log).analyze();
@@ -103,7 +101,7 @@ public class LeaderboardsResourceCheckinAndOutTest extends AbstractJaxRsApiTest
json.put(DeviceMappingConstants.JSON_COMPETITOR_ID_AS_STRING, competitor.getId().toString());
json.put(DeviceMappingConstants.JSON_DEVICE_UUID, deviceUuid.toString());
response = resource.postCheckout(json.toString(), leaderboard.getName());
response = leaderboardsResource.postCheckout(json.toString(), leaderboard.getName());
assertThat("checkout returns OK", response.getStatus(), equalTo(Response.Status.OK.getStatusCode()));
mappings = new RegattaLogDeviceCompetitorMappingFinder(log).analyze();
@@ -2,7 +2,6 @@ package com.sap.sailing.server.gateway.test.jaxrs;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.mockito.Mockito.doReturn;
import java.util.Arrays;
import java.util.Collections;
@@ -27,9 +26,7 @@ import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
import com.sap.sailing.domain.leaderboard.impl.HighPoint;
import com.sap.sailing.domain.racelogtracking.DeviceMappingWithRegattaLogEvent;
import com.sap.sailing.domain.racelogtracking.RaceLogTrackingAdapterFactory;
import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
import com.sap.sailing.server.gateway.jaxrs.api.LeaderboardsResource;
import com.sap.sse.common.NoCorrespondingServiceRegisteredException;
import com.sap.sse.common.impl.MillisecondsTimePoint;
@@ -71,10 +68,9 @@ public class LeaderboardsResourcePingMarkTest extends AbstractJaxRsApiTest {
@Test
public void testCheckinAndCheckout() throws Exception {
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
doReturn(RaceLogTrackingAdapterFactory.INSTANCE.getAdapter(racingEventService.getBaseDomainFactory())).when(resource).getRaceLogTrackingAdapter();
{
Response response = resource.pingMark(PING_MARK_JSON, leaderboard.getName(), mark.getId().toString());
Response response = leaderboardsResource.pingMark(PING_MARK_JSON, leaderboard.getName(),
mark.getId().toString());
assertThat("response is ok", response.getStatus(), equalTo(Response.Status.OK.getStatusCode()));
Map<Mark, List<DeviceMappingWithRegattaLogEvent<Mark>>> mappings = new RegattaLogDeviceMarkMappingFinder(
log).analyze();
@@ -85,7 +81,8 @@ public class LeaderboardsResourcePingMarkTest extends AbstractJaxRsApiTest {
{
// now produce a second ping; this should produce also only one fix; no additional artificial fixes are
// created (anymore; they used to be before bug2851)
Response response = resource.pingMark(PING2_MARK_JSON, leaderboard.getName(), mark.getId().toString());
Response response = leaderboardsResource.pingMark(PING2_MARK_JSON, leaderboard.getName(),
mark.getId().toString());
assertThat("response is ok", response.getStatus(), equalTo(Response.Status.OK.getStatusCode()));
Map<Mark, List<DeviceMappingWithRegattaLogEvent<Mark>>> mappings = new RegattaLogDeviceMarkMappingFinder(
log).analyze();
@@ -32,7 +32,6 @@ import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithStartTimeAndRanks;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.gateway.jaxrs.api.AbstractLeaderboardsResource;
import com.sap.sailing.server.gateway.jaxrs.api.LeaderboardsResource;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
@@ -83,8 +82,8 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
public void testExportEmptyLeaderboardAsJson() throws Exception {
dropAndCreateRegatta();
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
Response leaderboardReponse = leaderboardsResource.getLeaderboard(regatta.getName(),
AbstractLeaderboardsResource.ResultStates.Final, null);
String jsonString = (String) leaderboardReponse.getEntity();
Object obj= JSONValue.parse(jsonString);
@@ -108,8 +107,8 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
public void testExportLeaderboardWithFinalResultStateAsJson() throws Exception {
dropAndCreateRegatta();
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
Response leaderboardReponse = leaderboardsResource.getLeaderboard(regatta.getName(),
AbstractLeaderboardsResource.ResultStates.Final, null);
String jsonString = (String) leaderboardReponse.getEntity();
Object obj= JSONValue.parse(jsonString);
@@ -126,8 +125,8 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
regattaLeaderboard.getScoreCorrection().setTimePointOfLastCorrectionsValidity(MillisecondsTimePoint.now());
LeaderboardsResource resource2 = spyResource(new LeaderboardsResource());
Response leaderboardReponse2 = resource2.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
Response leaderboardReponse2 = leaderboardsResource.getLeaderboard(regatta.getName(),
AbstractLeaderboardsResource.ResultStates.Final, null);
String jsonString2 = (String) leaderboardReponse2.getEntity();
obj= JSONValue.parse(jsonString2);
@@ -140,8 +139,8 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
@Test
public void testExportLeaderboardWithLiveResultStateAsJson() throws Exception {
dropAndCreateRegatta();
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Live, null);
Response leaderboardReponse = leaderboardsResource.getLeaderboard(regatta.getName(),
AbstractLeaderboardsResource.ResultStates.Live, null);
String jsonString = (String) leaderboardReponse.getEntity();
Object obj= JSONValue.parse(jsonString);
JSONObject jsonObject = (JSONObject) obj;
@@ -165,8 +164,8 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
Thread.sleep(100);
// call the servlet for the first time
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
Response leaderboardReponse = leaderboardsResource.getLeaderboard(regatta.getName(),
AbstractLeaderboardsResource.ResultStates.Final, null);
String jsonString = (String) leaderboardReponse.getEntity();
Object obj= JSONValue.parse(jsonString);
@@ -184,8 +183,8 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
// second call - it's expected to get the same result from the cache
Thread.sleep(100);
LeaderboardsResource resource2 = spyResource(new LeaderboardsResource());
Response leaderboardReponse2 = resource2.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
Response leaderboardReponse2 = leaderboardsResource.getLeaderboard(regatta.getName(),
AbstractLeaderboardsResource.ResultStates.Final, null);
String jsonString2 = (String) leaderboardReponse2.getEntity();
Object obj2= JSONValue.parse(jsonString2);
@@ -207,8 +206,8 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
dropAndCreateRegatta();
Integer maxCompetitorsCount = 2;
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
Response leaderboardReponse = leaderboardsResource.getLeaderboard(regatta.getName(),
AbstractLeaderboardsResource.ResultStates.Final, null);
String jsonString = (String) leaderboardReponse.getEntity();
Object obj= JSONValue.parse(jsonString);
@@ -226,8 +225,8 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
regattaLeaderboard.getScoreCorrection().setTimePointOfLastCorrectionsValidity(MillisecondsTimePoint.now());
// first call for 'all' competitors
LeaderboardsResource resource2 = spyResource(new LeaderboardsResource());
Response leaderboardReponse2 = resource2.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
Response leaderboardReponse2 = leaderboardsResource.getLeaderboard(regatta.getName(),
AbstractLeaderboardsResource.ResultStates.Final, null);
jsonString = (String) leaderboardReponse2.getEntity();
obj= JSONValue.parse(jsonString);
@@ -238,8 +237,8 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
Thread.sleep(100);
// second call with maxCompetitorsCount set
LeaderboardsResource resource3 = spyResource(new LeaderboardsResource());
Response leaderboardReponse3 = resource3.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, maxCompetitorsCount);
Response leaderboardReponse3 = leaderboardsResource.getLeaderboard(regatta.getName(),
AbstractLeaderboardsResource.ResultStates.Final, maxCompetitorsCount);
jsonString = (String) leaderboardReponse3.getEntity();
obj= JSONValue.parse(jsonString);
@@ -250,8 +249,8 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
Thread.sleep(100);
// third call for 'all' competitors
LeaderboardsResource resource4 = spyResource(new LeaderboardsResource());
Response leaderboardReponse4 = resource4.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
Response leaderboardReponse4 = leaderboardsResource.getLeaderboard(regatta.getName(),
AbstractLeaderboardsResource.ResultStates.Final, null);
jsonString = (String) leaderboardReponse4.getEntity();
obj= JSONValue.parse(jsonString);
@@ -30,7 +30,6 @@ import com.sap.sailing.domain.base.impl.SeriesImpl;
import com.sap.sailing.domain.common.RegattaName;
import com.sap.sailing.domain.common.ScoringSchemeType;
import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
import com.sap.sailing.server.gateway.jaxrs.api.RegattasResource;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
@@ -71,10 +70,7 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
@Test
public void testGetRegattas() throws Exception {
RegattasResource resource = new RegattasResource();
RegattasResource spyResource = spyResource(resource);
Response regattasResponse = spyResource.getRegattas();
Response regattasResponse = regattasResource.getRegattas();
String jsonString = (String) regattasResponse.getEntity();
Object obj = JSONValue.parse(jsonString);
@@ -92,10 +88,7 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
@Test
public void testNullCheckForTrackedRaceInGetManeuvers() throws Exception {
RegattasResource resource = new RegattasResource();
RegattasResource spyResource = spyResource(resource);
Response response = spyResource.getManeuvers(regattaName, "Race 1", null, null);
Response response = regattasResource.getManeuvers(regattaName, "Race 1", null, null);
// the current race is not tracked, expect an error
assertTrue(response.getStatus() != 200);
}
@@ -44,9 +44,9 @@ public class LeaderboardGroupsResource extends AbstractSailingServerResource {
public Response getLeaderboardGroups() {
JSONArray jsonLeaderboardGroups = new JSONArray();
Map<String, LeaderboardGroup> leaderboardGroups = getService().getLeaderboardGroups();
for (Entry<String, LeaderboardGroup> leaderboardGroupName : leaderboardGroups.entrySet()) {
if (getSecurityService().hasCurrentUserReadPermission(leaderboardGroupName.getValue())) {
jsonLeaderboardGroups.add(leaderboardGroupName);
for (Entry<String, LeaderboardGroup> leaderboardGroupEntry : leaderboardGroups.entrySet()) {
if (getSecurityService().hasCurrentUserReadPermission(leaderboardGroupEntry.getValue())) {
jsonLeaderboardGroups.add(leaderboardGroupEntry.getKey());
}
}