public void testServiceFailure() throws ApsSystemException {
    RequestContext reqCtx = this.getRequestContext();

    Role role = new Role();
    role.setName("testRole");
    User user = new User();
    user.addAutority(role);
    reqCtx.getRequest().getSession().setAttribute(SystemConstants.SESSIONPARAM_CURRENT_USER, user);

    Page page = new Page();
    page.setCode("login");
    page.setGroup("free");
    page.setModel(new PageModel());

    reqCtx.addExtraParam(SystemConstants.EXTRAPAR_CURRENT_PAGE, page);

    Lang lang = new Lang();
    lang.setCode("it");
    reqCtx.addExtraParam(SystemConstants.EXTRAPAR_CURRENT_LANG, lang);

    MockHttpServletRequest request = (MockHttpServletRequest) reqCtx.getRequest();
    request.setRemoteAddr("255.255.255.255");
    request.addHeader("Referer", "homeTest");
    request.addHeader("User-Agent", "Mio Test Browser");
    request.addHeader("accept-language", "sardo");

    int status = _statMonitor.service(reqCtx, ControllerManager.CONTINUE);
    assertEquals(status, ControllerManager.CONTINUE);
    this.deleteStatsRecord();
  }
 @Override
 public int service(RequestContext reqCtx, int status) {
   if (_log.isLoggable(Level.FINEST)) {
     _log.finest("Invoked " + this.getClass().getName());
   }
   int retStatus = ControllerManager.INVALID_STATUS;
   if (status == ControllerManager.ERROR) {
     return status;
   }
   try {
     String isActive =
         this.getConfigManager()
             .getParam(CasClientPluginSystemCostants.JPCASCLIENT_EXTENDED_ISACTIVE);
     if (!isActive.equals("true")) {
       // if cas client is disactivate normal Authorization on request
       return super.service(reqCtx, retStatus);
     } else {
       HttpServletRequest req = reqCtx.getRequest();
       HttpSession session = req.getSession();
       IPage currentPage = (IPage) reqCtx.getExtraParam(SystemConstants.EXTRAPAR_CURRENT_PAGE);
       UserDetails currentUser =
           (UserDetails) session.getAttribute(SystemConstants.SESSIONPARAM_CURRENT_USER);
       boolean authorized = this.getAuthManager().isAuth(currentUser, currentPage);
       if (authorized) {
         retStatus = ControllerManager.CONTINUE;
       } else if (SystemConstants.GUEST_USER_NAME.equals(currentUser.getUsername())) {
         _log.info("CAS - user not authorized and guest");
         CasClientUtils casClientUtils = new CasClientUtils();
         String loginBaseUrl =
             this.getConfigManager().getParam(CasClientPluginSystemCostants.JPCASCLIENT_LOGIN_URL);
         StringBuffer loginUrl = new StringBuffer(loginBaseUrl);
         loginUrl.append("?service=");
         PageURL pageUrl = this.getUrlManager().createURL(reqCtx);
         String serviceUrl = casClientUtils.getURLStringWithoutTicketParam(pageUrl, reqCtx);
         loginUrl.append(serviceUrl);
         reqCtx.addExtraParam(RequestContext.EXTRAPAR_REDIRECT_URL, loginUrl.toString());
         retStatus = ControllerManager.REDIRECT;
       } else {
         _log.info("CAS - user authenticated but not authorized");
         Lang currentLang = (Lang) reqCtx.getExtraParam(SystemConstants.EXTRAPAR_CURRENT_LANG);
         String notAuthPageCode =
             this.getConfigManager()
                 .getParam(CasClientPluginSystemCostants.JPCASCLIENT_NO_AUTH_PAGE);
         IPage page = this.getPageManager().getPage(notAuthPageCode);
         String url =
             this.getUrlManager().createUrl(page, currentLang, new HashMap<String, String>());
         reqCtx.addExtraParam(RequestContext.EXTRAPAR_REDIRECT_URL, url);
         retStatus = ControllerManager.REDIRECT;
       }
     }
   } catch (Throwable t) {
     ApsSystemUtils.logThrowable(t, this, "service", "Error in processing the request");
     retStatus = ControllerManager.ERROR;
   }
   return retStatus;
 }
 /**
  * Imposta i parametri di una redirezione.
  *
  * @param redirDestPage Il codice della pagina su cui si vuole redirezionare.
  * @param reqCtx Il contesto di richiesta.
  * @return L'indicativo del tipo di redirezione in uscita del controlService. Può essere una delle
  *     costanti definite in ControllerManager.
  */
 protected int redirect(String redirDestPage, RequestContext reqCtx) {
   int retStatus;
   try {
     String redirPar = this.getParameter(RequestContext.PAR_REDIRECT_FLAG, reqCtx);
     if (redirPar == null || "".equals(redirPar)) {
       PageURL url = this.getUrlManager().createURL(reqCtx);
       url.setPageCode(redirDestPage);
       url.addParam(RequestContext.PAR_REDIRECT_FLAG, "1");
       String redirUrl = url.getURL();
       if (_log.isLoggable(Level.FINEST)) {
         _log.finest("Redirecting to " + redirUrl);
       }
       reqCtx.clearError();
       reqCtx.addExtraParam(RequestContext.EXTRAPAR_REDIRECT_URL, redirUrl);
       retStatus = ControllerManager.REDIRECT;
     } else {
       reqCtx.setHTTPError(HttpServletResponse.SC_BAD_REQUEST);
       retStatus = ControllerManager.ERROR;
     }
   } catch (Throwable t) {
     retStatus = ControllerManager.SYS_ERROR;
     reqCtx.setHTTPError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
     ApsSystemUtils.logThrowable(
         t, this, "redirect", "Error on creation redirect to page " + redirDestPage);
   }
   return retStatus;
 }
 public void testServiceFailure_2() throws Throwable {
   RequestContext reqCtx = this.getRequestContext();
   reqCtx.getRequest().getSession().removeAttribute(SystemConstants.SESSIONPARAM_CURRENT_USER);
   IPage root = this._pageManager.getRoot();
   reqCtx.addExtraParam(SystemConstants.EXTRAPAR_CURRENT_PAGE, root);
   int status = _authorizator.service(reqCtx, ControllerManager.CONTINUE);
   assertEquals(status, ControllerManager.SYS_ERROR);
 }
 public void testServiceFailure_1() throws Throwable {
   RequestContext reqCtx = this.getRequestContext();
   this.setUserOnSession(SystemConstants.GUEST_USER_NAME);
   IPage requiredPage = this._pageManager.getPage("customers_page");
   reqCtx.addExtraParam(SystemConstants.EXTRAPAR_CURRENT_PAGE, requiredPage);
   int status = _authorizator.service(reqCtx, ControllerManager.CONTINUE);
   assertEquals(status, ControllerManager.REDIRECT);
   String redirectUrl = (String) reqCtx.getExtraParam(RequestContext.EXTRAPAR_REDIRECT_URL);
   assertEquals("/japs/it/login.page?redirectflag=1", redirectUrl);
 }
 public void testService_2() throws Throwable {
   RequestContext reqCtx = this.getRequestContext();
   this.setUserOnSession("admin");
   IPage root = this._pageManager.getRoot();
   reqCtx.addExtraParam(SystemConstants.EXTRAPAR_CURRENT_PAGE, root);
   int status = this._authorizator.service(reqCtx, ControllerManager.CONTINUE);
   assertEquals(status, ControllerManager.CONTINUE);
   String redirectUrl = (String) reqCtx.getExtraParam(RequestContext.EXTRAPAR_REDIRECT_URL);
   assertNull(redirectUrl);
 }