@WebMethod
  @GET
  @Produces("application/json")
  @Path("/reports")
  public Response getReports(
      @QueryParam("aggregatorId") String aggregatorId,
      @QueryParam("providerId") String providerId,
      @QueryParam("productClass") String productClass)
      throws Exception {

    // Check basic permissions
    RSUser user = this.userManager.getCurrentUser();
    String effectiveAggregator;

    if (userManager.isAdmin()) {
      effectiveAggregator = aggregatorId;
    } else if (null == aggregatorId || aggregatorId.equals(user.getEmail())) {
      effectiveAggregator = user.getEmail();
    } else {
      String[] args = {"You are not allowed to retrieve report files for the given parameters"};
      throw new RSSException(UNICAExceptionType.NON_ALLOWED_OPERATION, args);
    }

    List<RSSReport> files =
        settlementManager.getSharingReports(effectiveAggregator, providerId, productClass);
    Response.ResponseBuilder rb = Response.status(Response.Status.OK.getStatusCode());
    rb.entity(files);
    return rb.build();
  }
  @Test
  public void getAggregatorsNotAdminTest() throws Exception {

    Aggregator aggregator = new Aggregator();
    aggregator.setAggregatorId("*****@*****.**");
    aggregator.setAggregatorName("aggregatorName");

    RSUser user = new RSUser();
    user.setEmail("*****@*****.**");

    when(userManager.isAdmin()).thenReturn(false);
    when(userManager.getCurrentUser()).thenReturn(user);
    when(aggregatorManager.getAggregator("*****@*****.**")).thenReturn(aggregator);

    Response response = toTest.getAggregators();

    Assert.assertEquals(200, response.getStatus());
    List listResponse = (List) response.getEntity();
    Assert.assertEquals(aggregator, listResponse.get(0));
  }
  @Test(expected = MissingFormatArgumentException.class)
  public void createAggregatorNotAdminTest() throws Exception {

    when(userManager.isAdmin()).thenReturn(false);

    Aggregator aggregator = new Aggregator();
    aggregator.setAggregatorId("*****@*****.**");
    aggregator.setAggregatorName("aggregatorName");

    toTest.createAggregator(aggregator);

    fail();
  }
  @Test
  public void createAggregatorTest() throws Exception {

    when(userManager.isAdmin()).thenReturn(true);

    Aggregator aggregator = new Aggregator();
    aggregator.setAggregatorId("*****@*****.**");
    aggregator.setAggregatorName("aggregatorName");

    Response response = toTest.createAggregator(aggregator);

    Assert.assertEquals(201, response.getStatus());
  }
  @Test
  public void getAggregatorsTest() throws Exception {

    List<Aggregator> aggregators = new LinkedList<>();

    Aggregator aggregator = new Aggregator();
    aggregator.setAggregatorId("*****@*****.**");
    aggregator.setAggregatorName("aggregatorName");

    aggregators.add(aggregator);

    when(userManager.isAdmin()).thenReturn(true);
    when(aggregatorManager.getAPIAggregators()).thenReturn(aggregators);

    Response response = toTest.getAggregators();

    Assert.assertEquals(200, response.getStatus());
    Assert.assertEquals(aggregators, response.getEntity());
  }