1 package com.atlassian.plugin.spring.scanner.runtime.impl.util;
2
3 import org.junit.Assume;
4 import org.junit.Test;
5 import org.junit.runner.RunWith;
6 import org.mockito.runners.MockitoJUnitRunner;
7
8 import java.util.regex.Matcher;
9 import java.util.regex.Pattern;
10
11 import static org.junit.Assert.fail;
12
13
14
15
16 @RunWith(MockitoJUnitRunner.class)
17 public class ProductFilterUtilTest {
18 @Test
19 public void testBambooClassIsPresent() {
20 assertClassIsPresentOnClasspath(ProductFilterUtil.CLASS_ON_BAMBOO_CLASSPATH, "Bamboo");
21 }
22
23 @Test
24 public void testBitbucketClassIsPresent() {
25 Assume.assumeTrue(isAtLeastJavaVersion(8));
26 assertClassIsPresentOnClasspath(ProductFilterUtil.CLASS_ON_BITBUCKET_CLASSPATH, "Bitbucket");
27 }
28
29 @Test
30 public void testConfluenceClassIsPresent() {
31 assertClassIsPresentOnClasspath(ProductFilterUtil.CLASS_ON_CONFLUENCE_CLASSPATH, "Confluence");
32 }
33
34 @Test
35 public void testFecruClassIsPresent() {
36 assertClassIsPresentOnClasspath(ProductFilterUtil.CLASS_ON_FECRU_CLASSPATH, "Fecru");
37 }
38
39 @Test
40 public void testJiraClassIsPresent() {
41 assertClassIsPresentOnClasspath(ProductFilterUtil.CLASS_ON_JIRA_CLASSPATH, "JIRA");
42 }
43
44 @Test
45 public void testStashClassIsPresent() {
46 Assume.assumeTrue(isAtLeastJavaVersion(7));
47 assertClassIsPresentOnClasspath(ProductFilterUtil.CLASS_ON_STASH_CLASSPATH, "Stash");
48 }
49
50 @Test
51 public void testRefappClassIsPresent() {
52 assertClassIsPresentOnClasspath(ProductFilterUtil.CLASS_ON_REFAPP_CLASSPATH, "Refapp");
53 }
54
55 private void assertClassIsPresentOnClasspath(String clazz, String product) {
56 try {
57 Class.forName(clazz);
58 } catch (ClassNotFoundException e) {
59 fail(String.format(
60 "Class %s not found on classpath, is it no longer exported from %s? If so, %s will need to be " +
61 "updated to use an exported class from %s.",
62 clazz, product, ProductFilterUtil.class.getName(), product));
63 }
64 }
65
66 private boolean isAtLeastJavaVersion(int majorVersion) {
67 Pattern pattern = Pattern.compile("(\\d+)\\.(\\d+)");
68 Matcher matcher = pattern.matcher(System.getProperty("java.version"));
69 if (matcher.find()) {
70 int version = Integer.parseInt(matcher.group(2));
71 return version >= majorVersion;
72 }
73 return false;
74 }
75 }