Example usage for org.springframework.mock.web MockHttpServletRequest getSession

List of usage examples for org.springframework.mock.web MockHttpServletRequest getSession

Introduction

In this page you can find the example usage for org.springframework.mock.web MockHttpServletRequest getSession.

Prototype

@Override
    @Nullable
    public HttpSession getSession() 

Source Link

Usage

From source file:org.jasig.cas.support.oauth.web.OAuth20AuthorizeControllerTests.java

@Test
public void testOKWithState() throws Exception {
    final MockHttpServletRequest mockRequest = new MockHttpServletRequest("GET",
            CONTEXT + OAuthConstants.AUTHORIZE_URL);
    mockRequest.setParameter(OAuthConstants.CLIENT_ID, CLIENT_ID);
    mockRequest.setParameter(OAuthConstants.REDIRECT_URI, REDIRECT_URI);
    mockRequest.setParameter(OAuthConstants.STATE, STATE);
    mockRequest.setServerName(CAS_SERVER);
    mockRequest.setServerPort(CAS_PORT);
    mockRequest.setScheme(CAS_SCHEME);/*w  ww. jav  a  2s  . c o m*/
    final MockHttpServletResponse mockResponse = new MockHttpServletResponse();
    final ServicesManager servicesManager = mock(ServicesManager.class);
    final List<RegisteredService> services = new ArrayList<RegisteredService>();
    services.add(getRegisteredService(REDIRECT_URI, SERVICE_NAME));
    when(servicesManager.getAllServices()).thenReturn(services);
    final OAuth20WrapperController oauth20WrapperController = new OAuth20WrapperController();
    oauth20WrapperController.setLoginUrl(CAS_URL);
    oauth20WrapperController.setServicesManager(servicesManager);
    oauth20WrapperController.afterPropertiesSet();
    final ModelAndView modelAndView = oauth20WrapperController.handleRequest(mockRequest, mockResponse);
    final HttpSession session = mockRequest.getSession();
    assertEquals(REDIRECT_URI, session.getAttribute(OAuthConstants.OAUTH20_CALLBACKURL));
    assertEquals(SERVICE_NAME, session.getAttribute(OAuthConstants.OAUTH20_SERVICE_NAME));
    assertEquals(STATE, session.getAttribute(OAuthConstants.OAUTH20_STATE));
    final View view = modelAndView.getView();
    assertTrue(view instanceof RedirectView);
    final RedirectView redirectView = (RedirectView) view;
    assertEquals(OAuthUtils.addParameter(CAS_URL, "service",
            CAS_URL + CONTEXT + OAuthConstants.CALLBACK_AUTHORIZE_URL), redirectView.getUrl());
}

From source file:alpha.portal.webapp.controller.SignupControllerTest.java

/**
 * Test signup user.//from  w  w  w  .  j  a va 2 s.  c om
 * 
 * @throws Exception
 *             the exception
 */
@Test
public void testSignupUser() throws Exception {
    final MockHttpServletRequest request = this.newPost("/signup.html");

    final Address address = new Address();
    address.setCity("Denver");
    address.setProvince("Colorado");
    address.setCountry("USA");
    address.setPostalCode("80210");

    final User user = new User();
    user.setAddress(address);

    user.setUsername("self-registered");
    user.setPassword("Password1");
    user.setConfirmPassword("Password1");
    user.setFirstName("First");
    user.setLastName("Last");
    user.setEmail("self-registered@raibledesigns.com");
    user.setWebsite("http://raibledesigns.com");
    user.setPasswordHint("Password is one with you.");

    final HttpServletResponse response = new MockHttpServletResponse();

    // start SMTP Server
    final Wiser wiser = new Wiser();
    wiser.setPort(this.getSmtpPort());
    wiser.start();

    final BindingResult errors = new DataBinder(user).getBindingResult();
    this.c.onSubmit(user, errors, request, response);
    Assert.assertFalse("errors returned in model", errors.hasErrors());

    // verify an account information e-mail was sent
    wiser.stop();
    Assert.assertTrue(wiser.getMessages().size() == 1);

    // verify that success messages are in the request
    Assert.assertNotNull(request.getSession().getAttribute("successMessages"));
    Assert.assertNotNull(request.getSession().getAttribute(Constants.REGISTERED));

    SecurityContextHolder.getContext().setAuthentication(null);
}

From source file:fragment.web.RegistrationControllerTest.java

