add teamImageURI and flagImageURI query parameter to createAndAddCompetitor rest-api in RegattaResource

This commit is contained in:
Thomas Wiese committed 2018-10-26 13:18:05 +02:00
1 parent 825f264c9f
commit 64526312ce
2 files changed
+54 -16

No files matched your search

@@ -6,6 +6,8 @@ import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.when;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
@@ -61,6 +63,8 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
private final String competitorShortName1 = "MM";
private final String competitorName2 = "Test Competitor";
private final String competitorShortName2 = "TC";
private final String flagImageUri = "file://flag.jpg";
private final String teamImageUri = "file://team.jpg";
@Before
public void setUp() throws Exception {
@@ -142,13 +146,15 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
when(securityService.getCurrentUser()).thenReturn(user);
Response response = regattasResource.createAndAddCompetitor(closedRegattaName, boatClassName, null, "GER",
"#F00", null, null, null, competitorName1, competitorShortName1, null, deviceUuid, null);
"#F00", flagImageUri, teamImageUri, null, null, null, competitorName1, competitorShortName1, null,
deviceUuid, null);
assertTrue(response.getStatus() + ": " + response.getEntity().toString(),
response.getStatus() == Status.OK.getStatusCode());
assertTrue(regattasResource.getService() == racingEventService);
response = regattasResource.createAndAddCompetitor(closedRegattaName, boatClassName, null, "GER", "#0F0", null,
null, null, competitorName2, competitorShortName2, null, deviceUuid, null);
response = regattasResource.createAndAddCompetitor(closedRegattaName, boatClassName, null, "GER", "#0F0",
flagImageUri, teamImageUri, null, null, null, competitorName2, competitorShortName2, null, deviceUuid,
null);
assertTrue(response.getStatus() + ": " + response.getEntity().toString(),
response.getStatus() == Status.OK.getStatusCode());
@@ -169,7 +175,8 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
doReturn(securityService).when(regattasResource).getService(SecurityService.class);
setUser(null);
Response response = regattasResource.createAndAddCompetitor(openRegattaName, boatClassName, null, "GER", "#F00",
null, null, null, competitorName1, competitorShortName1, null, deviceUuid, secret);
flagImageUri, teamImageUri, null, null, null, competitorName1, competitorShortName1, null, deviceUuid,
secret);
assertTrue(response.getStatus() + ": " + response.getEntity().toString(),
response.getStatus() == Status.OK.getStatusCode());
assertTrue(regattasResource.getService() == racingEventService);
@@ -184,7 +191,7 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
setUser(null);
Response response = regattasResource.createAndAddCompetitor(openRegattaName, boatClassName, null, "GER", "#F00",
null, null, null, competitorName1, competitorShortName1, null, deviceUuid, "WRONGSECRET");
flagImageUri, teamImageUri, null, null, null, competitorName1, competitorShortName1, null, deviceUuid, "WRONGSECRET");
assertTrue(response.getStatus() + ": " + response.getEntity().toString(),
response.getStatus() == Status.FORBIDDEN.getStatusCode());
}
@@ -199,7 +206,8 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
Regatta regatta = racingEventService.getRegattaByName(openRegattaName);
Response response = regattasResource.createAndAddCompetitor(openRegattaName, boatClassName, null, "GER", "#F00",
null, null, null, competitorName1, competitorShortName1, null, deviceUuid, secret);
flagImageUri, teamImageUri, null, null, null, competitorName1, competitorShortName1, null, deviceUuid,
secret);
assertTrue(response.getStatus() + ": " + response.getEntity().toString(),
response.getStatus() == Status.OK.getStatusCode());
assertTrue(regattasResource.getService() == racingEventService);
@@ -208,7 +216,7 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
testResponseOfOpenRegattaCompetitorRegistration(regatta);
}
private void testResponseOfOpenRegattaCompetitorRegistration(final Regatta regatta) {
private void testResponseOfOpenRegattaCompetitorRegistration(final Regatta regatta) throws URISyntaxException {
Iterator<Competitor> cit = regatta.getAllCompetitors().iterator();
Competitor readCompetitor = cit.next();
assertNotNull(readCompetitor);
@@ -224,10 +232,12 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
assertEquals(Color.RED, readCompetitor.getColor());
assertEquals(competitorName1, readCompetitor.getName());
assertEquals(competitorShortName1, readCompetitor.getShortName());
assertEquals(new URI(flagImageUri), readCompetitor.getFlagImage());
assertEquals(new URI(teamImageUri), readCompetitor.getTeam().getImage());
// Same deviceUuid for registration should fail
Response response = regattasResource.createAndAddCompetitor(regatta.getName(), boatClassName, null, "GER",
"#F00", null, null, null, "XXX", "XXX", null, deviceUuid, secret);
"#F00", flagImageUri, teamImageUri, null, null, null, "XXX", "XXX", null, deviceUuid, secret);
assertTrue("Reponse http status should be forbidden (403) but is " + response.getStatus(),
response.getStatus() == Status.FORBIDDEN.getStatusCode());
}
@@ -1,6 +1,8 @@
package com.sap.sailing.server.gateway.jaxrs.api;
import java.io.Serializable;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
@@ -349,8 +351,9 @@ public class RegattasResource extends AbstractSailingServerResource {
private Response createAndAddCompetitor(String regattaName, String nationalityThreeLetterIOCCode, String rgbColor,
Double timeOnTimeFactor, Long timeOnDistanceAllowancePerNauticalMileAsMillis, String searchTag,
String competitorName, String competitorShortName, String competitorEmail,
Function<String, DynamicBoat> boatObtainer, String deviceUuid, String registrationLinkSecret) {
String competitorName, String competitorShortName, String competitorEmail, String flagImageURIString,
String teamImageURIString, Function<String, DynamicBoat> boatObtainer, String deviceUuid,
String registrationLinkSecret) {
final Subject subject = SecurityUtils.getSubject();
final User user = getSecurityService().getCurrentUser();
@@ -427,15 +430,37 @@ public class RegattasResource extends AbstractSailingServerResource {
String.format("invalid color %s", iae.getMessage()));
}
}
final URI flagImageURI;
if (flagImageURIString == null || flagImageURIString.length() == 0) {
flagImageURI = null;
} else {
try {
flagImageURI = new URI(flagImageURIString);
} catch (URISyntaxException use) {
return getBadRegattaRegistrationValidationErrorResponse(
String.format("invalid flagImageURIString %s", flagImageURIString));
}
}
final URI teamImageURI;
if (teamImageURIString == null || teamImageURIString.length() == 0) {
teamImageURI = null;
} else {
try {
teamImageURI = new URI(teamImageURIString);
} catch (URISyntaxException use) {
return getBadRegattaRegistrationValidationErrorResponse(
String.format("invalid flagImageURIString %s", teamImageURIString));
}
}
final TeamImpl team = new TeamImpl(eCompetitorShortName,
Collections.singleton(new PersonImpl(eCompetitorName,
getService().getBaseDomainFactory().getOrCreateNationality(nationalityThreeLetterIOCCode),
/* dateOfBirth */ null, /* description */ null)),
/* coach */ null);
/* coach */ null, teamImageURI);
final CompetitorWithBoat competitor = getService().getCompetitorAndBoatStore()
.getOrCreateCompetitorWithBoat(UUID.randomUUID(), eCompetitorName,
/* shortName */ eCompetitorShortName, color, eCompetitorEmail, /* flagImageURI */ null,
team, timeOnTimeFactor,
/* shortName */ eCompetitorShortName, color, eCompetitorEmail, flagImageURI, team,
timeOnTimeFactor,
timeOnDistanceAllowancePerNauticalMileAsMillis == null ? null
: new MillisecondsDurationImpl(timeOnDistanceAllowancePerNauticalMileAsMillis),
searchTag, boat);
@@ -463,7 +488,8 @@ public class RegattasResource extends AbstractSailingServerResource {
public Response createAndAddCompetitor(@PathParam("regattaname") String regattaName,
@QueryParam("boatclass") String boatClassName, @QueryParam("sailid") String sailId,
@QueryParam("nationalityIOC") String nationalityThreeLetterIOCCode,
@QueryParam("displayColor") String displayColor, @QueryParam("timeontimefactor") Double timeOnTimeFactor,
@QueryParam("displayColor") String displayColor, @QueryParam("flagImageURI") String flagImageURI,
@QueryParam("teamImageURI") String teamImageURI, @QueryParam("timeontimefactor") Double timeOnTimeFactor,
@QueryParam("timeondistanceallowancepernauticalmileasmillis") Long timeOnDistanceAllowancePerNauticalMileAsMillis,
@QueryParam("searchtag") String searchTag, @QueryParam("competitorName") String competitorName,
@QueryParam("competitorShortName") String competitorShortName,
@@ -475,7 +501,7 @@ public class RegattasResource extends AbstractSailingServerResource {
} else {
response = createAndAddCompetitor(regattaName, nationalityThreeLetterIOCCode, displayColor,
timeOnTimeFactor, timeOnDistanceAllowancePerNauticalMileAsMillis, searchTag, competitorName,
competitorShortName, competitorEmail,
competitorShortName, competitorEmail, flagImageURI, teamImageURI,
shortName -> new BoatImpl(UUID.randomUUID(), shortName, getService().getBaseDomainFactory()
.getOrCreateBoatClass(boatClassName, /* typicallyStartsUpwind */ true), sailId),
deviceUuid, registrationLinkSecret);
@@ -489,6 +515,7 @@ public class RegattasResource extends AbstractSailingServerResource {
public Response createAndAddCompetitorWithBoat(@PathParam("regattaname") String regattaName,
@QueryParam("boatId") String boatId, @QueryParam("sailid") String sailId,
@QueryParam("nationalityIOC") String nationalityThreeLetterIOCCode,
@QueryParam("flagImageURI") String flagImageURI, @QueryParam("teamImageURI") String teamImageURI,
@QueryParam("displayColor") String displayColor, @QueryParam("timeontimefactor") Double timeOnTimeFactor,
@QueryParam("timeondistanceallowancepernauticalmileasmillis") Long timeOnDistanceAllowancePerNauticalMileAsMillis,
@QueryParam("searchtag") String searchTag, @QueryParam("competitorName") String competitorName,
@@ -502,7 +529,8 @@ public class RegattasResource extends AbstractSailingServerResource {
} else {
response = createAndAddCompetitor(regattaName, nationalityThreeLetterIOCCode, displayColor,
timeOnTimeFactor, timeOnDistanceAllowancePerNauticalMileAsMillis, searchTag, competitorName,
competitorShortName, competitorEmail, t -> boat, deviceUuid, registrationLinkSecret);
competitorShortName, competitorEmail, flagImageURI, teamImageURI, t -> boat, deviceUuid,
registrationLinkSecret);
}
return response;
}