WW-3952 Adds test to check implementation
Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/fc497360 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/fc497360 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/fc497360 Branch: refs/heads/master Commit: fc497360bee7084293749f712dec233eb219bbf4 Parents: 01d710b Author: Lukasz Lenart <lukaszlen...@apache.org> Authored: Wed Apr 19 18:06:17 2017 +0200 Committer: Lukasz Lenart <lukaszlen...@apache.org> Committed: Wed Apr 19 18:06:17 2017 +0200 ---------------------------------------------------------------------- .../validators/CreditCardValidatorTest.java | 230 +++++++++++++++++++ 1 file changed, 230 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/fc497360/core/src/test/java/com/opensymphony/xwork2/validator/validators/CreditCardValidatorTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/com/opensymphony/xwork2/validator/validators/CreditCardValidatorTest.java b/core/src/test/java/com/opensymphony/xwork2/validator/validators/CreditCardValidatorTest.java new file mode 100644 index 0000000..877b964 --- /dev/null +++ b/core/src/test/java/com/opensymphony/xwork2/validator/validators/CreditCardValidatorTest.java @@ -0,0 +1,230 @@ +package com.opensymphony.xwork2.validator.validators; + +import com.opensymphony.xwork2.TextProviderFactory; +import com.opensymphony.xwork2.util.ValueStack; +import com.opensymphony.xwork2.util.ValueStackFactory; +import com.opensymphony.xwork2.validator.DummyValidatorContext; +import com.opensymphony.xwork2.validator.ValidatorContext; +import org.apache.struts2.StrutsInternalTestCase; + +import java.util.Arrays; +import java.util.List; + +public class CreditCardValidatorTest extends StrutsInternalTestCase { + + private CreditCardValidator validator; + private CreditCardAction action; + private ValidatorContext context; + + public void testInvalidCardNumber() throws Exception { + // given + action.setAmericanExpress("123456768900"); + validator.setFieldName("americanExpress"); + validator.setDefaultMessage("It is not a valid American Express card number: ${americanExpress}"); + + // when + validator.validate(action); + + // then + assertTrue(context.hasFieldErrors()); + assertEquals(1, context.getFieldErrors().size()); + assertEquals("It is not a valid American Express card number: 123456768900", context.getFieldErrors().get("americanExpress").get(0)); + } + + public void testInvalidArrayOfCardNumbers() throws Exception { + // given + action.setAmericanExpresses(new String[]{"098776544322"}); + validator.setFieldName("americanExpresses"); + validator.setDefaultMessage("It is not a valid American Express card number: ${currentValue}"); + + // when + validator.validate(action); + + // then + assertTrue(context.hasFieldErrors()); + assertEquals(1, context.getFieldErrors().size()); + assertEquals("It is not a valid American Express card number: 098776544322", context.getFieldErrors().get("americanExpresses").get(0)); + } + + public void testEmptyArrayOfCardNumbers() throws Exception { + // given + action.setAmericanExpresses(new String[]{}); + validator.setFieldName("americanExpresses"); + validator.setDefaultMessage("It is not a valid American Express card number: ${currentValue}"); + + // when + validator.validate(action); + + // then + assertFalse(context.hasFieldErrors()); + } + + public void testInvalidCollectionOfCardNumbers() throws Exception { + // given + action.setDinerClubs(Arrays.asList("75736151433")); + validator.setFieldName("dinerClubs"); + validator.setDefaultMessage("It is not a valid Diner Club card number: ${currentValue}"); + + // when + validator.validate(action); + + // then + assertTrue(context.hasFieldErrors()); + assertEquals(1, context.getFieldErrors().size()); + assertEquals("It is not a valid Diner Club card number: 75736151433", context.getFieldErrors().get("dinerClubs").get(0)); + } + + public void testValidAmericanExpressCard() throws Exception { + // given + action.setAmericanExpress("378282246310005"); + validator.setFieldName("americanExpress"); + + // when + validator.validate(action); + + // then + assertFalse(context.hasFieldErrors()); + } + + public void testValidAmericanExpressCardWithSpaces() throws Exception { + // given + action.setAmericanExpress("3782 8224 6310 005"); + validator.setFieldName("americanExpress"); + + // when + validator.validate(action); + + // then + assertFalse(context.hasFieldErrors()); + } + + public void testValidDinersClubCard() throws Exception { + // given + action.setDinersClub("30569309025904"); + validator.setFieldName("dinersClub"); + + // when + validator.validate(action); + + // then + assertFalse(context.hasFieldErrors()); + } + + public void testValidJCBCard() throws Exception { + // given + action.setJCB("3530111333300000"); + validator.setFieldName("JCB"); + + // when + validator.validate(action); + + // then + assertFalse(context.hasFieldErrors()); + } + + public void testMasterCardCard() throws Exception { + // given + action.setMasterCard("5555555555554444"); + validator.setFieldName("masterCard"); + + // when + validator.validate(action); + + // then + assertFalse(context.hasFieldErrors()); + } + + public void testVisaCard() throws Exception { + // given + action.setVisa("4111111111111111"); + validator.setFieldName("visa"); + + // when + validator.validate(action); + + // then + assertFalse(context.hasFieldErrors()); + } + + protected void setUp() throws Exception { + super.setUp(); + validator = new CreditCardValidator(); + action = new CreditCardAction(); + TextProviderFactory tpf = container.getInstance(TextProviderFactory.class); + context = new DummyValidatorContext(action, tpf); + validator.setValidatorContext(context); + + ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack(); + valueStack.push(action); + + validator.setValueStack(valueStack); + } + +} + +class CreditCardAction { + + private String americanExpress; + private String dinersClub; + private String JCB; + private String masterCard; + private String visa; + private String[] americanExpresses; + private List<String> dinerClubs; + + public void setAmericanExpress(String americanExpress) { + this.americanExpress = americanExpress; + } + + public String getAmericanExpress() { + return americanExpress; + } + + public void setDinersClub(String dinersClub) { + this.dinersClub = dinersClub; + } + + public String getDinersClub() { + return dinersClub; + } + + public void setJCB(String JCB) { + this.JCB = JCB; + } + + public String getJCB() { + return JCB; + } + + public void setMasterCard(String masterCard) { + this.masterCard = masterCard; + } + + public String getMasterCard() { + return masterCard; + } + + public void setVisa(String visa) { + this.visa = visa; + } + + public String getVisa() { + return visa; + } + + public void setAmericanExpresses(String[] americanExpresses) { + this.americanExpresses = americanExpresses; + } + + public String[] getAmericanExpresses() { + return americanExpresses; + } + + public void setDinerClubs(List<String> dinerClubs) { + this.dinerClubs = dinerClubs; + } + + public List<String> getDinerClubs() { + return dinerClubs; + } +}