private void beforeRegisterCall(MockHttpServletRequest request, UserRegistration registration) {
    DispatcherServletWebRequest webRequest = new DispatcherServletWebRequest(request);
    RequestContextHolder.setRequestAttributes(webRequest);
    request.getSession().setAttribute("phoneVerificationPin", "12345");
    request.getSession().setAttribute("phoneNumber", "919591241025");
    Tenant tenant1 = new Tenant("New Co", accountTypeDAO.getDefaultRegistrationAccountType(), null,
            randomAddress(), true, currencyValueService.locateBYCurrencyCode("USD"), null);
    registration.setTenant((com.citrix.cpbm.access.Tenant) CustomProxy.newInstance(tenant1));
    registration.setUserEnteredPhoneVerificationPin("12345");
}

From source file:nl.surfnet.coin.teams.control.AddExternalGroupControllerTest.java

@Test
@SuppressWarnings("unchecked")
public void testShowAddExternalGroupsForm() throws Exception {
    final MockHttpServletRequest request = getRequest();
    final Team team1 = getTeam1();
    final ModelMap modelMap = getModelMap();
    final Person person1 = getPerson1();
    final String groupProviderIdentifier = "hz";
    final GroupProvider hzProvider = getHzProvider(groupProviderIdentifier);

    ControllerUtil controllerUtil = mock(ControllerUtil.class);
    when(controllerUtil.hasUserAdministrativePrivileges(person1, team1.getId())).thenReturn(true);
    autoWireMock(controller, controllerUtil, ControllerUtil.class);

    ExternalGroupProviderProcessor processor = mock(ExternalGroupProviderProcessor.class);

    List<GroupProvider> groupProviders = Collections.<GroupProvider>singletonList(hzProvider);
    when(processor.getAllGroupProviders()).thenReturn(groupProviders);
    when(processor.getGroupProvidersForUser("member-1", groupProviders)).thenReturn(groupProviders);
    Group20Entry groupEntry = new Group20Entry(
            Collections.<Group20>singletonList(new Group20("id", "title", "description")));
    when(processor.getExternalGroupsForGroupProviderId(hzProvider, "member-1", 0, Integer.MAX_VALUE))
            .thenReturn(groupEntry);/*from ww w  . j  a  v a 2  s. c  om*/

    autoWireMock(controller, processor, ExternalGroupProviderProcessor.class);

    TeamExternalGroupDao teamExternalGroupDao = mock(TeamExternalGroupDao.class);
    when(teamExternalGroupDao.getByTeamIdentifier(team1.getId()))
            .thenReturn(new ArrayList<TeamExternalGroup>());
    autoWireMock(controller, teamExternalGroupDao, TeamExternalGroupDao.class);

    final String viewName = controller.showAddExternalGroupsForm(team1.getId(), modelMap, request);

    assertEquals("addexternalgroup", viewName);
    assertEquals(team1, modelMap.get("team"));
    List<ExternalGroup> externalGroups = (List<ExternalGroup>) request.getSession()
            .getAttribute("externalGroups");
    assertEquals(1, externalGroups.size());
    assertTrue(modelMap.containsKey("view"));
    assertTrue(modelMap.containsKey(TokenUtil.TOKENCHECK));
}

From source file:nl.surfnet.coin.teams.control.AddExternalGroupControllerTest.java

