package com.griddynamics.jagger.test.jaas.validator.sessions; import com.griddynamics.jagger.engine.e1.services.data.service.SessionEntity; import com.griddynamics.jagger.invoker.v2.JHttpEndpoint; import com.griddynamics.jagger.invoker.v2.JHttpQuery; import com.griddynamics.jagger.invoker.v2.JHttpResponse; import com.griddynamics.jagger.test.jaas.util.TestContext; import com.griddynamics.jagger.test.jaas.validator.BaseHttpResponseValidator; import junit.framework.Assert; import java.util.Arrays; import java.util.List; import java.util.Random; import java.util.stream.Collectors; /** * Validates response of /jaas/sessions. * Expected: * - list of sessions is of size 2 and greater; * - the list is no longer than the one available via DataService; * - the list contains no duplicates; * - a randomly picked record is the same as corresponding expected one. */ public class SessionsListResponseContentValidator extends BaseHttpResponseValidator<SessionEntity[]> { @Override public String getName() { return "SessionsListResponseContentValidator"; } @Override public boolean isValid(JHttpQuery<String> query, JHttpEndpoint endpoint, JHttpResponse<SessionEntity[]> result) { List<SessionEntity> actualSessions = Arrays.asList(result.getBody()); int actlSize = actualSessions.size(); int expctdSize = TestContext.getSessions().size(); Assert.assertTrue("Several session records are expected. Check returned list's size", 0 < actlSize); List<SessionEntity> noDuplicatesActualList = actualSessions.stream().distinct().collect(Collectors.toList()); Assert.assertEquals("Response contains duplicate session records", actlSize, noDuplicatesActualList.size()); Assert.assertTrue(String.format("Actual list(%d) is longer than expected one(%d).", actlSize, expctdSize), actlSize <= expctdSize); Assert.assertTrue("Actual list is not a sub-set of expected set.", TestContext.getSessions().containsAll(actualSessions)); SessionEntity randomActualEntity = actualSessions.get((new Random().nextInt(actlSize))); SessionEntity correspondingExpectedSession = TestContext.getSession(randomActualEntity.getId()); // TODO uncomment when JFG-1047 // Assert.assertEquals("Randomly selected expected and actual sessions are not equal.", correspondingExpectedSession, randomActualEntity); return true; } }