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

File DefaultInstalledExtensionRepositoryTest.java

 

Code metrics

0
247
21
1
667
456
26
0.11
11.76
21
1.24

Classes

Class Line # Actions
DefaultInstalledExtensionRepositoryTest 67 247 0% 26 5
0.9813432798.1%
 

Contributing tests

This file is covered by 17 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.installed;
21   
22    import java.util.ArrayList;
23    import java.util.Arrays;
24    import java.util.Collection;
25    import java.util.Collections;
26    import java.util.HashMap;
27    import java.util.Map;
28   
29    import org.junit.Before;
30    import org.junit.Rule;
31    import org.junit.Test;
32    import org.xwiki.extension.DefaultExtensionDependency;
33    import org.xwiki.extension.Extension;
34    import org.xwiki.extension.ExtensionDependency;
35    import org.xwiki.extension.ExtensionId;
36    import org.xwiki.extension.InstallException;
37    import org.xwiki.extension.InstalledExtension;
38    import org.xwiki.extension.LocalExtension;
39    import org.xwiki.extension.ResolveException;
40    import org.xwiki.extension.TestResources;
41    import org.xwiki.extension.UninstallException;
42    import org.xwiki.extension.handler.ExtensionHandler;
43    import org.xwiki.extension.repository.ExtensionRepositoryManager;
44    import org.xwiki.extension.repository.InstalledExtensionRepository;
45    import org.xwiki.extension.repository.LocalExtensionRepository;
46    import org.xwiki.extension.repository.LocalExtensionRepositoryException;
47    import org.xwiki.extension.repository.internal.core.CoreExtensionScanner;
48    import org.xwiki.extension.repository.result.IterableResult;
49    import org.xwiki.extension.repository.search.ExtensionQuery;
50    import org.xwiki.extension.repository.search.ExtensionQuery.COMPARISON;
51    import org.xwiki.extension.repository.search.SearchException;
52    import org.xwiki.extension.test.MockitoRepositoryUtilsRule;
53    import org.xwiki.extension.test.TestExtensionHandler;
54    import org.xwiki.extension.version.internal.DefaultVersionConstraint;
55    import org.xwiki.test.annotation.AfterComponent;
56    import org.xwiki.test.annotation.AllComponents;
57   
58    import static org.junit.Assert.assertEquals;
59    import static org.junit.Assert.assertFalse;
60    import static org.junit.Assert.assertNotNull;
61    import static org.junit.Assert.assertNull;
62    import static org.junit.Assert.assertSame;
63    import static org.junit.Assert.assertTrue;
64    import static org.junit.Assert.fail;
65   
66    @AllComponents
 
