aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-server
diff options
context:
space:
mode:
authorEvgeny Mandrikov <Godin@users.noreply.github.com>2016-05-09 14:49:51 +0200
committerStas Vilchik <vilchiks@gmail.com>2016-05-09 16:49:51 +0400
commit84d384a1dcf882eee912033382831968f6949cce (patch)
tree70169cb94b5d768ed2994013618f7ed073353fc2 /server/sonar-server
parent18d88fb429fbee1fb7b8aa4fc7d2dcb3021bb093 (diff)
downloadsonarqube-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.java3
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/text/MacroInterpreterTest.java13
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.");
- }
}