/**
   * Test Right Throw 2 events matching by one queue, but user can read only one event
   *
   * @throws MembershipServiceException
   * @throws GreetingServiceException
   * @throws EventQueueServiceException
   * @throws InterruptedException
   * @throws LoginException
   */
  @Test(timeout = 50000)
  public void testNotificationRightEvent()
      throws MembershipServiceException, GreetingServiceException, EventQueueServiceException,
          InterruptedException, LoginException {
    logger.info("testNotificationRightEvent() called");
    String caller = membership.getProfilePathForConnectedIdentifier();

    // root permit to kermit to create something on /
    greeting.giveAutorization("/", "/profiles/kermit", new String[] {"create"});

    loginContext.logout();

    // login kermit
    UsernamePasswordHandler uph = new UsernamePasswordHandler("kermit", "thefrog");
    loginContext = new LoginContext("qualipso", uph);
    loginContext.login();

    // kermit create a folder and a resource on this folder and
    // create a read event on this name
    greeting.createFolder("/kermitFolder", "kermitFolder");
    greeting.createName("/kermitFolder/kermitName", "kermitName");
    greeting.readName("/kermitFolder/kermitName");
    greeting.deleteName("/kermitFolder/kermitName");
    greeting.deleteFolder("/kermitFolder");

    loginContext.logout();

    uph = new UsernamePasswordHandler("root", AllTests.ROOT_ACCOUNT_PASS);
    loginContext = new LoginContext("qualipso", uph);
    loginContext.login();

    greeting.readName(pathResource);

    Event[] lEvent2 = new Event[] {};

    while (lEvent2.length < 1) {
      lEvent2 = eqs.getEvents(pathQueue2);
    }

    assertTrue(
        "TestNotificationRighEvent : expected 1 events into queue2("
            + pathQueue2
            + ") but found "
            + lEvent2.length,
        lEvent2.length == 1);
    Event e = lEvent2[0];
    assertEquals(
        "TestNotificationRighEvent : event resource expected "
            + pathResource
            + " but found "
            + e.getFromResource(),
        e.getFromResource(),
        pathResource);
    assertEquals(
        "TestNotificationRighEvent : event type expected greeting.name.create but found "
            + e.getEventType(),
        e.getEventType(),
        "greeting.name.read");
    assertEquals(
        "TestNotificationRighEvent : event throwedBy expected "
            + caller
            + " but found"
            + e.getThrowedBy(),
        e.getThrowedBy(),
        caller);

    Thread.sleep(60);

    assertTrue(
        "TestNotificationRighEvent : expected 1 event into queue1 but found "
            + eqs.getEvents(pathQueue2).length,
        eqs.getEvents(pathQueue2).length == 1);
  }