1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
package org.xwiki.rendering.internal.parser.reference; |
21 |
|
|
22 |
|
import org.junit.Before; |
23 |
|
import org.junit.Rule; |
24 |
|
import org.junit.Test; |
25 |
|
import org.xwiki.rendering.listener.reference.DocumentResourceReference; |
26 |
|
import org.xwiki.rendering.listener.reference.InterWikiResourceReference; |
27 |
|
import org.xwiki.rendering.listener.reference.ResourceReference; |
28 |
|
import org.xwiki.rendering.listener.reference.ResourceType; |
29 |
|
import org.xwiki.rendering.parser.ResourceReferenceParser; |
30 |
|
import org.xwiki.rendering.wiki.WikiModel; |
31 |
|
import org.xwiki.test.annotation.AllComponents; |
32 |
|
import org.xwiki.test.mockito.MockitoComponentManagerRule; |
33 |
|
|
34 |
|
import static org.mockito.Mockito.when; |
35 |
|
import static org.junit.Assert.*; |
36 |
|
|
37 |
|
|
38 |
|
@link |
39 |
|
|
40 |
|
@version |
41 |
|
@since |
42 |
|
|
43 |
|
@AllComponents |
|
|
| 100% |
Uncovered Elements: 0 (96) |
Complexity: 2 |
Complexity Density: 0.02 |
|
44 |
|
public class DefaultLinkReferenceParserTest |
45 |
|
{ |
46 |
|
@Rule |
47 |
|
public final MockitoComponentManagerRule componentManager = new MockitoComponentManagerRule(); |
48 |
|
|
49 |
|
private ResourceReferenceParser parser; |
50 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
51 |
1 |
@Before... |
52 |
|
public void setUp() throws Exception |
53 |
|
{ |
54 |
1 |
this.parser = this.componentManager.getInstance(ResourceReferenceParser.class, "link"); |
55 |
|
} |
56 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (93) |
Complexity: 1 |
Complexity Density: 0.01 |
1PASS
|
|
57 |
1 |
@Test... |
58 |
|
public void parseWhenInWikiMode() throws Exception |
59 |
|
{ |
60 |
|
|
61 |
1 |
WikiModel mockWikiModel = this.componentManager.registerMockComponent(WikiModel.class); |
62 |
|
|
63 |
1 |
ResourceReference reference = this.parser.parse(""); |
64 |
1 |
assertEquals("", reference.getReference()); |
65 |
1 |
assertFalse(reference.isTyped()); |
66 |
1 |
assertEquals(ResourceType.DOCUMENT, reference.getType()); |
67 |
1 |
assertEquals("Typed = [false] Type = [doc] Reference = []", reference.toString()); |
68 |
|
|
69 |
1 |
when(mockWikiModel.isDocumentAvailable(new DocumentResourceReference("existingpage"))).thenReturn(true); |
70 |
1 |
reference = this.parser.parse("existingpage"); |
71 |
1 |
assertEquals("existingpage", reference.getReference()); |
72 |
1 |
assertFalse(reference.isTyped()); |
73 |
1 |
assertEquals(ResourceType.DOCUMENT, reference.getType()); |
74 |
1 |
assertEquals("Typed = [false] Type = [doc] Reference = [existingpage]", reference.toString()); |
75 |
|
|
76 |
1 |
reference = this.parser.parse("unexistingpage"); |
77 |
1 |
assertEquals("unexistingpage", reference.getReference()); |
78 |
1 |
assertFalse(reference.isTyped()); |
79 |
1 |
assertEquals(ResourceType.DOCUMENT, reference.getType()); |
80 |
1 |
assertEquals("Typed = [false] Type = [doc] Reference = [unexistingpage]", reference.toString()); |
81 |
|
|
82 |
1 |
reference = this.parser.parse("space.unexistingpage"); |
83 |
1 |
assertEquals("space.unexistingpage", reference.getReference()); |
84 |
1 |
assertFalse(reference.isTyped()); |
85 |
1 |
assertEquals(ResourceType.DOCUMENT, reference.getType()); |
86 |
1 |
assertEquals("Typed = [false] Type = [doc] Reference = [space.unexistingpage]", reference.toString()); |
87 |
|
|
88 |
1 |
reference = this.parser.parse("http://xwiki.org"); |
89 |
1 |
assertEquals("http://xwiki.org", reference.getReference()); |
90 |
1 |
assertFalse(reference.isTyped()); |
91 |
1 |
assertEquals(ResourceType.URL, reference.getType()); |
92 |
1 |
assertEquals("Typed = [false] Type = [url] Reference = [http://xwiki.org]", reference.toString()); |
93 |
|
|
94 |
|
|
95 |
1 |
reference = this.parser.parse("mailto:john@smith.com?subject=test"); |
96 |
1 |
assertEquals("john@smith.com?subject=test", reference.getReference()); |
97 |
1 |
assertTrue(reference.isTyped()); |
98 |
1 |
assertEquals(ResourceType.MAILTO, reference.getType()); |
99 |
1 |
assertEquals("Typed = [true] Type = [mailto] Reference = [john@smith.com?subject=test]", |
100 |
|
reference.toString()); |
101 |
|
|
102 |
|
|
103 |
1 |
reference = this.parser.parse("attach:some:content"); |
104 |
1 |
assertEquals("some:content", reference.getReference()); |
105 |
1 |
assertTrue(reference.isTyped()); |
106 |
1 |
assertEquals(ResourceType.ATTACHMENT, reference.getType()); |
107 |
1 |
assertEquals("Typed = [true] Type = [attach] Reference = [some:content]", reference.toString()); |
108 |
|
|
109 |
|
|
110 |
|
|
111 |
|
|
112 |
1 |
reference = this.parser.parse("mywiki:http://xwiki.org"); |
113 |
1 |
assertEquals("mywiki:http://xwiki.org", reference.getReference()); |
114 |
1 |
assertFalse(reference.isTyped()); |
115 |
1 |
assertEquals(ResourceType.DOCUMENT, reference.getType()); |
116 |
1 |
assertEquals("Typed = [false] Type = [doc] Reference = [mywiki:http://xwiki.org]", |
117 |
|
reference.toString()); |
118 |
|
|
119 |
|
|
120 |
1 |
reference = this.parser.parse("doc:wiki:space.page"); |
121 |
1 |
assertEquals(ResourceType.DOCUMENT, reference.getType()); |
122 |
1 |
assertEquals("wiki:space.page", reference.getReference()); |
123 |
1 |
assertEquals("Typed = [true] Type = [doc] Reference = [wiki:space.page]", reference.toString()); |
124 |
1 |
assertTrue(reference.isTyped()); |
125 |
|
|
126 |
|
|
127 |
1 |
reference = this.parser.parse("space:wiki:space"); |
128 |
1 |
assertEquals(ResourceType.SPACE, reference.getType()); |
129 |
1 |
assertEquals("wiki:space", reference.getReference()); |
130 |
1 |
assertEquals("Typed = [true] Type = [space] Reference = [wiki:space]", reference.toString()); |
131 |
1 |
assertTrue(reference.isTyped()); |
132 |
|
|
133 |
|
|
134 |
1 |
reference = this.parser.parse("interwiki:alias:content"); |
135 |
1 |
assertEquals(ResourceType.INTERWIKI, reference.getType()); |
136 |
1 |
assertEquals("content", reference.getReference()); |
137 |
1 |
assertTrue(reference.isTyped()); |
138 |
1 |
assertEquals("alias", ((InterWikiResourceReference) reference).getInterWikiAlias()); |
139 |
1 |
assertEquals("Typed = [true] Type = [interwiki] Reference = [content] " |
140 |
|
+ "Parameters = [[interWikiAlias] = [alias]]", reference.toString()); |
141 |
|
|
142 |
|
|
143 |
1 |
reference = this.parser.parse("interwiki:invalid_since_doesnt_have_colon"); |
144 |
1 |
assertEquals(ResourceType.DOCUMENT, reference.getType()); |
145 |
1 |
assertEquals("interwiki:invalid_since_doesnt_have_colon", reference.getReference()); |
146 |
1 |
assertFalse(reference.isTyped()); |
147 |
1 |
assertEquals("Typed = [false] Type = [doc] Reference = [interwiki:invalid_since_doesnt_have_colon]", |
148 |
|
reference.toString()); |
149 |
|
|
150 |
|
|
151 |
1 |
reference = this.parser.parse("url:http://xwiki.org"); |
152 |
1 |
assertEquals(ResourceType.URL, reference.getType()); |
153 |
1 |
assertTrue(reference.isTyped()); |
154 |
1 |
assertEquals("http://xwiki.org", reference.getReference()); |
155 |
1 |
assertEquals("Typed = [true] Type = [url] Reference = [http://xwiki.org]", reference.toString()); |
156 |
|
|
157 |
|
|
158 |
1 |
reference = this.parser.parse("Hello World?no=queryString#notAnAnchor"); |
159 |
1 |
assertEquals(ResourceType.DOCUMENT, reference.getType()); |
160 |
1 |
assertEquals("Hello World?no=queryString#notAnAnchor", reference.getReference()); |
161 |
1 |
assertFalse(reference.isTyped()); |
162 |
1 |
assertNull(((DocumentResourceReference) reference).getAnchor()); |
163 |
1 |
assertNull(((DocumentResourceReference) reference).getQueryString()); |
164 |
1 |
assertEquals("Typed = [false] Type = [doc] Reference = [Hello World?no=queryString#notAnAnchor]", |
165 |
|
reference.toString()); |
166 |
|
|
167 |
|
|
168 |
1 |
reference = this.parser.parse("page@alias"); |
169 |
1 |
assertEquals(ResourceType.DOCUMENT, reference.getType()); |
170 |
1 |
assertFalse(reference.isTyped()); |
171 |
1 |
assertEquals("page@alias", reference.getReference()); |
172 |
1 |
assertEquals("Typed = [false] Type = [doc] Reference = [page@alias]", reference.toString()); |
173 |
|
|
174 |
|
|
175 |
1 |
reference = this.parser.parse("path:/some/path"); |
176 |
1 |
assertEquals(ResourceType.PATH, reference.getType()); |
177 |
1 |
assertTrue(reference.isTyped()); |
178 |
1 |
assertEquals("/some/path", reference.getReference()); |
179 |
1 |
assertEquals("Typed = [true] Type = [path] Reference = [/some/path]", reference.toString()); |
180 |
|
|
181 |
|
|
182 |
1 |
reference = this.parser.parse("unc:\\\\myserver\\myshare\\mydoc.txt"); |
183 |
1 |
assertEquals(ResourceType.UNC, reference.getType()); |
184 |
1 |
assertTrue(reference.isTyped()); |
185 |
1 |
assertEquals("\\\\myserver\\myshare\\mydoc.txt", reference.getReference()); |
186 |
1 |
assertEquals("Typed = [true] Type = [unc] Reference = [\\\\myserver\\myshare\\mydoc.txt]", |
187 |
|
reference.toString()); |
188 |
|
|
189 |
|
|
190 |
1 |
reference = this.parser.parse("pa\\.ge"); |
191 |
1 |
assertEquals(ResourceType.DOCUMENT, reference.getType()); |
192 |
1 |
assertEquals("pa\\.ge", reference.getReference()); |
193 |
|
} |
194 |
|
} |