1. Project Clover database Tue Dec 20 2016 21:24:09 CET
  2. Package org.xwiki.extension.repository.local

File DefaultLocalExtensionRepositoryTest.java

 

Code metrics

0
89
14
1
275
194
17
0.19
6.36
14
1.21

Classes

Class Line # Actions
DefaultLocalExtensionRepositoryTest 49 89 0% 17 3
0.970873897.1%
 

Contributing tests

This file is covered by 12 tests. .

Source view

1    /*
2    * See the NOTICE file distributed with this work for additional
3    * information regarding copyright ownership.
4    *
5    * This is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU Lesser General Public License as
7    * published by the Free Software Foundation; either version 2.1 of
8    * the License, or (at your option) any later version.
9    *
10    * This software is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    * Lesser General Public License for more details.
14    *
15    * You should have received a copy of the GNU Lesser General Public
16    * License along with this software; if not, write to the Free
17    * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18    * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
19    */
20    package org.xwiki.extension.repository.local;
21   
22    import org.junit.Assert;
23    import org.junit.Before;
24    import org.junit.Rule;
25    import org.junit.Test;
26    import org.xwiki.component.manager.ComponentLookupException;
27    import org.xwiki.extension.DefaultExtensionDependency;
28    import org.xwiki.extension.Extension;
29    import org.xwiki.extension.ExtensionId;
30    import org.xwiki.extension.LocalExtension;
31    import org.xwiki.extension.ResolveException;
32    import org.xwiki.extension.TestResources;
33    import org.xwiki.extension.repository.LocalExtensionRepository;
34    import org.xwiki.extension.repository.internal.core.CoreExtensionScanner;
35    import org.xwiki.extension.repository.result.CollectionIterableResult;
36    import org.xwiki.extension.repository.result.IterableResult;
37    import org.xwiki.extension.repository.search.ExtensionQuery;
38    import org.xwiki.extension.repository.search.SearchException;
39    import org.xwiki.extension.repository.search.ExtensionQuery.COMPARISON;
40    import org.xwiki.extension.test.MockitoRepositoryUtilsRule;
41    import org.xwiki.extension.version.internal.DefaultVersionConstraint;
42    import org.xwiki.test.annotation.AfterComponent;
43    import org.xwiki.test.annotation.AllComponents;
44    import org.xwiki.test.mockito.MockitoComponentManagerRule;
45   
46    import static org.junit.Assert.assertEquals;
47   
48    @AllComponents
 