@Test
public void testShowAddExternalGroupsForm_alreadyLinked() throws Exception {
    final MockHttpServletRequest request = getRequest();
    final Team team1 = getTeam1();
    final ModelMap modelMap = getModelMap();
    final Person person1 = getPerson1();
    final String groupProviderIdentifier = "hz";
    final GroupProvider hzProvider = getHzProvider(groupProviderIdentifier);

    ControllerUtil controllerUtil = mock(ControllerUtil.class);
    when(controllerUtil.hasUserAdministrativePrivileges(person1, team1.getId())).thenReturn(true);
    autoWireMock(controller, controllerUtil, ControllerUtil.class);

    ExternalGroupProviderProcessor processor = mock(ExternalGroupProviderProcessor.class);

    List<GroupProvider> groupProviders = Collections.<GroupProvider>singletonList(hzProvider);
    when(processor.getAllGroupProviders()).thenReturn(groupProviders);
    when(processor.getGroupProvidersForUser("member-1", groupProviders)).thenReturn(groupProviders);
    Group20 group20 = new Group20(team1.getId(), "title", "description");
    Group20Entry groupEntry = new Group20Entry(Collections.<Group20>singletonList(group20));
    when(processor.getExternalGroupsForGroupProviderId(hzProvider, "member-1", 0, Integer.MAX_VALUE))
            .thenReturn(groupEntry);//  ww w.j  a  v a 2s . co  m

    autoWireMock(controller, processor, ExternalGroupProviderProcessor.class);

    TeamExternalGroupDao teamExternalGroupDao = mock(TeamExternalGroupDao.class);
    TeamExternalGroup teamExternalGroup = new TeamExternalGroup();
    teamExternalGroup.setGrouperTeamId(team1.getId());
    teamExternalGroup.setExternalGroup(new ExternalGroup(group20, hzProvider));

    when(teamExternalGroupDao.getByTeamIdentifier(team1.getId()))
            .thenReturn(Collections.singletonList(teamExternalGroup));
    autoWireMock(controller, teamExternalGroupDao, TeamExternalGroupDao.class);

    final String viewName = controller.showAddExternalGroupsForm(team1.getId(), modelMap, request);

    assertEquals("addexternalgroup", viewName);
    assertEquals(team1, modelMap.get("team"));
    @SuppressWarnings("unchecked")
    List<ExternalGroup> externalGroups = (List<ExternalGroup>) request.getSession()
            .getAttribute("externalGroups");
    assertEquals(0, externalGroups.size());
    assertTrue(modelMap.containsKey("view"));
    assertTrue(modelMap.containsKey(TokenUtil.TOKENCHECK));
}

From source file:fragment.web.RegistrationControllerTest.java

@Test
public void testRegisterTrial() throws Exception {
    MockHttpServletRequest mockRequest = getRequestTemplate(HttpMethod.GET, "/portal/signup?pc=TESTPROMOCODE");
    UserRegistration registration = new UserRegistration();
    registration.setCountryList(countryService.getCountries(null, null, null, null, null, null, null));

    registration.setAcceptedTerms(true);
    AccountType disposition = accountTypeDAO.getTrialAccountType();
    BindingResult result = setupRegistration(disposition, registration);
    PromotionSignup promotionSignup = new PromotionSignup("test" + random.nextInt(), "Citrix",
            "PromotionSignUp@citrix.com");
    promotionSignup.setCreateBy(getRootUser());
    promotionSignup.setCurrency(Currency.getInstance("USD"));
    promotionSignup.setPhone("9999999999");

    CampaignPromotion campaignPromotion = new CampaignPromotion();
    campaignPromotion.setCode("USD" + random.nextInt());
    campaignPromotion.setCreateBy(getRootUser());
    campaignPromotion.setTrial(true);//from  w  w  w.ja v  a 2 s . c o  m
    campaignPromotion.setUpdateBy(getRootUser());

    CampaignPromotionsInChannels cpic = new CampaignPromotionsInChannels(campaignPromotion,
            channelService.getDefaultServiceProviderChannel());
    campaignPromotion.getCampaignPromotionsInChannels().add(cpic);
    cmpdao.save(campaignPromotion);

    PromotionToken promotionToken = new PromotionToken(campaignPromotion, "TESTPROMOCODE");
    promotionToken.setCreateBy(getRootUser());
    tokendao.save(promotionToken);

    promotionSignup.setPromotionToken(promotionToken);

    registration.setTrialCode("TESTPROMOCODE");

    DispatcherServletWebRequest webRequest = new DispatcherServletWebRequest(mockRequest);
    RequestContextHolder.setRequestAttributes(webRequest);
    mockRequest.getSession().setAttribute("phoneVerificationPin", "12345");
    mockRequest.getSession().setAttribute("phoneNumber", "919591241025");
    registration.setUserEnteredPhoneVerificationPin("12345");

    String view = controller.register(registration, result, "abc", "abc", map, null, status, mockRequest);
    Assert.assertEquals("register.registration_success", view);
    Assert.assertTrue(status.isComplete());
    verifyRegistration(disposition, registration.getUser(), registration.getTenant());
    Assert.assertEquals(registration.getTenant().getAccountId(),
            ((com.citrix.cpbm.access.Tenant) map.get("tenant")).getAccountId());
}

From source file:org.apache.archiva.webdav.RepositoryServletSecurityTest.java