67    public class DefaultInstalledExtensionRepositoryTest
68    {
69    @Rule
70    public MockitoRepositoryUtilsRule repositoryUtil = new MockitoRepositoryUtilsRule();
71   
72    private InstalledExtensionRepository installedExtensionRepository;
73   
74    private LocalExtensionRepository localExtensionRepository;
75   
76    private ExtensionRepositoryManager repositoryManager;
77   
78    private TestResources resources;
79   
80    private TestExtensionHandler handler;
81   
 
82  17 toggle @AfterComponent
83    public void afterComponent() throws Exception
84    {
85    // Skip core extension scanner
86  17 this.repositoryUtil.getComponentManager().registerMockComponent(CoreExtensionScanner.class);
87    }
88   
 
89  17 toggle @Before
90    public void setUp() throws Exception
91    {
92    // lookup
93   
94  17 this.installedExtensionRepository =
95    this.repositoryUtil.getComponentManager().getInstance(InstalledExtensionRepository.class);
96  17 this.localExtensionRepository =
97    this.repositoryUtil.getComponentManager().getInstance(LocalExtensionRepository.class);
98  17 this.repositoryManager =
99    this.repositoryUtil.getComponentManager().getInstance(ExtensionRepositoryManager.class);
100  17 this.handler = this.repositoryUtil.getComponentManager().getInstance(ExtensionHandler.class, "test");
101   
102    // resources
103   
104  17 this.resources = new TestResources();
105  17 this.resources.init(this.installedExtensionRepository);
106    }
107   
 
108  1 toggle private void install(ExtensionId extensionId)
109    throws ResolveException, LocalExtensionRepositoryException, InstallException
110    {
111  1 Extension extension = this.repositoryManager.resolve(extensionId);
112   
113    // store
114   
115  1 this.localExtensionRepository.storeExtension(extension);
116   
117  1 LocalExtension localExtension = this.localExtensionRepository.resolve(extensionId);
118   
119  1 assertEquals(extensionId, localExtension.getId());
120   
121    // install
122   
123  1 this.installedExtensionRepository.installExtension(localExtension, null, false);
124    }
125   
126    // Tests
127   
 
128  1 toggle @Test
129    public void testInit()
130    {
131  1 assertTrue(this.installedExtensionRepository.countExtensions() > 0);
132   
133    // installedonnamespace
134  1 InstalledExtension extension =
135    this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_ONNAMESPACE_ID);
136   
137  1 assertNotNull(extension);
138  1 assertEquals(TestResources.INSTALLED_ONNAMESPACE_ID, extension.getId());
139   
140  1 extension = this.installedExtensionRepository
141    .getInstalledExtension(TestResources.INSTALLED_ONNAMESPACE_ID.getId(), "namespace");
142   
143  1 assertNotNull(extension);
144  1 assertEquals(TestResources.INSTALLED_ONNAMESPACE_ID, extension.getId());
145  1 assertTrue(extension.isValid("namespace"));
146   
147    // installedextension
148  1 extension = this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_ID);
149   
150  1 assertNotNull(extension);
151  1 assertEquals(TestResources.INSTALLED_ID, extension.getId());
152   
153  1 extension =
154    this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_ID.getId(), "namespace");
155   
156  1 assertNotNull(extension);
157  1 assertEquals(TestResources.INSTALLED_ID, extension.getId());
158  1 assertTrue(this.handler.getExtensions().get(null).contains(extension));
159  1 assertFalse(this.handler.getExtensions().get("namespace").contains(extension));
160  1 assertSame(extension,
161    this.installedExtensionRepository.getInstalledExtension("installedextension", "namespace"));
162   
163    // installedonnemspacewithrootdependency
164  1 extension = this.installedExtensionRepository
165    .getInstalledExtension(TestResources.INSTALLED_ONNAMESPACEWITHROOTDEPENDENCY_ID);
166   
167  1 assertNotNull(extension);
168  1 assertEquals(TestResources.INSTALLED_ONNAMESPACEWITHROOTDEPENDENCY_ID, extension.getId());
169   
170  1 extension = this.installedExtensionRepository
171    .getInstalledExtension(TestResources.INSTALLED_ONNAMESPACEWITHROOTDEPENDENCY_ID.getId(), "namespace");
172   
173  1 assertNotNull(extension);
174  1 assertEquals(TestResources.INSTALLED_ONNAMESPACEWITHROOTDEPENDENCY_ID, extension.getId());
175  1 assertFalse(this.handler.getExtensions().get(null).contains(extension));
176  1 assertTrue(this.handler.getExtensions().get("namespace").contains(extension));
177   
178    // installedwithfeatureasdependency
179  1 extension =
180    this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_WITHFEATUREASDEPENDENCY_ID);
181   
182  1 assertNotNull(extension);
183  1 assertEquals(TestResources.INSTALLED_WITHFEATUREASDEPENDENCY_ID, extension.getId());
184   
185  1 extension = this.installedExtensionRepository
186    .getInstalledExtension(TestResources.INSTALLED_WITHFEATUREASDEPENDENCY_ID.getId(), "namespace");
187   
188  1 assertNotNull(extension);
189  1 assertEquals(TestResources.INSTALLED_WITHFEATUREASDEPENDENCY_ID, extension.getId());
190  1 assertTrue(this.handler.getExtensions().get(null).contains(extension));
191  1 assertFalse(this.handler.getExtensions().get("namespace").contains(extension));
192   
193    // invalidextension
194  1 extension = this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_INVALID_ID);
195   
196  1 assertNotNull(extension);
197  1 assertEquals(TestResources.INSTALLED_INVALID_ID, extension.getId());
198  1 assertFalse(extension.isValid(null));
199  1 assertFalse(this.handler.getExtensions().get(null).contains(extension));
200  1 assertFalse(this.handler.getExtensions().get("namespace").contains(extension));
201   
202    // installedmanagedextension
203  1 extension = this.installedExtensionRepository.getInstalledExtension("installedmanagedextension", null);
204   
205  1 assertNotNull(extension);
206  1 assertTrue(extension.isValid(null));
207  1 assertEquals("2.0", extension.getId().getVersion().toString());
208   
209  1 extension = this.installedExtensionRepository.getInstalledExtension("installedmanagedextension", "namespace");
210   
211  1 assertNotNull(extension);
212  1 assertTrue(extension.isValid(null));
213  1 assertEquals("2.0", extension.getId().getVersion().toString());
214   
215  1 extension = this.installedExtensionRepository.getInstalledExtension("installedmanageddependency", null);
216   
217  1 assertNotNull(extension);
218  1 assertTrue(extension.isValid(null));
219  1 assertEquals("2.0", extension.getId().getVersion().toString());
220   
221  1 extension =
222    this.installedExtensionRepository.getInstalledExtension("installedmanagedtransitivedependency", null);
223   
224  1 assertNotNull(extension);
225  1 assertTrue(extension.isValid(null));
226  1 assertEquals("1.0", extension.getId().getVersion().toString());
227   
228    // installedorphaneddependency
229   
230  1 extension = this.installedExtensionRepository.getInstalledExtension("installedorphaneddependency", null);
231   
232  1 assertNotNull(extension);
233  1 assertTrue(extension.isValid(null));
234  1 assertEquals("version", extension.getId().getVersion().toString());
235   
236    // install on several namespaces
237   
238  1 extension = this.installedExtensionRepository.getInstalledExtension("installedonseveralnamespaces", null);
239   
240  1 assertNull(extension);
241   
242  1 extension =
243    this.installedExtensionRepository.getInstalledExtension("installedonseveralnamespaces", "namespace1");
244   
245  1 assertNotNull(extension);
246  1 assertTrue(extension.isValid("namespace1"));
247  1 assertTrue(extension.isInstalled("namespace1"));
248  1 assertEquals("version", extension.getId().getVersion().toString());
249   
250  1 extension =
251    this.installedExtensionRepository.getInstalledExtension("installedonseveralnamespaces", "namespace2");
252   
253  1 assertNotNull(extension);
254  1 assertTrue(extension.isValid("namespace2"));
255  1 assertTrue(extension.isInstalled("namespace2"));
256  1 assertEquals("version", extension.getId().getVersion().toString());
257    }
258   
 
