public void testSameAliasWithDifferentClass() { mockValidatorFileParser.expectAndReturn( "parseActionValidatorConfigs", C.args( C.IS_NOT_NULL, C.IS_NOT_NULL, C.eq("com/opensymphony/xwork2/SimpleAction-validation.xml")), new ArrayList()); mockValidatorFileParser.expectAndReturn( "parseActionValidatorConfigs", C.args( C.IS_NOT_NULL, C.IS_NOT_NULL, C.eq("com/opensymphony/xwork2/SimpleAction-validationAlias-validation.xml")), new ArrayList()); mockValidatorFileParser.expectAndReturn( "parseActionValidatorConfigs", C.args( C.IS_NOT_NULL, C.IS_NOT_NULL, C.eq("com/opensymphony/xwork2/test/SimpleAction2-validation.xml")), new ArrayList()); mockValidatorFileParser.expectAndReturn( "parseActionValidatorConfigs", C.args( C.IS_NOT_NULL, C.IS_NOT_NULL, C.eq("com/opensymphony/xwork2/test/SimpleAction2-validationAlias-validation.xml")), new ArrayList()); actionValidatorManager.getValidators(SimpleAction.class, alias); actionValidatorManager.getValidators(SimpleAction2.class, alias); mockValidatorFileParser.verify(); }
/** * Test to verify WW-3850. * * @since 2.3.5 */ public void testBuildsValidatorsForClassError() { // for this test we need to have a file manager with reloadingConfigs to true container.getInstance(FileManagerFactory.class).getFileManager().setReloadingConfigs(true); // no validator found, but no check on file since it is not in cache actionValidatorManager.getValidators(List.class, null); // this second call will try reload a not existing file // and causes a NPE (see WW-3850) try { actionValidatorManager.getValidators(List.class, null); } catch (Exception e) { fail("Exception occurred " + e); } }
public void testGetValidatorsFromInterface() { mockValidatorFileParser.expectAndReturn( "parseActionValidatorConfigs", C.args( C.IS_NOT_NULL, C.IS_NOT_NULL, C.eq("com/opensymphony/xwork2/SimpleAction-validation.xml")), new ArrayList()); mockValidatorFileParser.expectAndReturn( "parseActionValidatorConfigs", C.args( C.IS_NOT_NULL, C.IS_NOT_NULL, C.eq("com/opensymphony/xwork2/SimpleAction-validationAlias-validation.xml")), new ArrayList()); mockValidatorFileParser.expectAndReturn( "parseActionValidatorConfigs", C.args( C.IS_NOT_NULL, C.IS_NOT_NULL, C.eq("com/opensymphony/xwork2/test/DataAware-validation.xml")), new ArrayList()); mockValidatorFileParser.expectAndReturn( "parseActionValidatorConfigs", C.args( C.IS_NOT_NULL, C.IS_NOT_NULL, C.eq("com/opensymphony/xwork2/test/DataAware-validationAlias-validation.xml")), new ArrayList()); actionValidatorManager.getValidators(SimpleAction3.class, alias); mockValidatorFileParser.verify(); }
@Override protected void setUp() throws Exception { actionValidatorManager = new DefaultActionValidatorManager(); super.setUp(); mockValidatorFileParser = new Mock(ValidatorFileParser.class); actionValidatorManager.setValidatorFileParser( (ValidatorFileParser) mockValidatorFileParser.proxy()); mockValidatorFactory = new Mock(ValidatorFactory.class); actionValidatorManager.setValidatorFactory((ValidatorFactory) mockValidatorFactory.proxy()); stubValueStack = new StubValueStack(); ActionContext.setContext(new ActionContext(new HashMap<String, Object>())); ActionContext.getContext().setValueStack(stubValueStack); DefaultFileManagerFactory factory = new DefaultFileManagerFactory(); factory.setContainer(container); factory.setFileManager(new DefaultFileManager()); actionValidatorManager.setFileManagerFactory(factory); }
public void testBuildsValidatorsForAliasError() { boolean pass = false; try { mockValidatorFileParser.expectAndReturn( "parseActionValidatorConfigs", C.args( C.IS_NOT_NULL, C.IS_NOT_NULL, C.eq("com/opensymphony/xwork2/TestBean-validation.xml")), new ArrayList()); mockValidatorFileParser.expectAndThrow( "parseActionValidatorConfigs", C.args( C.IS_NOT_NULL, C.IS_NOT_NULL, C.eq("com/opensymphony/xwork2/TestBean-badtest-validation.xml")), new ConfigurationException()); List validatorList = actionValidatorManager.getValidators(TestBean.class, "badtest"); } catch (XWorkException ex) { pass = true; } mockValidatorFileParser.verify(); assertTrue("Didn't throw exception on load failure", pass); }
public void testValidate() throws Exception { /* MockAction.class */ // reference number ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack(); final RequiredStringValidator referenceNumberRequiredStringValidator = new RequiredStringValidator(); referenceNumberRequiredStringValidator.setFieldName("referenceNumber"); referenceNumberRequiredStringValidator.setDefaultMessage("Reference number is required"); referenceNumberRequiredStringValidator.setValueStack(stack); // order final RequiredFieldValidator orderRequiredValidator = new RequiredFieldValidator(); orderRequiredValidator.setFieldName("order"); orderRequiredValidator.setDefaultMessage("Order is required"); orderRequiredValidator.setValueStack(stack); // customer final RequiredFieldValidator customerRequiredValidator = new RequiredFieldValidator(); customerRequiredValidator.setFieldName("customer"); customerRequiredValidator.setDefaultMessage("Customer is required"); customerRequiredValidator.setValueStack(stack); final VisitorFieldValidator customerVisitorValidator = new VisitorFieldValidator(); customerVisitorValidator.setAppendPrefix(true); customerVisitorValidator.setFieldName("customer"); customerVisitorValidator.setValueStack(stack); /* Customer.class */ // customer -> name final RequiredStringValidator customerNameRequiredStringValidator = new RequiredStringValidator(); customerNameRequiredStringValidator.setFieldName("name"); customerNameRequiredStringValidator.setDefaultMessage("Name is required"); customerNameRequiredStringValidator.setValueStack(stack); // customer -> age final RequiredFieldValidator customerAgeRequiredValidator = new RequiredFieldValidator(); customerAgeRequiredValidator.setFieldName("age"); customerAgeRequiredValidator.setDefaultMessage("Age is required"); customerAgeRequiredValidator.setValueStack(stack); // customer -> Address final RequiredFieldValidator customerAddressRequiredFieldValidator = new RequiredFieldValidator(); customerAddressRequiredFieldValidator.setFieldName("address"); customerAddressRequiredFieldValidator.setDefaultMessage("Address is required"); customerAddressRequiredFieldValidator.setValueStack(stack); final VisitorFieldValidator customerAddressVisitorFieldValidator = new VisitorFieldValidator(); customerAddressVisitorFieldValidator.setFieldName("address"); customerAddressVisitorFieldValidator.setAppendPrefix(true); // customerAddressVisitorFieldValidator.setDefaultMessage(""); customerAddressVisitorFieldValidator.setValueStack(stack); /* Address.class */ // customer -> Address -> street final RequiredStringValidator customerAddressStreetRequiredFieldValidator = new RequiredStringValidator(); customerAddressStreetRequiredFieldValidator.setFieldName("street"); customerAddressStreetRequiredFieldValidator.setDefaultMessage("Street is required"); customerAddressStreetRequiredFieldValidator.setShortCircuit(true); customerAddressStreetRequiredFieldValidator.setValueStack(stack); final RequiredStringValidator customerAddressStreetRequiredFieldValidator2 = new RequiredStringValidator(); customerAddressStreetRequiredFieldValidator2.setFieldName("street"); customerAddressStreetRequiredFieldValidator2.setDefaultMessage("Street is required 2"); customerAddressStreetRequiredFieldValidator2.setShortCircuit(true); customerAddressStreetRequiredFieldValidator2.setValueStack(stack); // customer -> Address -> pobox final RequiredStringValidator customerAddressPoboxRequiredFieldValidator = new RequiredStringValidator(); customerAddressPoboxRequiredFieldValidator.setFieldName("pobox"); customerAddressPoboxRequiredFieldValidator.setDefaultMessage("PO Box is required"); customerAddressPoboxRequiredFieldValidator.setShortCircuit(false); customerAddressPoboxRequiredFieldValidator.setValueStack(stack); final RequiredStringValidator customerAddressPoboxRequiredFieldValidator2 = new RequiredStringValidator(); customerAddressPoboxRequiredFieldValidator2.setFieldName("pobox"); customerAddressPoboxRequiredFieldValidator2.setDefaultMessage("PO Box is required 2"); customerAddressPoboxRequiredFieldValidator2.setShortCircuit(false); customerAddressPoboxRequiredFieldValidator2.setValueStack(stack); final List<Validator> validatorsForMockAction = new ArrayList<Validator>() { { add(referenceNumberRequiredStringValidator); add(orderRequiredValidator); add(customerRequiredValidator); add(customerVisitorValidator); } }; final List<Validator> validatorsForCustomer = new ArrayList<Validator>() { { add(customerNameRequiredStringValidator); add(customerAgeRequiredValidator); add(customerAddressRequiredFieldValidator); add(customerAddressVisitorFieldValidator); } }; final List<Validator> validatorsForAddress = new ArrayList<Validator>() { { add(customerAddressStreetRequiredFieldValidator); add(customerAddressStreetRequiredFieldValidator2); add(customerAddressPoboxRequiredFieldValidator); add(customerAddressPoboxRequiredFieldValidator2); } }; DefaultActionValidatorManager validatorManager = new DefaultActionValidatorManager() { @Override public List<Validator> getValidators(Class clazz, String context, String method) { if (clazz.isAssignableFrom(MockAction.class)) { return validatorsForMockAction; } else if (clazz.isAssignableFrom(Customer.class)) { return validatorsForCustomer; } else if (clazz.isAssignableFrom(Address.class)) { return validatorsForAddress; } return Collections.emptyList(); } }; customerVisitorValidator.setActionValidatorManager(validatorManager); customerAddressVisitorFieldValidator.setActionValidatorManager(validatorManager); MockAction action = new MockAction(); stack.push(action); validatorManager.validate(action, "ctx"); assertFalse(action.hasActionErrors()); assertFalse(action.hasActionMessages()); assertTrue(action.hasFieldErrors()); assertTrue(action.getFieldErrors().containsKey("referenceNumber")); assertEquals((action.getFieldErrors().get("referenceNumber")).size(), 1); assertTrue(action.getFieldErrors().containsKey("order")); assertEquals((action.getFieldErrors().get("order")).size(), 1); assertTrue(action.getFieldErrors().containsKey("customer.name")); assertEquals((action.getFieldErrors().get("customer.name")).size(), 1); assertTrue(action.getFieldErrors().containsKey("customer.age")); assertEquals((action.getFieldErrors().get("customer.age")).size(), 1); assertTrue(action.getFieldErrors().containsKey("customer.address.street")); assertEquals((action.getFieldErrors().get("customer.address.street")).size(), 1); assertTrue(action.getFieldErrors().containsKey("customer.address.pobox")); assertEquals((action.getFieldErrors().get("customer.address.pobox")).size(), 2); }
public void testBuildValidatorKey() { String validatorKey = DefaultActionValidatorManager.buildValidatorKey(SimpleAction.class, alias); assertEquals(SimpleAction.class.getName() + "/" + alias, validatorKey); }