/**
   * Test case for stanard subscription flow : - submitting data - looking for user by username -
   * looking for non confirmed user by his id - confirming subscriber
   */
  @Test
  public void subscribe() {
    System.out.println("Testing subscribe() : subscription");

    AnonymousAuthenticationToken anonymousUser =
        new AnonymousAuthenticationToken(
            "anonymous",
            "anonymous",
            new ArrayList(Arrays.asList(new GrantedAuthorityImpl("ROLE_ANONYMOUS"))));
    SecurityContextHolder.getContext().setAuthentication(anonymousUser);

    Subscriber subscriber = new Subscriber();
    subscriber.setLogin("testNonConfirmed");
    subscriber.setEmail("*****@*****.**");
    subscriber.setConfirmed(Subscriber.IS_NOT_CONFIRMED);
    subscriber.setBlacklisted(Subscriber.IS_NOT_BLACKLISTED);

    try {
      subscriber = subscriberService.save(subscriber);
    } catch (Exception e) {
      System.out.println("An error occured on saving subscriber : " + e.getMessage());
    }
    System.out.println("After saving " + subscriber);
    Assert.assertNotNull("Subscriber is null", subscriber);

    Subscriber loadedSubscriber = subscriberService.loadByUsername(subscriber.getLogin());
    Assert.assertNotNull("Subscriber was not loaded correctly", loadedSubscriber);

    Subscriber notConfirmedSubscriber = subscriberService.findNonConfirmedById(subscriber.getId());
    Assert.assertNotNull(
        "Not confirmed subscriber was not loaded correctly", notConfirmedSubscriber);

    Subscriber confirmedSubscriber = subscriberService.confirm(subscriber);
    Assert.assertNotNull("Confirmed subscriber is null", confirmedSubscriber);

    System.out.println("Testing subscribe() : subscription");
  }