259  1 toggle @Test
260    public void testGetLocalExtension()
261    {
262  1 assertNull(this.installedExtensionRepository.getInstalledExtension("unexistingextension", null));
263   
264  1 Extension extension =
265    this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_ID.getId(), null);
266   
267  1 assertNotNull(extension);
268  1 assertEquals(TestResources.INSTALLED_ID, extension.getId());
269  1 assertEquals("test", extension.getType());
270  1 assertEquals(Arrays.asList(TestResources.INSTALLED_ID.getId() + "-feature"),
271    new ArrayList<String>(extension.getFeatures()));
272   
273  1 ExtensionDependency dependency = extension.getDependencies().iterator().next();
274  1 assertEquals(TestResources.INSTALLED_DEPENDENCY_ID.getId(), dependency.getId());
275  1 assertEquals(TestResources.INSTALLED_DEPENDENCY_ID.getVersion(),
276    dependency.getVersionConstraint().getVersion());
277    }
278   
 
279  1 toggle @Test
280    public void testResolve() throws ResolveException
281    {
282  1 try {
283  1 this.installedExtensionRepository.resolve(new ExtensionId("unexistingextension", "version"));
284   
285  0 fail("Resolve should have failed");
286    } catch (ResolveException expected) {
287    // expected
288    }
289   
290  1 try {
291  1 this.installedExtensionRepository
292    .resolve(new ExtensionId(TestResources.INSTALLED_ID.getId(), "wrongversion"));
293   
294  0 fail("Resolve should have failed");
295    } catch (ResolveException expected) {
296    // expected
297    }
298   
299  1 Extension extension = this.installedExtensionRepository.resolve(TestResources.INSTALLED_ID);
300   
301  1 assertNotNull(extension);
302  1 assertEquals(TestResources.INSTALLED_ID, extension.getId());
303    }
304   
 
