public static void checkRequest(boolean expression, List<String> messages) { if (!expression) { throw BadRequestException.create(messages); } }
@Test public void text_error() { BadRequestException exception = BadRequestException.create("error"); assertThat(exception.getMessage()).isEqualTo("error"); }
private void validateCustomRule(NewCustomRule newRule, DbSession dbSession, RuleKey templateKey) { List<String> errors = new ArrayList<>(); validateRuleKey(errors, newRule.ruleKey()); validateName(errors, newRule); validateDescription(errors, newRule); String severity = newRule.severity(); if (Strings.isNullOrEmpty(severity)) { errors.add("The severity is missing"); } else if (!Severity.ALL.contains(severity)) { errors.add(format("Severity \"%s\" is invalid", severity)); } if (newRule.status() == null) { errors.add("The status is missing"); } for (RuleParamDto ruleParam : dbClient.ruleDao().selectRuleParamsByRuleKey(dbSession, templateKey)) { try { validateParam(ruleParam, newRule.parameter(ruleParam.getName())); } catch (BadRequestException validationError) { errors.addAll(validationError.errors()); } } checkRequest(errors.isEmpty(), errors); }
private void expectFailure(String expectedMessage, Runnable runnable) { try { runnable.run(); fail(); } catch (BadRequestException e) { assertThat(e.getMessage()).isEqualTo(expectedMessage); } verifyNoActiveRules(); }
public static BadRequestException create(List<String> errorMessages) { checkArgument(!errorMessages.isEmpty(), "At least one error message is required"); checkArgument(errorMessages.stream().noneMatch(message -> message == null || message.isEmpty()), "Message cannot be empty"); return new BadRequestException(errorMessages); }
@Test public void fail_with_BadRequestException_when_EmailException_is_generated() throws Exception { logInAsSystemAdministrator(); IllegalArgumentException exception1 = new IllegalArgumentException("root cause"); IllegalArgumentException exception2 = new IllegalArgumentException("parent cause", exception1); IllegalArgumentException exception3 = new IllegalArgumentException("child cause", exception2); EmailException emailException = new EmailException("last message", exception3); doThrow(emailException).when(emailNotificationChannel).sendTestEmail(anyString(), anyString(), anyString()); try { executeRequest("john@doo.com", "Test Message from SonarQube", "This is a test message from SonarQube at http://localhost:9000"); fail(); } catch (BadRequestException e) { assertThat(e.errors()).containsExactly( "root cause", "parent cause", "child cause", "last message"); } }
@Test public void fail_on_unknown_type() { TypeValidation fakeTypeValidation = mock(TypeValidation.class); when(fakeTypeValidation.key()).thenReturn("Fake"); try { TypeValidations typeValidations = new TypeValidations(newArrayList(fakeTypeValidation)); typeValidations.validate("10", "Unknown", null); fail(); } catch (Exception e) { assertThat(e).isInstanceOf(BadRequestException.class); BadRequestException badRequestException = (BadRequestException) e; assertThat(badRequestException.getMessage()).isEqualTo("Type 'Unknown' is not valid."); } }
public static BadRequestException create(List<String> errorMessages) { checkArgument(!errorMessages.isEmpty(), "At least one error message is required"); checkArgument(errorMessages.stream().noneMatch(message -> message == null || message.isEmpty()), "Message cannot be empty"); return new BadRequestException(errorMessages); }
/** * @throws BadRequestException */ public static void checkRequest(boolean expression, String message, Object... messageArguments) { if (!expression) { throw BadRequestException.create(format(message, messageArguments)); } }
} catch (BadRequestException e) { result.incrementFailed(); result.getErrors().addAll(e.errors());
@Test public void getMessage_return_first_error() { BadRequestException underTest = BadRequestException.create(asList("error1", "error2")); assertThat(underTest.getMessage()).isEqualTo("error1"); }
public Optional<UserDto> authenticate(HttpServletRequest request, HttpServletResponse response) { try { return doAuthenticate(request, response); } catch (BadRequestException e) { throw AuthenticationException.newBuilder() .setSource(Source.sso()) .setMessage(e.getMessage()) .build(); } }
public static BadRequestException create(String... errorMessages) { return create(asList(errorMessages)); }
private BulkChangeResult doBulk(DbSession dbSession, QProfileDto profile, RuleQuery ruleQuery, BiFunction<RuleActivationContext, RuleDefinitionDto, List<ActiveRuleChange>> fn) { BulkChangeResult result = new BulkChangeResult(); Collection<Integer> ruleIds = Sets.newHashSet(ruleIndex.searchAll(ruleQuery)); RuleActivationContext context = ruleActivator.createContextForUserProfile(dbSession, profile, ruleIds); for (Integer ruleId : ruleIds) { try { context.reset(ruleId); RuleDefinitionDto ruleDefinition = context.getRule().get(); List<ActiveRuleChange> changes = fn.apply(context, ruleDefinition); result.addChanges(changes); if (!changes.isEmpty()) { result.incrementSucceeded(); } } catch (BadRequestException e) { // other exceptions stop the bulk activation result.incrementFailed(); result.getErrors().addAll(e.errors()); } } activeRuleIndexer.commitAndIndex(dbSession, result.getChanges()); return result; } }
@Test public void activate_rule_diff_languages() { QProfileDto profile = createProfile("java"); RuleDefinitionDto rule = createRule("php", "toto"); ruleIndexer.commitAndIndex(dbSession, rule.getId()); // 0. Assert No Active Rule for profile assertThat(dbClient.activeRuleDao().selectByProfileUuid(dbSession, profile.getKee())).isEmpty(); try { // 1. Activate Rule wsActivateRule.newRequest().setMethod("POST") .setParam(PARAM_KEY, profile.getKee()) .setParam(PARAM_RULE, rule.getKey().toString()) .execute(); dbSession.clearCache(); fail(); } catch (BadRequestException e) { assertThat(e.getMessage()).isEqualTo("php rule blah:toto cannot be activated on java profile Pjava"); } }
@Override public void validate(String value, @Nullable List<String> options) { try { Long.parseLong(value); } catch (NumberFormatException e) { throw BadRequestException.create(format("Value '%s' must be a long.", value)); } } }
public void execute(Request request, Response response) { try { ActionExtractor actionExtractor = new ActionExtractor(request.getPath()); WebService.Action action = getAction(actionExtractor); checkFound(action, "Unknown url : %s", request.getPath()); if (request instanceof ValidatingRequest) { ((ValidatingRequest) request).setAction(action); ((ValidatingRequest) request).setLocalConnector(this); } checkActionExtension(actionExtractor.getExtension()); verifyRequest(action, request); action.handler().handle(request, response); } catch (IllegalArgumentException e) { sendErrors(request, response, e, 400, singletonList(e.getMessage())); } catch (BadRequestException e) { sendErrors(request, response, e, 400, e.errors()); } catch (ServerException e) { sendErrors(request, response, e, e.httpCode(), singletonList(e.getMessage())); } catch (Exception e) { sendErrors(request, response, e, 500, singletonList("An error has occurred. Please contact your administrator")); } }
@Test public void execute_fails_with_BadRequestException_if_specified_component_is_neither_a_project_a_portfolio_nor_an_application() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto project = randomPublicOrPrivateProject(); ComponentDto module = ComponentTesting.newModuleDto(project); ComponentDto dir = ComponentTesting.newDirectory(project, "path"); ComponentDto file = ComponentTesting.newFileDto(project); dbTester.components().insertComponents(module, dir, file); ComponentDto application = dbTester.components().insertApplication(organization); ComponentDto portfolio = dbTester.components().insertView(organization); ComponentDto subView = ComponentTesting.newSubView(portfolio); ComponentDto projectCopy = newProjectCopy("foo", project, subView); dbTester.components().insertComponents(subView, projectCopy); userSessionRule.addProjectPermission(UserRole.ADMIN, project, portfolio, application); Stream.of(project, portfolio, application).forEach(c -> request .setParam(PARAM_PROJECT, c.getDbKey()) .setParam(PARAM_VISIBILITY, randomVisibility) .execute()); Stream.of(module, dir, file, subView, projectCopy) .forEach(nonRootComponent -> { request.setParam(PARAM_PROJECT, nonRootComponent.getDbKey()) .setParam(PARAM_VISIBILITY, randomVisibility); try { request.execute(); fail("a BadRequestException should have been raised"); } catch (BadRequestException e) { assertThat(e.getMessage()).isEqualTo("Component must be a project, a portfolio or an application"); } }); }