49    public class DefaultLocalExtensionRepositoryTest
50    {
51    private LocalExtensionRepository localExtensionRepository;
52   
53    private MockitoComponentManagerRule mocker = new MockitoComponentManagerRule();
54   
55    @Rule
56    public MockitoRepositoryUtilsRule repositoryUtil = new MockitoRepositoryUtilsRule(this.mocker);
57   
 
58  12 toggle @AfterComponent
59    public void afterComponent() throws Exception
60    {
61    // Skip core extension scanner
62  12 this.repositoryUtil.getComponentManager().registerMockComponent(CoreExtensionScanner.class);
63    }
64   
 
65  12 toggle @Before
66    public void before() throws ComponentLookupException
67    {
68  12 this.localExtensionRepository = this.mocker.getInstance(LocalExtensionRepository.class);
69    }
70   
 
71  1 toggle @Test
72    public void testInit()
73    {
74  1 Assert.assertTrue(this.localExtensionRepository.countExtensions() > 0);
75    }
76   
 
77  1 toggle @Test
78    public void testResolve() throws ResolveException
79    {
80  1 try {
81  1 this.localExtensionRepository.resolve(new ExtensionId("unexistingextension", "version"));
82   
83  0 Assert.fail("Resolve should have failed");
84    } catch (ResolveException expected) {
85    // expected
86    }
87   
88  1 try {
89  1 this.localExtensionRepository.resolve(new ExtensionId(TestResources.INSTALLED_ID.getId(), "wrongversion"));
90   
91  0 Assert.fail("Resolve should have failed");
92    } catch (ResolveException expected) {
93    // expected
94    }
95   
96  1 Extension extension = this.localExtensionRepository.resolve(TestResources.INSTALLED_ID);
97   
98  1 Assert.assertNotNull(extension);
99  1 Assert.assertEquals(TestResources.INSTALLED_ID, extension.getId());
100    }
101   
 
102  1 toggle @Test
103    public void testResolveExistingDependency() throws ResolveException
104    {
105  1 Extension extension =
106    this.localExtensionRepository.resolve(new DefaultExtensionDependency(TestResources.INSTALLED_ID.getId(),
107    new DefaultVersionConstraint(TestResources.INSTALLED_ID.getVersion().getValue())));
108   
109  1 Assert.assertNotNull(extension);
110  1 Assert.assertEquals(TestResources.INSTALLED_ID, extension.getId());
111    }
112   
 
113  1 toggle @Test(expected = ResolveException.class)
114    public void testResolveUnexistingDependencyId() throws ResolveException
115    {
116  1 this.localExtensionRepository
117    .resolve(new DefaultExtensionDependency("unexistingextension", new DefaultVersionConstraint("version")));
118    }
119   
 
120  1 toggle @Test(expected = ResolveException.class)
121    public void testResolveIncompatibleDependencyVersion() throws ResolveException
122    {
123  1 this.localExtensionRepository.resolve(new DefaultExtensionDependency(TestResources.INSTALLED_ID.getId(),
124    new DefaultVersionConstraint("wrongversion")));
125    }
126   
 
127  1 toggle @Test(expected = ResolveException.class)
128    public void testResolveUnexistingButFeatureCompatibleDependency() throws ResolveException
129    {
130  1 this.localExtensionRepository.resolve(new DefaultExtensionDependency("installedextension-feature",
131    new DefaultVersionConstraint(TestResources.INSTALLED_ID.getVersion().getValue())));
132    }
133   
 
134  1 toggle @Test(expected = ResolveException.class)
135    public void testResolveUnexistingButSmalerVersionDependency() throws ResolveException
136    {
137  1 this.localExtensionRepository.resolve(
138    new DefaultExtensionDependency(TestResources.INSTALLED_ID.getId(), new DefaultVersionConstraint("0.9")));
139    }
140   
 
141  1 toggle @Test
142    public void testSearch() throws SearchException
143    {
144  1 CollectionIterableResult<Extension> result =
145    (CollectionIterableResult<Extension>) this.localExtensionRepository.search(null, 0, -1);
146   
147  1 Assert.assertEquals(15, result.getTotalHits());
148  1 Assert.assertEquals(15, result.getSize());
149  1 Assert.assertEquals(0, result.getOffset());
150   
151  1 result = (CollectionIterableResult<Extension>) this.localExtensionRepository.search("", 0, -1);
152   
153  1 Assert.assertEquals(15, result.getTotalHits());
154  1 Assert.assertEquals(15, result.getSize());
155  1 Assert.assertEquals(0, result.getOffset());
156   
157  1 result = (CollectionIterableResult<Extension>) this.localExtensionRepository.search("extension", 0, -1);
158   
159  1 Assert.assertEquals(5, result.getTotalHits());
160  1 Assert.assertEquals(5, result.getSize());
161  1 Assert.assertEquals(0, result.getOffset());
162   
163  1 result = (CollectionIterableResult<Extension>) this.localExtensionRepository.search("dependency", 0, -1);
164   
165  1 Assert.assertEquals(8, result.getTotalHits());
166  1 Assert.assertEquals(8, result.getSize());
167  1 Assert.assertEquals(0, result.getOffset());
168   
169  1 result = (CollectionIterableResult<Extension>) this.localExtensionRepository.search(null, 0, 0);
170   
171  1 Assert.assertEquals(15, result.getTotalHits());
172  1 Assert.assertEquals(0, result.getSize());
173  1 Assert.assertEquals(0, result.getOffset());
174   
175  1 result = (CollectionIterableResult<Extension>) this.localExtensionRepository.search(null, 0, 2);
176   
177  1 Assert.assertEquals(15, result.getTotalHits());
178  1 Assert.assertEquals(2, result.getSize());
179  1 Assert.assertEquals(0, result.getOffset());
180   
181  1 result = (CollectionIterableResult<Extension>) this.localExtensionRepository.search(null, 0, 1);
182   
183  1 Assert.assertEquals(15, result.getTotalHits());
184  1 Assert.assertEquals(1, result.getSize());
185  1 Assert.assertEquals(0, result.getOffset());
186   
187  1 result = (CollectionIterableResult<Extension>) this.localExtensionRepository.search(null, 1, 2);
188   
189  1 Assert.assertEquals(15, result.getTotalHits());
190  1 Assert.assertEquals(2, result.getSize());
191  1 Assert.assertEquals(1, result.getOffset());
192   
193  1 result = (CollectionIterableResult<Extension>) this.localExtensionRepository.search(null, 2, 2);
194   
195  1 Assert.assertEquals(15, result.getTotalHits());
196  1 Assert.assertEquals(2, result.getSize());
197  1 Assert.assertEquals(2, result.getOffset());
198   
199  1 result = (CollectionIterableResult<Extension>) this.localExtensionRepository.search(null, -1, 2);
200   
201  1 Assert.assertEquals(15, result.getTotalHits());
202  1 Assert.assertEquals(2, result.getSize());
203  1 Assert.assertEquals(-1, result.getOffset());
204   
205  1 result = (CollectionIterableResult<Extension>) this.localExtensionRepository.search(null, -1, 1);
206   
207  1 Assert.assertEquals(15, result.getTotalHits());
208  1 Assert.assertEquals(1, result.getSize());
209  1 Assert.assertEquals(-1, result.getOffset());
210    }
211   
 
212  1 toggle @Test
213    public void testSearchWithQueryEQUAL() throws SearchException
214    {
215  1 ExtensionQuery query = new ExtensionQuery();
216   
217  1 query.addFilter(Extension.FIELD_ID, TestResources.INSTALLED_ID.getId(), COMPARISON.EQUAL);
218   
219  1 IterableResult<Extension> result = this.localExtensionRepository.search(query);
220   
221  1 assertEquals(1, result.getTotalHits());
222  1 assertEquals(1, result.getSize());
223  1 assertEquals(0, result.getOffset());
224  1 assertEquals(TestResources.INSTALLED_ID, result.iterator().next().getId());
225    }
226   
 
227  1 toggle @Test
228    public void testSearchWithQueryMATCH() throws SearchException
229    {
230  1 ExtensionQuery query = new ExtensionQuery();
231   
232  1 query.addFilter(Extension.FIELD_ID, TestResources.INSTALLED_ID.getId(), COMPARISON.MATCH);
233   
234  1 IterableResult<Extension> result = this.localExtensionRepository.search(query);
235   
236  1 assertEquals(3, result.getTotalHits());
237  1 assertEquals(3, result.getSize());
238  1 assertEquals(0, result.getOffset());
239    }
240   
 
241  1 toggle @Test
242    public void testSearchWithQueryWithNullValue() throws SearchException
243    {
244  1 ExtensionQuery query = new ExtensionQuery();
245   
246  1 query.addFilter(Extension.FIELD_CATEGORY, "category", COMPARISON.EQUAL);
247   
248  1 IterableResult<Extension> result = this.localExtensionRepository.search(query);
249   
250  1 assertEquals(0, result.getTotalHits());
251  1 assertEquals(0, result.getSize());
252  1 assertEquals(0, result.getOffset());
253    }
254   
 
255  1 toggle @Test
256    public void testRemove() throws ResolveException
257    {
258  1 LocalExtension localExtension = this.localExtensionRepository.resolve(TestResources.INSTALLED_ID);
259   
260  1 this.localExtensionRepository.removeExtension(localExtension);
261   
262  1 try {
263  1 this.localExtensionRepository.resolve(TestResources.INSTALLED_ID);
264  0 Assert.fail(
265    "Extension [" + TestResources.INSTALLED_ID + "] should not exist anymore in the local repository");
266    } catch (ResolveException e) {
267    // expected
268    }
269   
270  1 Assert.assertFalse(this.localExtensionRepository.getLocalExtensionVersions(TestResources.INSTALLED_ID.getId())
271    .contains(localExtension));
272  1 Assert.assertFalse(this.localExtensionRepository
273    .getLocalExtensionVersions(TestResources.INSTALLED_ID.getId() + "-feature").contains(localExtension));
274    }
275    }