305  1 toggle @Test
306    public void testResolveDependency() throws ResolveException
307    {
308  1 try {
309  1 this.installedExtensionRepository.resolve(
310    new DefaultExtensionDependency("unexistingextension", new DefaultVersionConstraint("version")));
311   
312  0 fail("Resolve should have failed");
313    } catch (ResolveException expected) {
314    // expected
315    }
316   
317  1 try {
318  1 this.installedExtensionRepository.resolve(new DefaultExtensionDependency(TestResources.INSTALLED_ID.getId(),
319    new DefaultVersionConstraint("wrongversion")));
320   
321  0 fail("Resolve should have failed");
322    } catch (ResolveException expected) {
323    // expected
324    }
325   
326  1 Extension extension =
327    this.installedExtensionRepository.resolve(new DefaultExtensionDependency(TestResources.INSTALLED_ID.getId(),
328    new DefaultVersionConstraint(TestResources.INSTALLED_ID.getVersion().getValue())));
329   
330  1 assertNotNull(extension);
331  1 assertEquals(TestResources.INSTALLED_ID, extension.getId());
332    }
333   
 
334  1 toggle @Test
335    public void testInstallTwice() throws InstallException
336    {
337    // Change status
338  1 this.installedExtensionRepository.installExtension(this.resources.installed, "namespace",
339    !this.resources.installed.isDependency("namespace"));
340   
341    // Try to install again with the same status
342  1 try {
343  1 this.installedExtensionRepository.installExtension(this.resources.installed, "namespace",
344    this.resources.installed.isDependency("namespace"));
345  0 fail("Install should have failed");
346    } catch (InstallException expected) {
347    // expected
348    }
349    }
350   
 
351  1 toggle @Test
352    public void testStoreExtensionAndInstall()
353    throws ResolveException, LocalExtensionRepositoryException, InstallException
354    {
355  1 install(TestResources.REMOTE_SIMPLE_ID);
356   
357  1 assertNotNull(
358    this.installedExtensionRepository.getInstalledExtension(TestResources.REMOTE_SIMPLE_ID.getId(), null));
359  1 assertNotNull(this.installedExtensionRepository.getInstalledExtension(TestResources.REMOTE_SIMPLE_ID.getId(),
360    "namespace"));
361  1 assertNotNull(this.installedExtensionRepository
362    .getInstalledExtension(TestResources.REMOTE_SIMPLE_ID.getId() + "-feature", null));
363    }
364   
 
365  1 toggle @Test
366    public void testUninstallExtension() throws UninstallException, InstallException
367    {
368    // uninstall from root
369   
370  1 this.installedExtensionRepository.uninstallExtension(this.resources.installed, null);
371   
372  1 assertNull(this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_ID.getId(), null));
373  1 assertNull(
374    this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_ID.getId(), "namespace"));
375  1 assertNull(this.installedExtensionRepository
376    .getInstalledExtension(TestResources.INSTALLED_ID.getId() + "-feature", null));
377  1 assertNull(this.installedExtensionRepository
378    .getInstalledExtension(TestResources.INSTALLED_ID.getId() + "-feature", "namespace"));
379   
380  1 this.installedExtensionRepository.uninstallExtension(this.resources.installedDependency, null);
381   
382  1 assertNull(this.installedExtensionRepository
383    .getInstalledExtension(TestResources.INSTALLED_DEPENDENCY_ID.getId(), null));
384   
385    // uninstall from namespace
386   
387  1 this.installedExtensionRepository.installExtension(this.resources.installedDependency, "namespace", false);
388  1 this.installedExtensionRepository.installExtension(this.resources.installed, "namespace", false);
389   
390  1 this.installedExtensionRepository.uninstallExtension(this.resources.installed, "namespace");
391   
392  1 assertNull(
393    this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_ID.getId(), "namespace"));
394  1 assertNull(this.installedExtensionRepository
395    .getInstalledExtension(TestResources.INSTALLED_ID.getId() + "-feature", "namespace"));
396   
397  1 this.installedExtensionRepository.uninstallExtension(this.resources.installedDependency, "namespace");
398   
399  1 assertNull(this.installedExtensionRepository
400    .getInstalledExtension(TestResources.INSTALLED_DEPENDENCY_ID.getId(), "namespace"));
401   
402    // uninstall from namespace with dependency on root
403   
404  1 this.installedExtensionRepository.installExtension(this.resources.installedDependency, null, false);
405  1 this.installedExtensionRepository.installExtension(this.resources.installed, "namespace", false);
406   
407  1 this.installedExtensionRepository.uninstallExtension(this.resources.installed, "namespace");
408   
409  1 assertNull(
410    this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_ID.getId(), "namespace"));
411  1 assertNull(this.installedExtensionRepository
412    .getInstalledExtension(TestResources.INSTALLED_ID.getId() + "-feature", "namespace"));
413   
414  1 this.installedExtensionRepository.uninstallExtension(this.resources.installedDependency, null);
415   
416  1 assertNull(this.installedExtensionRepository
417    .getInstalledExtension(TestResources.INSTALLED_DEPENDENCY_ID.getId(), null));
418    }
419   
 
