3278 Handle non-numbers as query parameters

This commit is contained in:
Andreas Svanberg 2024-02-13 11:33:49 +01:00
parent 2ceb040c38
commit 9f89fe0480
2 changed files with 15 additions and 3 deletions
view/src
main/java/se/su/dsv/scipro/match
test/java/se/su/dsv/scipro/match

@ -4,6 +4,7 @@ import org.apache.wicket.RestartResponseException;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValueConversionException;
import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightProjectIdeas;
import se.su.dsv.scipro.data.DetachableServiceModel;
import se.su.dsv.scipro.security.auth.Authorization;
@ -24,11 +25,13 @@ public class ProjectNewAllSupervisorIdeasPage extends AbstractIdeaProjectPage im
super(pp);
addFeedback();
if (pp.get(PageParameterKeys.MAP.get(ApplicationPeriod.class)).isNull()) {
long applicationPeriodId;
try {
applicationPeriodId = pp.get(PageParameterKeys.MAP.get(ApplicationPeriod.class)).toLong();
} catch (StringValueConversionException ignored) {
throw new RestartResponseException(ProjectIdeaStartPage.class);
}
final IModel<ApplicationPeriod> applicationPeriod = new DetachableServiceModel<>(applicationPeriodService, pp.get(PageParameterKeys.MAP.get(ApplicationPeriod.class)).toLong());
final IModel<ApplicationPeriod> applicationPeriod = new DetachableServiceModel<>(applicationPeriodService, applicationPeriodId);
final List<StudentPeriod> availablePeriods = applicationPeriodService.getCurrentStudentPeriods(SciProSession.get().getUser());
final boolean isPeriodAvailableForSelection = availablePeriods.stream()
.filter(StudentPeriod::allowedToSelectIdeas)

@ -32,6 +32,15 @@ public class ProjectNewAllSupervisorIdeasPageTest extends PageTest {
tester.assertRenderedPage(ProjectIdeaStartPage.class);
}
@Test
public void go_to_start_page_with_non_number_parameter() {
PageParameters pageParameters = new PageParameters();
pageParameters.set(PageParameterKeys.MAP.get(ApplicationPeriod.class), "a");
tester.startPage(getPage(), pageParameters);
tester.assertRenderedPage(ProjectIdeaStartPage.class);
}
@Override
protected Class<? extends Page> getPage() {
return ProjectNewAllSupervisorIdeasPage.class;