diff options
author | Evgeny Mandrikov <Godin@users.noreply.github.com> | 2016-05-09 14:49:51 +0200 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2016-05-09 16:49:51 +0400 |
commit | 84d384a1dcf882eee912033382831968f6949cce (patch) | |
tree | 70169cb94b5d768ed2994013618f7ed073353fc2 /server/sonar-server | |
parent | 18d88fb429fbee1fb7b8aa4fc7d2dcb3021bb093 (diff) | |
download | sonarqube-84d384a1dcf882eee912033382831968f6949cce.tar.gz sonarqube-84d384a1dcf882eee912033382831968f6949cce.zip |
SONAR-6424 Colon character should be escaped in URL (#931)
Diffstat (limited to 'server/sonar-server')
-rw-r--r-- | server/sonar-server/src/main/java/org/sonar/server/text/RuleMacro.java | 3 | ||||
-rw-r--r-- | server/sonar-server/src/test/java/org/sonar/server/text/MacroInterpreterTest.java | 13 |
2 files changed, 6 insertions, 10 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/text/RuleMacro.java b/server/sonar-server/src/main/java/org/sonar/server/text/RuleMacro.java index a9755c34c6e..93456222514 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/text/RuleMacro.java +++ b/server/sonar-server/src/main/java/org/sonar/server/text/RuleMacro.java @@ -21,6 +21,7 @@ package org.sonar.server.text; class RuleMacro implements Macro { + private static final String COLON = "%3A"; private final String contextPath; RuleMacro(String contextPath) { @@ -37,6 +38,6 @@ class RuleMacro implements Macro { @Override public String getReplacement() { - return "<a href='" + contextPath + "/coding_rules#rule_key=$1:$2'>$2</a>"; + return "<a href='" + contextPath + "/coding_rules#rule_key=$1" + COLON + "$2'>$2</a>"; } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/text/MacroInterpreterTest.java b/server/sonar-server/src/test/java/org/sonar/server/text/MacroInterpreterTest.java index dbcf65d8fc9..153dbc9dab7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/text/MacroInterpreterTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/text/MacroInterpreterTest.java @@ -48,17 +48,12 @@ public class MacroInterpreterTest { @Test public void should_replace_rule_macro() { - String ruleKey = "repo:key"; + // key of repository and rule can contain alphanumeric latin characters, dashes, underscores and dots + String ruleKey = "Some_Repo-Key.1:Some_Rule-Key.1"; String origin = "See {rule:" + ruleKey + "} for detail."; String result = interpreter.interpret(origin); - assertThat(result).isEqualTo("See <a href='" + path + "/coding_rules#rule_key=" + ruleKey + "'>key</a> for detail."); + // colon should be escaped + assertThat(result).isEqualTo("See <a href='" + path + "/coding_rules#rule_key=Some_Repo-Key.1%3ASome_Rule-Key.1'>Some_Rule-Key.1</a> for detail."); } - @Test - public void should_replace_rule_macro_containing_digit_and_dash() { - String ruleKey = "my-repo1:my-key1"; - String origin = "See {rule:" + ruleKey + "} for detail."; - String result = interpreter.interpret(origin); - assertThat(result).isEqualTo("See <a href='" + path + "/coding_rules#rule_key=" + ruleKey + "'>my-key1</a> for detail."); - } } |