420  1 toggle @Test
421    public void testBackwardDependenciesAfterInit() throws ResolveException
422    {
423    // installedextension
424  1 assertEquals(Arrays.asList(this.resources.installedwithfeatureasdependency),
425    this.installedExtensionRepository.getBackwardDependencies(TestResources.INSTALLED_ID.getId(), null));
426  1 assertEquals(new HashMap<String, Collection<InstalledExtension>>()
427    {
 
428  1 toggle {
429  1 put(null, Arrays
430    .asList(DefaultInstalledExtensionRepositoryTest.this.resources.installedwithfeatureasdependency));
431  1 put("namespace", Arrays.asList(
432    DefaultInstalledExtensionRepositoryTest.this.resources.installedonnemspacewithrootdependency));
433    }
434    }, this.installedExtensionRepository.getBackwardDependencies(TestResources.INSTALLED_ID));
435   
436    // installedextensiondependency
437  1 assertEquals(Arrays.asList(this.resources.installed), this.installedExtensionRepository
438    .getBackwardDependencies(TestResources.INSTALLED_DEPENDENCY_ID.getId(), null));
439  1 assertEquals(Collections.singletonMap(null, Arrays.asList(this.resources.installed)),
440    this.installedExtensionRepository.getBackwardDependencies(TestResources.INSTALLED_DEPENDENCY_ID));
441   
442    // installedonnemspacewithrootdependency
443  1 assertEquals(Collections.EMPTY_MAP, this.installedExtensionRepository
444    .getBackwardDependencies(TestResources.INSTALLED_ONNAMESPACEWITHROOTDEPENDENCY_ID));
445  1 assertEquals(Collections.EMPTY_LIST, this.installedExtensionRepository
446    .getBackwardDependencies(TestResources.INSTALLED_ONNAMESPACEWITHROOTDEPENDENCY_ID.getId(), "namespace"));
447    }
448   
 
449  1 toggle @Test
450    public void testBackwardDependenciesAfterUninstall() throws ResolveException, UninstallException
451    {
452  1 this.installedExtensionRepository.uninstallExtension(this.resources.installed, null);
453   
454  1 assertEquals(Collections.EMPTY_LIST, this.installedExtensionRepository
455    .getBackwardDependencies(TestResources.INSTALLED_DEPENDENCY_ID.getId(), null));
456    }
457   
 
458  1 toggle @Test
459    public void testBackwardDependenciesWithExtensionAndDepOnRoot() throws ResolveException
460    {
461  1 assertEquals(Arrays.asList(this.resources.installed),
462    new ArrayList<InstalledExtension>(this.installedExtensionRepository
463    .getBackwardDependencies(TestResources.INSTALLED_DEPENDENCY_ID.getId(), null)));
464   
465  1 assertEquals(Arrays.asList(), new ArrayList<InstalledExtension>(this.installedExtensionRepository
466    .getBackwardDependencies(TestResources.INSTALLED_DEPENDENCY_ID.getId(), "namespace")));
467   
468  1 assertEquals(Arrays.asList(this.resources.installedwithfeatureasdependency), new ArrayList<InstalledExtension>(
469    this.installedExtensionRepository.getBackwardDependencies(TestResources.INSTALLED_ID.getId(), null)));
470   
471  1 Map<String, Collection<InstalledExtension>> map = new HashMap<String, Collection<InstalledExtension>>();
472  1 map.put(null, Arrays.asList(this.resources.installed));
473   
474  1 assertEquals(map,
475    this.installedExtensionRepository.getBackwardDependencies(TestResources.INSTALLED_DEPENDENCY_ID));
476    }
477   
 