@Test
public void testPutWithValidUserWithWriteAccess() throws Exception {
    assertTrue(repoRootInternal.getRoot().exists());

    MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
    String putUrl = "http://machine.com/repository/internal/path/to/artifact.jar";
    InputStream is = getClass().getResourceAsStream("/artifact.jar");
    assertNotNull("artifact.jar inputstream", is);

    servlet.setDavSessionProvider(davSessionProvider);

    ArchivaDavResourceFactory archivaDavResourceFactory = (ArchivaDavResourceFactory) servlet
            .getResourceFactory();// ww  w. j  a v a 2 s .  c om
    archivaDavResourceFactory.setHttpAuth(httpAuth);
    archivaDavResourceFactory.setServletAuth(servletAuth);

    TestAuditListener listener = new TestAuditListener();
    archivaDavResourceFactory.addAuditListener(listener);
    servlet.setResourceFactory(archivaDavResourceFactory);

    AuthenticationResult result = new AuthenticationResult();

    EasyMock.expect(httpAuth.getAuthenticationResult(anyObject(HttpServletRequest.class),
            anyObject(HttpServletResponse.class))).andReturn(result);

    EasyMock.expect(servletAuth.isAuthenticated(anyObject(HttpServletRequest.class),
            anyObject(AuthenticationResult.class))).andReturn(true);

    User user = new SimpleUser();
    user.setUsername("admin");

    // ArchivaDavResourceFactory#isAuthorized()
    SecuritySession session = new DefaultSecuritySession();

    EasyMock.expect(httpAuth.getAuthenticationResult(anyObject(HttpServletRequest.class),
            anyObject(HttpServletResponse.class))).andReturn(result);

    EasyMock.expect(httpAuth.getSecuritySession(mockHttpServletRequest.getSession())).andReturn(session);

    EasyMock.expect(httpAuth.getSessionUser(mockHttpServletRequest.getSession())).andReturn(user);

    EasyMock.expect(servletAuth.isAuthenticated(anyObject(HttpServletRequest.class), eq(result)))
            .andReturn(true);

    EasyMock.expect(servletAuth.isAuthorized(anyObject(HttpServletRequest.class), eq(session), eq("internal"),
            eq(ArchivaRoleConstants.OPERATION_REPOSITORY_UPLOAD))).andReturn(true);

    httpAuthControl.replay();
    servletAuthControl.replay();

    mockHttpServletRequest.addHeader("User-Agent", "foo");
    mockHttpServletRequest.setMethod("PUT");
    mockHttpServletRequest.setRequestURI("/repository/internal/path/to/artifact.jar");
    mockHttpServletRequest.setContent(IOUtils.toByteArray(is));
    mockHttpServletRequest.setContentType("application/octet-stream");

    MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();

    servlet.service(mockHttpServletRequest, mockHttpServletResponse);

    httpAuthControl.verify();
    servletAuthControl.verify();

    assertEquals(HttpServletResponse.SC_CREATED, mockHttpServletResponse.getStatus());

    assertEquals("admin", listener.getEvents().get(0).getUserId());
}

From source file:org.apache.struts2.StrutsJUnit4TestCase.java

public void finishExecution() {
    HttpSession session = this.request.getSession();
    Enumeration attributeNames = session.getAttributeNames();

    MockHttpServletRequest nextRequest = new MockHttpServletRequest();

    while (attributeNames.hasMoreElements()) {
        String key = (String) attributeNames.nextElement();
        Object attribute = session.getAttribute(key);
        nextRequest.getSession().setAttribute(key, attribute);
    }//from w ww.j  av a 2s.  c o m

    this.response = new MockHttpServletResponse();
    this.request = nextRequest;
    this.pageContext = new MockPageContext(servletContext, request, response);
}

From source file:org.jasig.portal.portlet.container.services.PortletCookieServiceImplTest.java

/**
 * Test {@link PortletCookieServiceImpl#getOrCreatePortalCookie(javax.servlet.http.HttpServletRequest)}.
 * that results in returning an existing portalcookie from the id stored in the session.
 *//*  ww  w . ja  va  2s  .c om*/
