@Test
public void testGetEventsWithYarnACLsEnabled() {

  AdminACLsManager oldAdminACLsManager =
      timelineACLsManager.setAdminACLsManager(adminACLsManager);
  try {
    // Put entity [5, 5] in domain 1
    TimelineEntities entities = new TimelineEntities();
    TimelineEntity entity = new TimelineEntity();
    entity.setEntityId("test id 5");
    entity.setEntityType("test type 5");
    entity.setStartTime(System.currentTimeMillis());
    entity.setDomainId("domain_id_1");
    TimelineEvent event = new TimelineEvent();
    event.setEventType("event type 1");
    event.setTimestamp(System.currentTimeMillis());
    entity.addEvent(event);
    entities.addEntity(entity);
    WebResource r = resource();
    ClientResponse response = r.path("ws").path("v1").path("timeline")
        .queryParam("user.name", "writer_user_1")
        .accept(MediaType.APPLICATION_JSON)
        .type(MediaType.APPLICATION_JSON)
        .post(ClientResponse.class, entities);
    assertEquals(MediaType.APPLICATION_JSON + "; " + JettyUtils.UTF_8,
        response.getType().toString());
    TimelinePutResponse putResponse =
        response.getEntity(TimelinePutResponse.class);
    Assert.assertEquals(0, putResponse.getErrors().size());
    // Put entity [5, 6] in domain 2
    entities = new TimelineEntities();
    entity = new TimelineEntity();
    entity.setEntityId("test id 6");
    entity.setEntityType("test type 5");
    entity.setStartTime(System.currentTimeMillis());
    entity.setDomainId("domain_id_2");
    event = new TimelineEvent();
    event.setEventType("event type 2");
    event.setTimestamp(System.currentTimeMillis());
    entity.addEvent(event);
    entities.addEntity(entity);
    r = resource();
    response = r.path("ws").path("v1").path("timeline")
        .queryParam("user.name", "writer_user_3")
        .accept(MediaType.APPLICATION_JSON)
        .type(MediaType.APPLICATION_JSON)
        .post(ClientResponse.class, entities);
    assertEquals(MediaType.APPLICATION_JSON + "; " + JettyUtils.UTF_8,
        response.getType().toString());
    putResponse = response.getEntity(TimelinePutResponse.class);
    Assert.assertEquals(0, putResponse.getErrors().size());
    // Query events belonging to the entities of type 4
    response = r.path("ws").path("v1").path("timeline")
        .path("test type 5").path("events")
        .queryParam("user.name", "reader_user_1")
        .queryParam("entityId", "test id 5,test id 6")
        .accept(MediaType.APPLICATION_JSON)
        .get(ClientResponse.class);
    assertEquals(MediaType.APPLICATION_JSON + "; " + JettyUtils.UTF_8,
        response.getType().toString());
    TimelineEvents events = response.getEntity(TimelineEvents.class);
    // Reader 1 should just have the access to the events of entity [5, 5]
    assertEquals(1, events.getAllEvents().size());
    assertEquals("test id 5", events.getAllEvents().get(0).getEntityId());
  } finally {
    timelineACLsManager.setAdminACLsManager(oldAdminACLsManager);
  }
}