478  1 toggle @Test
479    public void testBackwardDependenciesWithExtensionOnNamespaceAndDepOnNamespace()
480    throws InstallException, ResolveException, UninstallException
481    {
482  1 this.installedExtensionRepository.uninstallExtension(this.resources.installed, null);
483   
484  1 this.installedExtensionRepository.installExtension(this.resources.installed, "namespace", true);
485   
486  1 assertEquals(Collections.EMPTY_LIST, this.installedExtensionRepository
487    .getBackwardDependencies(TestResources.INSTALLED_DEPENDENCY_ID.getId(), null));
488   
489  1 assertEquals(Arrays.asList(this.resources.installed), this.installedExtensionRepository
490    .getBackwardDependencies(TestResources.INSTALLED_DEPENDENCY_ID.getId(), "namespace"));
491   
492  1 assertEquals(Arrays.asList(this.resources.installedonnemspacewithrootdependency),
493    this.installedExtensionRepository.getBackwardDependencies(TestResources.INSTALLED_ID.getId(), "namespace"));
494    }
495   
 
496  1 toggle @Test
497    public void testBackwardDependenciesWithExtensionAndDepOnNamespace()
498    throws InstallException, ResolveException, UninstallException
499    {
500  1 this.installedExtensionRepository.uninstallExtension(this.resources.installed, null);
501  1 this.installedExtensionRepository.uninstallExtension(this.resources.installedDependency, null);
502   
503  1 this.installedExtensionRepository.installExtension(this.resources.installedDependency, "namespace", true);
504  1 this.installedExtensionRepository.installExtension(this.resources.installed, "namespace", true);
505   
506  1 assertEquals(Arrays.asList(this.resources.installed), this.installedExtensionRepository
507    .getBackwardDependencies(TestResources.INSTALLED_DEPENDENCY_ID.getId(), "namespace"));
508   
509  1 assertEquals(Arrays.asList(this.resources.installedonnemspacewithrootdependency),
510    this.installedExtensionRepository.getBackwardDependencies(TestResources.INSTALLED_ID.getId(), "namespace"));
511    }
512   
 
513  1 toggle @Test
514    public void testSearch() throws SearchException
515    {
516  1 IterableResult<Extension> result = this.installedExtensionRepository.search(null, 0, -1);
517   
518  1 assertEquals(15, result.getTotalHits());
519  1 assertEquals(15, result.getSize());
520  1 assertEquals(0, result.getOffset());
521   
522  1 result = this.installedExtensionRepository.search("", 0, -1);
523   
524  1 assertEquals(15, result.getTotalHits());
525  1 assertEquals(15, result.getSize());
526  1 assertEquals(0, result.getOffset());
527   
528  1 result = this.installedExtensionRepository.search("extension", 0, -1);
529   
530  1 assertEquals(5, result.getTotalHits());
531  1 assertEquals(5, result.getSize());
532  1 assertEquals(0, result.getOffset());
533   
534  1 result = this.installedExtensionRepository.search("Extension", 0, -1);
535   
536  1 assertEquals(5, result.getTotalHits());
537  1 assertEquals(5, result.getSize());
538  1 assertEquals(0, result.getOffset());
539   
540  1 result = this.installedExtensionRepository.search("dependency", 0, -1);
541   
542  1 assertEquals(8, result.getTotalHits());
543  1 assertEquals(8, result.getSize());
544  1 assertEquals(0, result.getOffset());
545   
546  1 result = this.installedExtensionRepository.search(null, 0, 0);
547   
548  1 assertEquals(15, result.getTotalHits());
549  1 assertEquals(0, result.getSize());
550  1 assertEquals(0, result.getOffset());
551   
552  1 result = this.installedExtensionRepository.search(null, 0, 2);
553   
554  1 assertEquals(15, result.getTotalHits());
555  1 assertEquals(2, result.getSize());
556  1 assertEquals(0, result.getOffset());
557   
558  1 result = this.installedExtensionRepository.search(null, 0, 1);
559   
560  1 assertEquals(15, result.getTotalHits());
561  1 assertEquals(1, result.getSize());
562  1 assertEquals(0, result.getOffset());
563   
564  1 result = this.installedExtensionRepository.search(null, 1, 2);
565   
566  1 assertEquals(15, result.getTotalHits());
567  1 assertEquals(2, result.getSize());
568  1 assertEquals(1, result.getOffset());
569   
570  1 result = this.installedExtensionRepository.search(null, 2, 2);
571   
572  1 assertEquals(15, result.getTotalHits());
573  1 assertEquals(2, result.getSize());
574  1 assertEquals(2, result.getOffset());
575   
576  1 result = this.installedExtensionRepository.search(null, -1, 2);
577   
578  1 assertEquals(15, result.getTotalHits());
579  1 assertEquals(2, result.getSize());
580  1 assertEquals(-1, result.getOffset());
581   
582  1 result = this.installedExtensionRepository.search(null, -1, 1);
583   
584  1 assertEquals(15, result.getTotalHits());
585  1 assertEquals(1, result.getSize());
586  1 assertEquals(-1, result.getOffset());
587    }
588   
 
