Commit aae0586200f131a124db927e92fef3a0e767db6a

Authored by bernard
1 parent 1d7db5f9

Safer URI building - adjust Filter.toString

... ... @@ -4,8 +4,6 @@ import pl.com.it_crowd.youtrack.api.defaults.DateValues;
4 4 import pl.com.it_crowd.youtrack.api.defaults.Fields;
5 5 import pl.com.it_crowd.youtrack.api.defaults.StateValues;
6 6
7   -import java.io.UnsupportedEncodingException;
8   -import java.net.URLEncoder;
9 7 import java.util.ArrayList;
10 8 import java.util.List;
11 9
... ... @@ -106,23 +104,14 @@ public final class Filter {
106 104 public String toString()
107 105 {
108 106 StringBuilder builder = new StringBuilder();
109   - String space;
110   - try {
111   - space = URLEncoder.encode(" ", "UTF-8");
112   - } catch (UnsupportedEncodingException e) {
113   - throw new RuntimeException(e);
114   - }
  107 + String space = " ";
115 108 for (Condition condition : conditions) {
116 109 builder.append(space);
117 110 if (condition.field != null) {
118 111 builder.append(condition.field.getCommand());
119 112 builder.append(":");
120 113 }
121   - try {
122   - builder.append(URLEncoder.encode(condition.value, "UTF-8"));
123   - } catch (UnsupportedEncodingException e) {
124   - throw new RuntimeException(e);
125   - }
  114 + builder.append(condition.value);
126 115 }
127 116 if (maxResults > 0) {
128 117 builder.append("&max=").append(maxResults);
... ...
... ... @@ -6,21 +6,7 @@ import pl.com.it_crowd.youtrack.api.Filter;
6 6 import pl.com.it_crowd.youtrack.api.defaults.DateValues;
7 7 import pl.com.it_crowd.youtrack.api.defaults.StateValues;
8 8
9   -import java.io.UnsupportedEncodingException;
10   -import java.net.URLEncoder;
11   -
12 9 public class FilterTest {
13   -// -------------------------- STATIC METHODS --------------------------
14   -
15   - private static String encodeURL(String s)
16   - {
17   - try {
18   - return URLEncoder.encode(s, "UTF-8");
19   - } catch (UnsupportedEncodingException e) {
20   - throw new RuntimeException(e);
21   - }
22   - }
23   -
24 10 // -------------------------- OTHER METHODS --------------------------
25 11
26 12 @Test
... ... @@ -30,10 +16,10 @@ public class FilterTest {
30 16 final String updaterJacek = "updated by:Jacek";
31 17 final String projectTST_QA = "project:TST_QA";
32 18 final String resolvedSunday = "resolved date:Sunday";
33   - final String updatedThreeWeeksAgo = "updated:" + encodeURL("{Three weeks ago}");
34   - final String createdLastMonth = "created:" + encodeURL("{Last month}");
35   - final String stateDuplicate = "state:" + encodeURL("Duplicate");
36   - final String space = encodeURL(" ");
  19 + final String updatedThreeWeeksAgo = "updated:{Three weeks ago}";
  20 + final String createdLastMonth = "created:{Last month}";
  21 + final String stateDuplicate = "state:Duplicate";
  22 + final String space = " ";
37 23 Assert.assertEquals(stateDuplicate + space + createdLastMonth, Filter.stateFilter(StateValues.Duplicate).created(DateValues.LastMonth).toString());
38 24 Assert.assertEquals(createdLastMonth + space + stateDuplicate, Filter.createdFilter(DateValues.LastMonth).state(StateValues.Duplicate).toString());
39 25 Assert.assertEquals(createdLastMonth + space + stateDuplicate + space + "description:pikachu",
... ... @@ -49,26 +35,26 @@ public class FilterTest {
49 35 @Test
50 36 public void createdFilter()
51 37 {
52   - Assert.assertEquals("created:" + encodeURL("2012-01-01"), Filter.createdFilter("2012-01-01").toString());
53   - Assert.assertEquals("created:" + encodeURL("{Last month}"), Filter.createdFilter(DateValues.LastMonth).toString());
54   - Assert.assertEquals("created:" + encodeURL("{This month}"), Filter.createdFilter(DateValues.ThisMonth).toString());
55   - Assert.assertEquals("created:" + encodeURL("{Two weeks ago}"), Filter.createdFilter(DateValues.TwoWeeksAgo).toString());
56   - Assert.assertEquals("created:" + encodeURL("{Three weeks ago}"), Filter.createdFilter(DateValues.ThreeWeeksAgo).toString());
57   - Assert.assertEquals("created:" + encodeURL("{Last week}"), Filter.createdFilter(DateValues.LastWeek).toString());
58   - Assert.assertEquals("created:" + encodeURL("{This week}"), Filter.createdFilter(DateValues.ThisWeek).toString());
59   - Assert.assertEquals("created:" + encodeURL("Saturday"), Filter.createdFilter(DateValues.Saturday).toString());
60   - Assert.assertEquals("created:" + encodeURL("Friday"), Filter.createdFilter(DateValues.Friday).toString());
61   - Assert.assertEquals("created:" + encodeURL("Thursday"), Filter.createdFilter(DateValues.Thursday).toString());
62   - Assert.assertEquals("created:" + encodeURL("Wednesday"), Filter.createdFilter(DateValues.Wednesday).toString());
63   - Assert.assertEquals("created:" + encodeURL("Tuesday"), Filter.createdFilter(DateValues.Tuesday).toString());
64   - Assert.assertEquals("created:" + encodeURL("Monday"), Filter.createdFilter(DateValues.Monday).toString());
65   - Assert.assertEquals("created:" + encodeURL("Sunday"), Filter.createdFilter(DateValues.Sunday).toString());
  38 + Assert.assertEquals("created:2012-01-01", Filter.createdFilter("2012-01-01").toString());
  39 + Assert.assertEquals("created:{Last month}", Filter.createdFilter(DateValues.LastMonth).toString());
  40 + Assert.assertEquals("created:{This month}", Filter.createdFilter(DateValues.ThisMonth).toString());
  41 + Assert.assertEquals("created:{Two weeks ago}", Filter.createdFilter(DateValues.TwoWeeksAgo).toString());
  42 + Assert.assertEquals("created:{Three weeks ago}", Filter.createdFilter(DateValues.ThreeWeeksAgo).toString());
  43 + Assert.assertEquals("created:{Last week}", Filter.createdFilter(DateValues.LastWeek).toString());
  44 + Assert.assertEquals("created:{This week}", Filter.createdFilter(DateValues.ThisWeek).toString());
  45 + Assert.assertEquals("created:Saturday", Filter.createdFilter(DateValues.Saturday).toString());
  46 + Assert.assertEquals("created:Friday", Filter.createdFilter(DateValues.Friday).toString());
  47 + Assert.assertEquals("created:Thursday", Filter.createdFilter(DateValues.Thursday).toString());
  48 + Assert.assertEquals("created:Wednesday", Filter.createdFilter(DateValues.Wednesday).toString());
  49 + Assert.assertEquals("created:Tuesday", Filter.createdFilter(DateValues.Tuesday).toString());
  50 + Assert.assertEquals("created:Monday", Filter.createdFilter(DateValues.Monday).toString());
  51 + Assert.assertEquals("created:Sunday", Filter.createdFilter(DateValues.Sunday).toString());
66 52 }
67 53
68 54 @Test
69 55 public void descriptionFilter()
70 56 {
71   - Assert.assertEquals("description:" + encodeURL("Wacek Ramtamtamski's"), Filter.descriptionFilter("Wacek Ramtamtamski's").toString());
  57 + Assert.assertEquals("description:Wacek Ramtamtamski's", Filter.descriptionFilter("Wacek Ramtamtamski's").toString());
72 58 }
73 59
74 60 @Test
... ... @@ -86,64 +72,64 @@ public class FilterTest {
86 72 @Test
87 73 public void resolvedFilter()
88 74 {
89   - Assert.assertEquals("resolved date:" + encodeURL("2012-01-01"), Filter.resolvedFilter("2012-01-01").toString());
90   - Assert.assertEquals("resolved date:" + encodeURL("{Last month}"), Filter.resolvedFilter(DateValues.LastMonth).toString());
91   - Assert.assertEquals("resolved date:" + encodeURL("{This month}"), Filter.resolvedFilter(DateValues.ThisMonth).toString());
92   - Assert.assertEquals("resolved date:" + encodeURL("{Two weeks ago}"), Filter.resolvedFilter(DateValues.TwoWeeksAgo).toString());
93   - Assert.assertEquals("resolved date:" + encodeURL("{Three weeks ago}"), Filter.resolvedFilter(DateValues.ThreeWeeksAgo).toString());
94   - Assert.assertEquals("resolved date:" + encodeURL("{Last week}"), Filter.resolvedFilter(DateValues.LastWeek).toString());
95   - Assert.assertEquals("resolved date:" + encodeURL("{This week}"), Filter.resolvedFilter(DateValues.ThisWeek).toString());
96   - Assert.assertEquals("resolved date:" + encodeURL("Saturday"), Filter.resolvedFilter(DateValues.Saturday).toString());
97   - Assert.assertEquals("resolved date:" + encodeURL("Friday"), Filter.resolvedFilter(DateValues.Friday).toString());
98   - Assert.assertEquals("resolved date:" + encodeURL("Thursday"), Filter.resolvedFilter(DateValues.Thursday).toString());
99   - Assert.assertEquals("resolved date:" + encodeURL("Wednesday"), Filter.resolvedFilter(DateValues.Wednesday).toString());
100   - Assert.assertEquals("resolved date:" + encodeURL("Tuesday"), Filter.resolvedFilter(DateValues.Tuesday).toString());
101   - Assert.assertEquals("resolved date:" + encodeURL("Monday"), Filter.resolvedFilter(DateValues.Monday).toString());
102   - Assert.assertEquals("resolved date:" + encodeURL("Sunday"), Filter.resolvedFilter(DateValues.Sunday).toString());
  75 + Assert.assertEquals("resolved date:2012-01-01", Filter.resolvedFilter("2012-01-01").toString());
  76 + Assert.assertEquals("resolved date:{Last month}", Filter.resolvedFilter(DateValues.LastMonth).toString());
  77 + Assert.assertEquals("resolved date:{This month}", Filter.resolvedFilter(DateValues.ThisMonth).toString());
  78 + Assert.assertEquals("resolved date:{Two weeks ago}", Filter.resolvedFilter(DateValues.TwoWeeksAgo).toString());
  79 + Assert.assertEquals("resolved date:{Three weeks ago}", Filter.resolvedFilter(DateValues.ThreeWeeksAgo).toString());
  80 + Assert.assertEquals("resolved date:{Last week}", Filter.resolvedFilter(DateValues.LastWeek).toString());
  81 + Assert.assertEquals("resolved date:{This week}", Filter.resolvedFilter(DateValues.ThisWeek).toString());
  82 + Assert.assertEquals("resolved date:Saturday", Filter.resolvedFilter(DateValues.Saturday).toString());
  83 + Assert.assertEquals("resolved date:Friday", Filter.resolvedFilter(DateValues.Friday).toString());
  84 + Assert.assertEquals("resolved date:Thursday", Filter.resolvedFilter(DateValues.Thursday).toString());
  85 + Assert.assertEquals("resolved date:Wednesday", Filter.resolvedFilter(DateValues.Wednesday).toString());
  86 + Assert.assertEquals("resolved date:Tuesday", Filter.resolvedFilter(DateValues.Tuesday).toString());
  87 + Assert.assertEquals("resolved date:Monday", Filter.resolvedFilter(DateValues.Monday).toString());
  88 + Assert.assertEquals("resolved date:Sunday", Filter.resolvedFilter(DateValues.Sunday).toString());
103 89 }
104 90
105 91 @Test
106 92 public void stateFilter()
107 93 {
108   - Assert.assertEquals("state:" + encodeURL("{Can't Reproduce}"), Filter.stateFilter(StateValues.CantReproduce).toString());
109   - Assert.assertEquals("state:" + encodeURL("Verified"), Filter.stateFilter(StateValues.Verified).toString());
110   - Assert.assertEquals("state:" + encodeURL("Submitted"), Filter.stateFilter(StateValues.Submitted).toString());
111   - Assert.assertEquals("state:" + encodeURL("Reopened"), Filter.stateFilter(StateValues.Reopened).toString());
112   - Assert.assertEquals("state:" + encodeURL("{To be discussed}"), Filter.stateFilter(StateValues.ToBeDiscussed).toString());
113   - Assert.assertEquals("state:" + encodeURL("Duplicate"), Filter.stateFilter(StateValues.Duplicate).toString());
114   - Assert.assertEquals("state:" + encodeURL("Resolved"), Filter.stateFilter(StateValues.Resolved).toString());
115   - Assert.assertEquals("state:" + encodeURL("Fixed"), Filter.stateFilter(StateValues.Fixed).toString());
116   - Assert.assertEquals("state:" + encodeURL("Incomplete"), Filter.stateFilter(StateValues.Incomplete).toString());
117   - Assert.assertEquals("state:" + encodeURL("{In Progress}"), Filter.stateFilter(StateValues.InProgress).toString());
118   - Assert.assertEquals("state:" + encodeURL("New"), Filter.stateFilter(StateValues.New).toString());
119   - Assert.assertEquals("state:" + encodeURL("Obsolete"), Filter.stateFilter(StateValues.Obsolete).toString());
120   - Assert.assertEquals("state:" + encodeURL("Open"), Filter.stateFilter(StateValues.Open).toString());
121   - Assert.assertEquals("state:" + encodeURL("{Won't fix}"), Filter.stateFilter(StateValues.WontFix).toString());
122   - Assert.assertEquals("state:" + encodeURL("-{Won't fix}"), Filter.stateFilter(StateValues.NotWontFix).toString());
123   - Assert.assertEquals("state:" + encodeURL("-Verified"), Filter.stateFilter(StateValues.NotVerified).toString());
124   - Assert.assertEquals("state:" + encodeURL("-Verified,{Can't Reproduce},Obsolete,{Won't fix}"),
  94 + Assert.assertEquals("state:{Can't Reproduce}", Filter.stateFilter(StateValues.CantReproduce).toString());
  95 + Assert.assertEquals("state:Verified", Filter.stateFilter(StateValues.Verified).toString());
  96 + Assert.assertEquals("state:Submitted", Filter.stateFilter(StateValues.Submitted).toString());
  97 + Assert.assertEquals("state:Reopened", Filter.stateFilter(StateValues.Reopened).toString());
  98 + Assert.assertEquals("state:{To be discussed}", Filter.stateFilter(StateValues.ToBeDiscussed).toString());
  99 + Assert.assertEquals("state:Duplicate", Filter.stateFilter(StateValues.Duplicate).toString());
  100 + Assert.assertEquals("state:Resolved", Filter.stateFilter(StateValues.Resolved).toString());
  101 + Assert.assertEquals("state:Fixed", Filter.stateFilter(StateValues.Fixed).toString());
  102 + Assert.assertEquals("state:Incomplete", Filter.stateFilter(StateValues.Incomplete).toString());
  103 + Assert.assertEquals("state:{In Progress}", Filter.stateFilter(StateValues.InProgress).toString());
  104 + Assert.assertEquals("state:New", Filter.stateFilter(StateValues.New).toString());
  105 + Assert.assertEquals("state:Obsolete", Filter.stateFilter(StateValues.Obsolete).toString());
  106 + Assert.assertEquals("state:Open", Filter.stateFilter(StateValues.Open).toString());
  107 + Assert.assertEquals("state:{Won't fix}", Filter.stateFilter(StateValues.WontFix).toString());
  108 + Assert.assertEquals("state:-{Won't fix}", Filter.stateFilter(StateValues.NotWontFix).toString());
  109 + Assert.assertEquals("state:-Verified", Filter.stateFilter(StateValues.NotVerified).toString());
  110 + Assert.assertEquals("state:-Verified,{Can't Reproduce},Obsolete,{Won't fix}",
125 111 Filter.stateFilter(StateValues.NotVerified, StateValues.CantReproduce, StateValues.Obsolete, StateValues.WontFix).toString());
126 112 }
127 113
128 114 @Test
129 115 public void updatedFilter()
130 116 {
131   - Assert.assertEquals("updated:" + encodeURL("Today"), Filter.updatedFilter(DateValues.Today).toString());
132   - Assert.assertEquals("updated:" + encodeURL("Yesterday"), Filter.updatedFilter(DateValues.Yesterday).toString());
133   - Assert.assertEquals("updated:" + encodeURL("2012-01-01"), Filter.updatedFilter("2012-01-01").toString());
134   - Assert.assertEquals("updated:" + encodeURL("{Last month}"), Filter.updatedFilter(DateValues.LastMonth).toString());
135   - Assert.assertEquals("updated:" + encodeURL("{This month}"), Filter.updatedFilter(DateValues.ThisMonth).toString());
136   - Assert.assertEquals("updated:" + encodeURL("{Two weeks ago}"), Filter.updatedFilter(DateValues.TwoWeeksAgo).toString());
137   - Assert.assertEquals("updated:" + encodeURL("{Three weeks ago}"), Filter.updatedFilter(DateValues.ThreeWeeksAgo).toString());
138   - Assert.assertEquals("updated:" + encodeURL("{Last week}"), Filter.updatedFilter(DateValues.LastWeek).toString());
139   - Assert.assertEquals("updated:" + encodeURL("{This week}"), Filter.updatedFilter(DateValues.ThisWeek).toString());
140   - Assert.assertEquals("updated:" + encodeURL("Saturday"), Filter.updatedFilter(DateValues.Saturday).toString());
141   - Assert.assertEquals("updated:" + encodeURL("Friday"), Filter.updatedFilter(DateValues.Friday).toString());
142   - Assert.assertEquals("updated:" + encodeURL("Thursday"), Filter.updatedFilter(DateValues.Thursday).toString());
143   - Assert.assertEquals("updated:" + encodeURL("Wednesday"), Filter.updatedFilter(DateValues.Wednesday).toString());
144   - Assert.assertEquals("updated:" + encodeURL("Tuesday"), Filter.updatedFilter(DateValues.Tuesday).toString());
145   - Assert.assertEquals("updated:" + encodeURL("Monday"), Filter.updatedFilter(DateValues.Monday).toString());
146   - Assert.assertEquals("updated:" + encodeURL("Sunday"), Filter.updatedFilter(DateValues.Sunday).toString());
  117 + Assert.assertEquals("updated:Today", Filter.updatedFilter(DateValues.Today).toString());
  118 + Assert.assertEquals("updated:Yesterday", Filter.updatedFilter(DateValues.Yesterday).toString());
  119 + Assert.assertEquals("updated:2012-01-01", Filter.updatedFilter("2012-01-01").toString());
  120 + Assert.assertEquals("updated:{Last month}", Filter.updatedFilter(DateValues.LastMonth).toString());
  121 + Assert.assertEquals("updated:{This month}", Filter.updatedFilter(DateValues.ThisMonth).toString());
  122 + Assert.assertEquals("updated:{Two weeks ago}", Filter.updatedFilter(DateValues.TwoWeeksAgo).toString());
  123 + Assert.assertEquals("updated:{Three weeks ago}", Filter.updatedFilter(DateValues.ThreeWeeksAgo).toString());
  124 + Assert.assertEquals("updated:{Last week}", Filter.updatedFilter(DateValues.LastWeek).toString());
  125 + Assert.assertEquals("updated:{This week}", Filter.updatedFilter(DateValues.ThisWeek).toString());
  126 + Assert.assertEquals("updated:Saturday", Filter.updatedFilter(DateValues.Saturday).toString());
  127 + Assert.assertEquals("updated:Friday", Filter.updatedFilter(DateValues.Friday).toString());
  128 + Assert.assertEquals("updated:Thursday", Filter.updatedFilter(DateValues.Thursday).toString());
  129 + Assert.assertEquals("updated:Wednesday", Filter.updatedFilter(DateValues.Wednesday).toString());
  130 + Assert.assertEquals("updated:Tuesday", Filter.updatedFilter(DateValues.Tuesday).toString());
  131 + Assert.assertEquals("updated:Monday", Filter.updatedFilter(DateValues.Monday).toString());
  132 + Assert.assertEquals("updated:Sunday", Filter.updatedFilter(DateValues.Sunday).toString());
147 133 }
148 134
149 135 @Test
... ...
... ... @@ -13,20 +13,20 @@ import static org.junit.Assert.assertEquals;
13 13 public class URIUtilsTest {
14 14 // -------------------------- OTHER METHODS --------------------------
15 15
16   - @Test
17   - public void buildURI() throws URISyntaxException
18   - {
  16 + @Test
  17 + public void buildURI() throws URISyntaxException
  18 + {
19 19 // Given
20   - final URI base = new URI("http://localhost:8080/youtrack/");
21   - final String pathA = "/rest/admin/bundle/QA note types";
22   - final String queryA = "q=" + Filter.stateFilter(StateValues.NotWontFix).maxResults(20);
  20 + final URI base = new URI("http://localhost:8080/youtrack/");
  21 + final String pathA = "/rest/admin/bundle/QA note types";
  22 + final String queryA = "q=" + Filter.stateFilter(StateValues.NotWontFix).maxResults(20);
23 23
24 24 // When
25   - final URI uriA = URIUtils.buildURI(base, pathA);
26   - final URI uriB = URIUtils.buildURI(base, pathA, queryA);
  25 + final URI uriA = URIUtils.buildURI(base, pathA);
  26 + final URI uriB = URIUtils.buildURI(base, pathA, queryA);
27 27
28 28 // Then
29   - assertEquals("http://localhost/youtrack/rest/admin/bundle/QA%20note%20types", uriA.toString());
30   - assertEquals("http://localhost/youtrack/rest/admin/bundle/QA%20note%20types?q=state:-%257BWon%2527t+fix%257D&max=20", uriB.toString());
31   - }
  29 + assertEquals("http://localhost/youtrack/rest/admin/bundle/QA%20note%20types", uriA.toString());
  30 + assertEquals("http://localhost/youtrack/rest/admin/bundle/QA%20note%20types?q=state:-%7BWon't%20fix%7D&max=20", uriB.toString());
  31 + }
32 32 }
... ...
Please register or login to post a comment