StringValidator { public static void validateString(String value, StringParameter param) throws PDUStringException { if (param.getType() == StringType.C_OCTEC_STRING) { if (param.isRangeMinAndMax()) { if (!isCOctetStringValid(value, param.getMax())) { throw new PDUStringException("C-Octet String value '" + value + "' length must be less than " + param.getMax() + ". Actual length is " + value.length(), param); } } else if (!isCOctetStringNullOrNValValid(value, param.getMax())) { throw new PDUStringException( "C-Octet String value '" + value + "' length should be 1 or " + (param.getMax() - 1) + ". Actual length is " + value.length(), param); } } else if (param.getType() == StringType.OCTET_STRING && !isOctetStringValid(value, param.getMax())) { throw new PDUStringException("Octet String value '" + value + "' length must be less than or equal to " + param.getMax() + ". Actual length is " + value.length(), param); } } private  StringValidator(); static void validateString(String value, StringParameter param); static void validateString(byte[] value, StringParameter param);  }
@Test(groups="checkintest") public void testValidation() { try { StringValidator.validateString("", StringParameter.SYSTEM_ID); } catch (PDUStringException e) { fail("Should be okay inserting empty string"); } try { StringValidator.validateString((String)null, StringParameter.SYSTEM_ID); } catch (PDUStringException e) { fail("Should be okay inserting null string"); } try { StringValidator.validateString("smsgw", StringParameter.SYSTEM_ID); } catch (PDUStringException e) { fail("Should be okay inserting string that has length less than 16"); } try { StringValidator.validateString("smsgwsmsgwsmsgw", StringParameter.SYSTEM_ID); } catch (PDUStringException e) { fail("Should be okay inserting 15 char of string"); } try { StringValidator.validateString("smsgwsmsgwsmsgwe", StringParameter.SYSTEM_ID); fail("Should fail inserting 16 char of string"); } catch (PDUStringException e) { } try { StringValidator.validateString("smsgwsmsgwsmsgwee", StringParameter.SYSTEM_ID); fail("Should be fail inserting 17 char of string"); } catch (PDUStringException e) { } }
@Test(groups="checkintest") public void validateStringOctedStringWithString() throws Exception { StringValidator.validateString("", StringParameter.SHORT_MESSAGE); StringValidator.validateString("short messages", StringParameter.SHORT_MESSAGE); String shortMessage = "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567" + "89012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901" + "234567890123456789012345678901234567890123456789012345678901234"; StringValidator.validateString(shortMessage, StringParameter.SHORT_MESSAGE); try { shortMessage = shortMessage + "5"; StringValidator.validateString(shortMessage, StringParameter.SHORT_MESSAGE); fail("PDUStringException expected"); } catch (PDUStringException e) { assertEquals(e.getMessage(), "Octet String value '" + shortMessage + "' length must be less than or equal " + "to 254. Actual length is 255"); } }
@Test(groups="checkintest") public void validateStringOctedStringWithByteArray() throws Exception { StringValidator.validateString("".getBytes("UTF-8"), StringParameter.SHORT_MESSAGE); StringValidator.validateString("short messages".getBytes("UTF-8"), StringParameter.SHORT_MESSAGE); String shortMessage = "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567" + "89012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901" + "234567890123456789012345678901234567890123456789012345678901234"; StringValidator.validateString(shortMessage.getBytes("UTF-8"), StringParameter.SHORT_MESSAGE); try { shortMessage = shortMessage + "5"; StringValidator.validateString(shortMessage.getBytes("UTF-8"), StringParameter.SHORT_MESSAGE); fail("PDUStringException expected"); } catch (PDUStringException e) { assertEquals(e.getMessage(), "Octet String value '" + shortMessage + "' length must be less than or equal " + "to 254. Actual length is 255"); } }
@Test(groups="checkintest") public void validateStringCOctedStringWithString() throws Exception { StringValidator.validateString("", StringParameter.SYSTEM_ID); StringValidator.validateString("System ID", StringParameter.SYSTEM_ID); StringValidator.validateString("123456789012345", StringParameter.SYSTEM_ID); try { StringValidator.validateString("1234567890123456", StringParameter.SYSTEM_ID); fail("PDUStringException expected"); } catch (PDUStringException e) { assertEquals(e.getMessage(), "C-Octet String value '1234567890123456' length must be less than 16. " + "Actual length is 16"); } }
@Test(groups="checkintest") public void validateStringCOctedStringWithByteArray() throws Exception { StringValidator.validateString("".getBytes("UTF-8"), StringParameter.SYSTEM_ID); StringValidator.validateString("System ID".getBytes("UTF-8"), StringParameter.SYSTEM_ID); StringValidator.validateString("123456789012345".getBytes("UTF-8"), StringParameter.SYSTEM_ID); try { StringValidator.validateString("1234567890123456".getBytes("UTF-8"), StringParameter.SYSTEM_ID); fail("PDUStringException expected"); } catch (PDUStringException e) { assertEquals(e.getMessage(), "C-Octet String value '1234567890123456' length must be less than 16. " + "Actual length is 16"); } }
@Test(groups="checkintest") public void validateStringCOctedStringWithStringAndWithoutARange() throws Exception { StringValidator.validateString("", StringParameter.SCHEDULE_DELIVERY_TIME); StringValidator.validateString("020610233429000R", StringParameter.SCHEDULE_DELIVERY_TIME); try { StringValidator.validateString("020610233429000RX", StringParameter.SCHEDULE_DELIVERY_TIME); fail("PDUStringException expected"); } catch (PDUStringException e) { assertEquals(e.getMessage(), "C-Octet String value '020610233429000RX' length should be 1 or 16. Actual " + "length is 17"); } }
@Test(groups="checkintest") public void validateStringCOctedStringWithByteArrayAndWithoutARange() throws Exception { StringValidator.validateString("".getBytes("UTF-8"), StringParameter.SCHEDULE_DELIVERY_TIME); StringValidator.validateString("020610233429000R".getBytes("UTF-8"), StringParameter.SCHEDULE_DELIVERY_TIME); try { StringValidator.validateString("020610233429000RX".getBytes("UTF-8"), StringParameter.SCHEDULE_DELIVERY_TIME); fail("PDUStringException expected"); } catch (PDUStringException e) { assertEquals(e.getMessage(), "C-Octet String value '020610233429000RX' length should be 1 or 16. Actual " + "length is 17"); } }