589  1 toggle @Test
590    public void testAdvancedSearchWithNullQuery() throws SearchException
591    {
592  1 ExtensionQuery query = new ExtensionQuery();
593   
594  1 query.addFilter(Extension.FIELD_ID, TestResources.INSTALLED_ID.getId(), COMPARISON.EQUAL);
595   
596  1 IterableResult<Extension> result = this.installedExtensionRepository.search(query);
597   
598  1 assertEquals(1, result.getTotalHits());
599  1 assertEquals(1, result.getSize());
600  1 assertEquals(0, result.getOffset());
601  1 assertEquals(TestResources.INSTALLED_ID, result.iterator().next().getId());
602    }
603   
 
604  1 toggle @Test
605    public void testAdvancedSearchInstalledWithNullQuery() throws SearchException
606    {
607  1 ExtensionQuery query = new ExtensionQuery();
608   
609  1 query.addFilter(Extension.FIELD_ID, TestResources.INSTALLED_ID.getId(), COMPARISON.EQUAL);
610   
611  1 IterableResult<InstalledExtension> result =
612    this.installedExtensionRepository.searchInstalledExtensions((String) null, query);
613   
614  1 assertEquals(1, result.getTotalHits());
615  1 assertEquals(1, result.getSize());
616  1 assertEquals(0, result.getOffset());
617  1 assertEquals(TestResources.INSTALLED_ID, result.iterator().next().getId());
618    }
619   
 
620  1 toggle @Test
621    public void testSearchInstalledExtensions() throws SearchException
622    {
623    // Root namespace
624  1 IterableResult<InstalledExtension> result =
625    this.installedExtensionRepository.searchInstalledExtensions(null, null, 0, -1);
626   
627  1 assertEquals(9, result.getTotalHits());
628  1 assertEquals(9, result.getSize());
629  1 assertEquals(0, result.getOffset());
630   
631    // Namespace "namespace" + "root"
632  1 result = this.installedExtensionRepository.searchInstalledExtensions(null, "namespace", 0, -1);
633   
634  1 assertEquals(13, result.getTotalHits());
635  1 assertEquals(13, result.getSize());
636  1 assertEquals(0, result.getOffset());
637   
638    // This namespace does not exist so same as root
639  1 result = this.installedExtensionRepository.searchInstalledExtensions(null, "notnamespace", 0, -1);
640   
641  1 assertEquals(9, result.getTotalHits());
642  1 assertEquals(9, result.getSize());
643  1 assertEquals(0, result.getOffset());
644    }
645   
 
646  1 toggle @Test
647    public void testgetInstalledExtensionFeatureNamespace()
648    {
649  1 InstalledExtension extension;
650   
651    // installed extension
652   
653  1 extension = this.installedExtensionRepository.getInstalledExtension(TestResources.INSTALLED_ID.getId(),
654    TestResources.INSTALLED_ID.getVersion().toString());
655   
656  1 assertNotNull(extension);
657  1 assertEquals(TestResources.INSTALLED_ID, extension.getId());
658   
659    // installed feature
660   
661  1 extension = this.installedExtensionRepository.getInstalledExtension(
662    TestResources.INSTALLED_ID.getId() + "-feature", TestResources.INSTALLED_ID.getVersion().toString());
663   
664  1 assertNotNull(extension);
665  1 assertEquals(TestResources.INSTALLED_ID, extension.getId());
666    }
667    }