public static boolean validate(Operation op, ValidateOperationHandler validateHandler) { try { validateHandler.validate(); return true; } catch (Exception e) { handleValidationException(op, e); return false; } }
private void validateState(ContainerDescription state) { assertNotNull(state.image, "image"); validateContainerName(state.name);
@Test public void testValidatePort() { try { ValidationUtils.validatePort("-1"); fail("expected to fail"); } catch (LocalizableValidationException e) { assertTrue(e.getMessage().contains("not a valid port number")); } try { ValidationUtils.validatePort("65536"); fail("expected to fail"); } catch (LocalizableValidationException e) { assertTrue(e.getMessage().contains("not a valid port number")); } ValidationUtils.validatePort("0"); ValidationUtils.validatePort("80"); ValidationUtils.validatePort("65535"); }
@Override public void handleCreate(Operation post) { if (!checkForBody(post)) { return; } SslTrustCertificateState state = post.getBody(SslTrustCertificateState.class); if (state.documentVersion > 0) { post.complete(); return; } boolean validated = ValidationUtils.validate(post, () -> validateStateOnStart(state)); if (!validated) { return; } post.complete(); notifyLastUpdatedSslTrustDocumentService(); }
@Test public void testValidateHost() { try { ValidationUtils.validateHost("a b"); fail("expected to fail"); } catch (LocalizableValidationException e) { assertTrue(e.getMessage().contains("is not valid")); } try { ValidationUtils.validateHost("a&b"); fail("expected to fail"); } catch (LocalizableValidationException e) { assertTrue(e.getMessage().contains("is not valid")); } try { ValidationUtils.validateHost("a%b"); fail("expected to fail"); } catch (LocalizableValidationException e) { assertTrue(e.getMessage().contains("is not valid")); } try { ValidationUtils.validateHost("a_b"); fail("expected to fail"); } catch (LocalizableValidationException e) { assertTrue(e.getMessage().contains("is not valid")); } ValidationUtils.validateHost("ab"); ValidationUtils.validateHost("a-b"); ValidationUtils.validateHost("a-b.com"); }
@Test public void testValidate() { Exception ex = new LocalizableValidationException("testValidate", "100"); FailHanldingOperation op = new FailHanldingOperation(); boolean isValid = ValidationUtils.validate(op, () -> { throw ex; }); assertFalse(isValid); assertEquals(ex, op.failure); op = new FailHanldingOperation(); isValid = ValidationUtils.validate(op, () -> { }); assertTrue(isValid); assertNull(op.failure); }
@Override public void handlePut(Operation put) { if (!checkForBody(put)) { return; } SslTrustCertificateState body = put.getBody(SslTrustCertificateState.class); SslTrustCertificateState state = getState(put); // these properties can't be modified once set: body.subscriptionLink = state.subscriptionLink; boolean validated = ValidationUtils.validate(put, () -> validateStateOnStart(body)); if (!validated) { return; } this.setState(put, body); put.setBody(body); if (isModified(put, state.certificate, body.certificate)) { put.complete(); notifyLastUpdatedSslTrustDocumentService(); } else { put.complete(); } }
handleValidationException(op, e); return;
@Test public void testValidateContainerName() { try { ValidationUtils.validateContainerName("a"); fail("expected to fail"); } catch (LocalizableValidationException e) { ValidationUtils.validateContainerName("a b"); fail("expected to fail"); } catch (LocalizableValidationException e) { ValidationUtils.validateContainerName("a&b"); fail("expected to fail"); } catch (LocalizableValidationException e) { ValidationUtils.validateContainerName("a%b"); fail("expected to fail"); } catch (LocalizableValidationException e) { ValidationUtils.validateContainerName("_ab"); fail("expected to fail"); } catch (LocalizableValidationException e) { ValidationUtils.validateContainerName("ab_"); ValidationUtils.validateContainerName("a_b"); ValidationUtils.validateContainerName("a-b.com");
@Override public void handlePatch(Operation patch) { if (!checkForBody(patch)) { return; } SslTrustCertificateState body = patch.getBody(SslTrustCertificateState.class); SslTrustCertificateState state = getState(patch); String stateCert = state.certificate; state.certificate = mergeProperty(state.certificate, body.certificate); boolean validated = ValidationUtils.validate(patch, () -> validateStateOnStart(state)); if (!validated) { return; } patch.setBody(state); if (isModified(patch, stateCert, body.certificate)) { patch.complete(); notifyLastUpdatedSslTrustDocumentService(); } else { patch.complete(); } }