1 package com.atlassian.plugin.metadata;
2
3 import com.atlassian.plugin.PluginAccessor;
4 import org.junit.Before;
5 import org.junit.Test;
6 import org.junit.runner.RunWith;
7 import org.mockito.Mock;
8 import org.mockito.junit.MockitoJUnitRunner;
9
10 import java.util.Collection;
11 import java.util.HashSet;
12 import java.util.Set;
13
14 import static org.junit.Assert.assertEquals;
15 import static org.junit.Assert.assertTrue;
16 import static org.mockito.ArgumentMatchers.anyString;
17 import static org.mockito.Mockito.when;
18
19 @RunWith(MockitoJUnitRunner.class)
20 public class TestRequiredPluginValidator {
21
22 private static final String PLUGIN_KEY = "com.atlassian.req.plugin.1";
23 private static final Set<String> REQ_PLUGINS = new HashSet<String>() {{
24 add(PLUGIN_KEY);
25 add("com.atlassian.req.plugin.2");
26 add("com.atlassian.req.plugin.3");
27 }};
28 private static final Set<String> REQ_PLUGIN_MODULES = new HashSet<String>() {{
29 add("com.atlassian.req.plugin.4:module1");
30 add("com.atlassian.req.plugin.4:module2");
31 add("com.atlassian.req.plugin.4:module3");
32 }};
33
34 private RequiredPluginProvider provider;
35 @Mock
36 private PluginAccessor pluginAccessor;
37
38 @Before
39 public void setUp() {
40 provider = new RequiredPluginProvider() {
41 public Set<String> getRequiredPluginKeys() {
42 return REQ_PLUGINS;
43 }
44
45 public Set<String> getRequiredModuleKeys() {
46 return REQ_PLUGIN_MODULES;
47 }
48 };
49 }
50
51 @Test
52 public void testValidate() {
53 when(pluginAccessor.isPluginEnabled(anyString())).thenReturn(true);
54 when(pluginAccessor.isPluginModuleEnabled(anyString())).thenReturn(true);
55 RequiredPluginValidator validator = new DefaultRequiredPluginValidator(pluginAccessor, provider);
56 assertEquals(0, validator.validate().size());
57 }
58
59 @Test
60 public void testValidateFails() {
61 when(pluginAccessor.isPluginEnabled(anyString())).thenReturn(true);
62 when(pluginAccessor.isPluginEnabled(PLUGIN_KEY)).thenReturn(false);
63 when(pluginAccessor.isPluginModuleEnabled(anyString())).thenReturn(true);
64 RequiredPluginValidator validator = new DefaultRequiredPluginValidator(pluginAccessor, provider);
65 Collection<String> errors = validator.validate();
66 assertEquals(1, errors.size());
67 assertTrue(errors.contains(PLUGIN_KEY));
68 }
69 }