@Test
public void testGetOrCreatePortalCookieGetExistingFromSession() {
    IPortletCookieDao portletCookieDao = EasyMock.createMock(IPortletCookieDao.class);
    MockPortalCookie portalCookie = new MockPortalCookie();
    portalCookie.setValue("ABCDEF");

    EasyMock.expect(portletCookieDao.getPortalCookie("ABCDEF")).andReturn(portalCookie);
    EasyMock.replay(portletCookieDao);

    PortletCookieServiceImpl cookieService = new PortletCookieServiceImpl();
    cookieService.setPortletCookieDao(portletCookieDao);

    MockHttpServletRequest request = new MockHttpServletRequest();
    request.getSession().setAttribute(PortletCookieServiceImpl.SESSION_ATTRIBUTE__PORTAL_COOKIE_ID, "ABCDEF");

    IPortalCookie result = cookieService.getOrCreatePortalCookie(request);
    Assert.assertEquals(portalCookie, result);
    EasyMock.verify(portletCookieDao);
}

From source file:org.oscarehr.casemgmt.web.CaseManagementEntryAction.java

public ActionForward runMacro(ActionMapping mapping, ActionForm form, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    CaseManagementEntryFormBean cform = (CaseManagementEntryFormBean) form;
    MacroDao macroDao = (MacroDao) SpringUtils.getBean("macroDao");
    Macro macro = macroDao.find(ConversionUtils.fromIntString(request.getParameter("macro.id")));
    logger.info("loaded macro " + macro.getLabel());
    boolean cppFromMeasurements = false;
    String cpp = request.getParameter("cpp");
    if (cpp != null && cpp.equals("measurements")) {
        cppFromMeasurements = true;/*from   w w w .j  a  va2 s . c  o  m*/
    }

    cform.setCaseNote_note(cform.getCaseNote_note() + "\n" + macro.getImpression());

    ActionForward fwd = saveAndExit(mapping, form, request, response);

    if (fwd.getName().equals("windowClose")) {
        EyeFormDao eyeformDao = (EyeFormDao) SpringUtils.getBean("EyeFormDao");
        EyeForm eyeform = eyeformDao
                .getByAppointmentNo(ConversionUtils.fromIntString(cform.getAppointmentNo()));
        // load up the eyeform to set/unset checkboxes
        if (macro.getDischargeFlag() != null && macro.getDischargeFlag().equals("dischargeFlag")) {
            eyeform.setDischarge("true");
        }
        if (macro.getOptFlag() != null && macro.getOptFlag().equals("optFlag")) {
            eyeform.setOpt("true");
        }
        if (macro.getStatFlag() != null && macro.getStatFlag().equals("statFlag")) {
            eyeform.setStat("true");
        }
        eyeformDao.merge(eyeform);

        // follow ups
        FollowUpDao followUpDao = (FollowUpDao) SpringUtils.getBean("FollowUpDAO");
        int followUpNo = macro.getFollowupNo();
        String followUpUnit = macro.getFollowupUnit();
        String followUpDr = macro.getFollowupDoctorId();
        if (followUpNo > 0) {
            EyeformFollowUp f = new EyeformFollowUp();
            f.setAppointmentNo(ConversionUtils.fromIntString(cform.getAppointmentNo()));
            f.setDate(new Date());
            f.setDemographicNo(ConversionUtils.fromIntString(cform.getDemographicNo()));
            f.setProvider(LoggedInInfo.loggedInInfo.get().loggedInProvider);
            f.setTimeframe(followUpUnit);
            f.setTimespan(followUpNo);
            f.setType("followup");
            f.setUrgency("routine");
            f.setFollowupProvider(followUpDr);
            followUpDao.persist(f);
        }

        // tests
        TestBookRecordDao testDao = (TestBookRecordDao) SpringUtils.getBean("TestBookDAO");
        String[] tests = macro.getTestRecords().split("\n");
        for (String test : tests) {
            String[] parts = test.trim().split("\\|");
            if (parts.length == 3 || parts.length == 4) {
                EyeformTestBook rec = new EyeformTestBook();
                rec.setAppointmentNo(ConversionUtils.fromIntString(cform.getAppointmentNo()));
                if (parts.length == 4)
                    rec.setComment(parts[3]);
                else
                    rec.setComment("");
                rec.setDate(new Date());
                rec.setDemographicNo(ConversionUtils.fromIntString(cform.getDemographicNo()));
                rec.setEye(parts[1]);
                rec.setProvider(LoggedInInfo.loggedInInfo.get().loggedInProvider.getProviderNo());
                // rec.setStatus(null);
                rec.setTestname(parts[0]);
                rec.setUrgency(parts[2]);
                testDao.save(rec);
            }
        }

        // send tickler
        if (macro.getTicklerRecipient() != null && macro.getTicklerRecipient().length() > 0) {
            TicklerDAO ticklerDao = (TicklerDAO) SpringUtils.getBean("ticklerDAOT");
            Tickler t = new Tickler();
            t.setCreator(LoggedInInfo.loggedInInfo.get().loggedInProvider.getProviderNo());
            t.setDemographic_no(cform.getDemographicNo());
            t.setMessage(getMacroTicklerText(ConversionUtils.fromIntString(cform.getAppointmentNo())));
            t.setPriority("Normal");
            t.setService_date(new Date());
            t.setStatus('A');
            t.setTask_assigned_to(macro.getTicklerRecipient());
            t.setUpdate_date(new Date());
            ticklerDao.saveTickler(t);
        }

        // billing
        if (macro.getBillingCodes() != null && macro.getBillingCodes().length() > 0) {
            GstControlDao gstControlDao = (GstControlDao) SpringUtils.getBean("gstControlDao");
            BillingServiceDao billingServiceDao = (BillingServiceDao) SpringUtils.getBean("billingServiceDao");
            DemographicDao demographicDao = (DemographicDao) SpringUtils.getBean("demographicDao");
            Provider provider = LoggedInInfo.loggedInInfo.get().loggedInProvider;
            OscarAppointmentDao apptDao = (OscarAppointmentDao) SpringUtils.getBean("oscarAppointmentDao");

            Appointment appt = null;
            if (cform.getAppointmentNo() != null && cform.getAppointmentNo().length() > 0
                    && !cform.getAppointmentDate().equals("0")) {
                appt = apptDao.find(ConversionUtils.fromIntString(cform.getAppointmentNo()));
            }

            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
            String serviceDate = sf.format(new Date());

            // create a mock httprequest to fill in the preset values
            MockHttpServletRequest mockReq = new MockHttpServletRequest();
            mockReq.addParameter("dxCode", macro.getBillingDxcode());
            String[] bcodes = macro.getBillingCodes().replace("\r", "").split("\n");

            BigDecimal btotal = new BigDecimal(0);
            // must use 100.0 otherwise result will be an int
            BigDecimal gstFactor = new BigDecimal(1 + gstControlDao.find(1).getGstPercent().intValue() / 100.0);
            ArrayList<String[]> percentUnits = new ArrayList<String[]>();
            for (int i = 0; i < bcodes.length; i++) {
                if (StringUtils.isBlank(bcodes[i]))
                    continue;
                String[] codes = bcodes[i].split("\\|");
                mockReq.addParameter("xserviceCode_" + i, codes[0]);
                Object[] priceg = billingServiceDao.getUnitPrice(codes[0], serviceDate);
                mockReq.addParameter("xserviceUnit_" + i, codes[1]);
                String sliCode = OscarProperties.getInstance().getProperty("clinic_no");
                if (codes.length == 3 && !codes[2].equals("NA")) {
                    sliCode = codes[2];
                }
                mockReq.addParameter("xsliCode_" + i, sliCode);
                if (".00".equals(priceg[0])) {
                    percentUnits.add(codes);
                    mockReq.addParameter("percCodeSubtotal_" + i, (String) priceg[0]);
                    // skip to next as we deal with percentage later
                    continue;
                }

                // price is unit_price*unit*at_percent, but in macro we only assume at_percent=1
                // as it's not possible to enter percent value for macros (1-click action).
                BigDecimal price = new BigDecimal((String) priceg[0]).multiply(new BigDecimal(codes[1]));
                if ((Boolean) priceg[1] == true) {
                    // add GST
                    price = price.multiply(gstFactor);
                }
                mockReq.addParameter("percCodeSubtotal_" + i,
                        price.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
                btotal = btotal.add(price).setScale(4, BigDecimal.ROUND_HALF_UP);

            }
            // now process percent codes
            BigDecimal stotal = new BigDecimal(0);
            for (String[] code : percentUnits) {
                String pct = billingServiceDao.getUnitPercentage(code[0], serviceDate);
                stotal = stotal.add(btotal.multiply(new BigDecimal(pct)));
            }
            btotal = btotal.add(stotal);
            mockReq.addParameter("totalItem", "" + bcodes.length);
            mockReq.addParameter("total", btotal.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());

            Demographic demo = demographicDao
                    .getClientByDemographicNo(ConversionUtils.fromIntString(cform.getDemographicNo()));
            mockReq.setParameter("xml_billtype", macro.getBillingBilltype());
            if (macro.getSliCode() == null || macro.getSliCode().equals("NA")) {
                String value = OscarProperties.getInstance().getProperty("clinic_no", "");
                mockReq.setParameter("xml_slicode", value);
            } else {
                mockReq.setParameter("xml_slicode", macro.getSliCode());
            }
            // mockReq.addParameter("xml_billtype", "ODP | Bill OHIP");
            mockReq.addParameter("hin", demo.getHin());
            mockReq.addParameter("ver", demo.getVer());
            mockReq.addParameter("demographic_dob", demo.getDateOfBirth());
            mockReq.addParameter("appointment_no", cform.getAppointmentNo());
            mockReq.addParameter("demographic_name", demo.getLastName() + "," + demo.getFirstName());
            mockReq.addParameter("sex", "F".equalsIgnoreCase(demo.getSex()) ? "2" : "1");
            mockReq.addParameter("hc_type", demo.getHcType());
            String referalNo = getRefNo(demo.getFamilyDoctor());
            mockReq.addParameter("referralCode", referalNo);
            mockReq.addParameter("xml_location", macro.getBillingVisitLocation()); // visit location
            mockReq.addParameter("m_review", "N"); // manual review, always No
            // as it's automated
            mockReq.addParameter("clinic_no",
                    oscar.OscarProperties.getInstance().getProperty("clinic_no", "").trim());
            // clinic_location
            mockReq.addParameter("demographic_no", cform.getDemographicNo());
            mockReq.addParameter("service_date", serviceDate);
            SimpleDateFormat tf = new SimpleDateFormat("HH:mm");
            mockReq.addParameter("start_time", tf.format(new Date()));
            mockReq.addParameter("submit", "Save");
            mockReq.addParameter("comment", macro.getBillingComment());
            mockReq.addParameter("xml_visittype", macro.getBillingVisitType());
            //mockReq.addParameter("xml_vdate", cform.getAppointmentDate());  
            //No admission date in Macro, so give it default NULL instead of appt date.
            mockReq.addParameter("xml_vdate", "");

            mockReq.addParameter("apptProvider_no", appt == null ? "" : appt.getProviderNo());

            if (StringUtils.isBlank(macro.getBillingBillto())) {
                mockReq.addParameter("xml_provider", provider.getProviderNo() + "|" + provider.getOhipNo());
            } else {
                ProviderDao providerDao = (ProviderDao) SpringUtils.getBean("providerDao");
                Provider providerBilling = providerDao.getProvider(macro.getBillingBillto());
                mockReq.addParameter("xml_provider",
                        providerBilling.getProviderNo() + "|" + providerBilling.getOhipNo());
            }

            mockReq.getSession().setAttribute("user",
                    LoggedInInfo.loggedInInfo.get().loggedInProvider.getProviderNo());

            BillingSavePrep bObj = new BillingSavePrep();
            boolean ret = bObj.addABillingRecord(bObj.getBillingClaimObj(mockReq));
            /*
             * not applicable in macro context if (mockReq.getParameter("xml_billtype").substring(0, 3).matches( BillingDataHlp.BILLINGMATCHSTRING_3RDPARTY)) { mockReq.addParameter("billto", macro.getBillingBillto()); mockReq.addParameter("remitto",
             * macro.getBillingRemitto()); mockReq.addParameter("gstBilledTotal", macro .getBillingGstBilledTotal()); mockReq.addParameter("payment", macro.getBillingPayment()); mockReq.addParameter("refund", macro.getBillingRefund());
             * mockReq.addParameter("gst", macro.getBillingGst()); mockReq.addParameter("payMethod", macro.getBillingPayMethod());
             *
             * bObj.addPrivateBillExtRecord(mockReq); }
             */
            // int billingNo = bObj.getBillingId();

            // update appt and close the page
            if (ret) {
                if (!cform.getAppointmentNo().equals("0")) {
                    String apptCurStatus = bObj.getApptStatus(cform.getAppointmentNo());
                    oscar.appt.ApptStatusData as = new oscar.appt.ApptStatusData();
                    String billStatus = as.billStatus(apptCurStatus);
                    bObj.updateApptStatus(cform.getAppointmentNo(), billStatus, cform.getProviderNo());
                }
            } else
                log.error("++++++++++++++ Failed to add billing codes");
        }
    }

    return fwd;
}