This is an automated email from the ASF dual-hosted git repository.

jsinovassinnaik pushed a commit to branch UNOMI-785-fix-npe
in repository https://gitbox.apache.org/repos/asf/unomi.git


The following commit(s) were added to refs/heads/UNOMI-785-fix-npe by this push:
     new 66da174b4 UNOMI-785 : add integration tests
66da174b4 is described below

commit 66da174b4038ade24ae3014ff7a1e2ab3e3be503
Author: jsinovassin <jsinovassinn...@jahia.com>
AuthorDate: Wed Jul 26 16:06:12 2023 +0200

    UNOMI-785 : add integration tests
---
 .../org/apache/unomi/itests/ContextServletIT.java  | 51 ++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java 
b/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java
index 4e5943ffd..ac7252203 100644
--- a/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java
+++ b/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java
@@ -595,6 +595,57 @@ public class ContextServletIT extends BaseIT {
                 /*  We can see we still have old control group check stored in 
the session too */ false);
     }
 
+       @Test()
+       public void testEventSessionWithNotExistingProfile_Success() throws 
IOException, InterruptedException {
+
+               //Arrange
+               String profileId = "profile-to-be-removed";
+               Profile profile = new Profile(profileId);
+               profileService.save(profile);
+
+               String sessionWithDeletedProfileId = 
"session-with-delete-profile";
+               String scope = "test-scope";
+               Session session = new Session(sessionWithDeletedProfileId, 
profile, new Date(), scope);
+               profileService.saveSession(session);
+
+               refreshPersistence(Profile.class, Session.class);
+               keepTrying("Profile not saved in time",
+                               () -> persistenceService.load(profileId, 
Profile.class), Objects::nonNull,
+                               1000, 10);
+               keepTrying("Session not saved in time",
+                               () -> 
persistenceService.load(sessionWithDeletedProfileId, Session.class), 
Objects::nonNull,
+                               1000, 10);
+
+               profileService.delete(profileId, false);
+               refreshPersistence(Profile.class);
+               waitForNullValue("Profile not deleted in time",
+                               () -> persistenceService.load(profileId, 
Profile.class),
+                               1000, 10);
+
+               String eventId = "test-event-id-" + System.currentTimeMillis();
+               String eventType = "test-event-type";
+               Event event = new Event();
+               event.setEventType(eventType);
+               event.setItemId(eventId);
+               event.setSessionId(sessionWithDeletedProfileId);
+
+               ContextRequest contextRequest = new ContextRequest();
+               contextRequest.setEvents(Arrays.asList(event));
+               contextRequest.setSessionId(sessionWithDeletedProfileId);
+
+               HttpPost request = new HttpPost(URL + CONTEXT_URL);
+               request.addHeader(THIRD_PARTY_HEADER_NAME, UNOMI_KEY);
+               request.setEntity(new 
StringEntity(objectMapper.writeValueAsString(contextRequest), 
ContentType.create("application/json")));
+               TestUtils.executeContextJSONRequest(request);
+               refreshPersistence(Profile.class, Session.class);
+               Thread.sleep(2000); //Making sure event is updated in DB
+
+               //Assert
+               keepTrying("Session should not the deleted profile",
+                               () -> 
persistenceService.load(sessionWithDeletedProfileId, Session.class), 
persistedSession -> !persistedSession.getProfileId().equals(profileId),
+                               1000, 10);
+       }
+
     private void performPersonalizationWithControlGroup(Map<String, String> 
controlGroupConfig, List<String> expectedVariants,
                                                         boolean 
expectedControlGroupInfoInPersoResult, boolean 
expectedControlGroupValueInPersoResult,
                                                         Boolean 
expectedControlGroupValueInProfile, Boolean expectedControlGroupValueInSession) 
throws Exception {

Reply via email to