You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CvalAddonstCheckerUseCasesTest.java 8.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. package com.vaadin.tools;
  2. import static com.vaadin.tools.CvalAddonsChecker.VAADIN_AGPL;
  3. import static com.vaadin.tools.CvalAddonsChecker.VAADIN_CVAL;
  4. import static com.vaadin.tools.CvalChecker.computeLicenseName;
  5. import static com.vaadin.tools.CvalChecker.deleteCache;
  6. import static com.vaadin.tools.CvalCheckerTest.INVALID_KEY;
  7. import static com.vaadin.tools.CvalCheckerTest.VALID_KEY;
  8. import static com.vaadin.tools.CvalCheckerTest.addLicensedJarToClasspath;
  9. import static com.vaadin.tools.CvalCheckerTest.cachedPreferences;
  10. import static com.vaadin.tools.CvalCheckerTest.captureSystemOut;
  11. import static com.vaadin.tools.CvalCheckerTest.expiredLicenseProvider;
  12. import static com.vaadin.tools.CvalCheckerTest.productNameAgpl;
  13. import static com.vaadin.tools.CvalCheckerTest.productNameCval;
  14. import static com.vaadin.tools.CvalCheckerTest.readSystemOut;
  15. import static com.vaadin.tools.CvalCheckerTest.restoreSystemOut;
  16. import static com.vaadin.tools.CvalCheckerTest.saveCache;
  17. import static com.vaadin.tools.CvalCheckerTest.unreachableLicenseProvider;
  18. import static com.vaadin.tools.CvalCheckerTest.validEvaluationLicenseProvider;
  19. import static com.vaadin.tools.CvalCheckerTest.validLicenseProvider;
  20. import static org.junit.Assert.assertTrue;
  21. import static org.junit.Assert.fail;
  22. import java.net.URL;
  23. import java.net.URLClassLoader;
  24. import org.junit.Before;
  25. import org.junit.Test;
  26. import com.vaadin.tools.CvalChecker.CvalServer;
  27. /**
  28. * Tests for Use Cases
  29. */
  30. public class CvalAddonstCheckerUseCasesTest {
  31. enum License {
  32. NONE, EVAL, INVALID, REAL, EVAL_EXPIRED, REAL_EXPIRED
  33. };
  34. enum Version {
  35. AGPL, CVAL
  36. };
  37. enum Validated {
  38. YES, NO, OLD_KEY
  39. };
  40. enum Network {
  41. ON, OFF
  42. };
  43. enum Compile {
  44. YES, NO
  45. };
  46. enum Cached {
  47. YES, NO
  48. };
  49. enum Message {
  50. AGPL("AGPL"), VALID(">.* valid"), INVALID("not valid"), NO_LICENSE(
  51. "not found"), NO_VALIDATED("has not been validated"), EXPIRED(
  52. "has expired"), EVALUATION("evaluation");
  53. String msg;
  54. Message(String s) {
  55. msg = s;
  56. }
  57. }
  58. @Before
  59. public void setUp() {
  60. // Set up a new URLClassLoader for the thread
  61. Thread thread = Thread.currentThread();
  62. thread.setContextClassLoader(new URLClassLoader(new URL[0], null));
  63. }
  64. /* TODO: Use more descriptive test names */
  65. @Test
  66. public void testUseCase1() throws Exception {
  67. useCase(1, License.NONE, Version.AGPL, Validated.NO, Network.OFF,
  68. Compile.YES, Cached.NO, Message.AGPL);
  69. }
  70. @Test
  71. public void testUseCase2() throws Exception {
  72. useCase(2, License.NONE, Version.CVAL, Validated.NO, Network.ON,
  73. Compile.NO, Cached.NO, Message.NO_LICENSE);
  74. }
  75. @Test
  76. public void testUseCase3() throws Exception {
  77. useCase(3, License.NONE, Version.CVAL, Validated.NO, Network.OFF,
  78. Compile.NO, Cached.NO, Message.NO_LICENSE);
  79. }
  80. @Test
  81. public void testUseCase4() throws Exception {
  82. useCase(4, License.EVAL, Version.CVAL, Validated.NO, Network.ON,
  83. Compile.YES, Cached.YES, Message.EVALUATION);
  84. }
  85. @Test
  86. public void testUseCase5() throws Exception {
  87. useCase(5, License.INVALID, Version.CVAL, Validated.NO, Network.OFF,
  88. Compile.YES, Cached.NO, Message.NO_VALIDATED);
  89. }
  90. @Test
  91. public void testUseCase6() throws Exception {
  92. useCase(6, License.INVALID, Version.CVAL, Validated.NO, Network.ON,
  93. Compile.NO, Cached.NO, Message.INVALID);
  94. }
  95. @Test
  96. public void testUseCase7() throws Exception {
  97. useCase(7, License.REAL, Version.CVAL, Validated.NO, Network.ON,
  98. Compile.YES, Cached.YES, Message.VALID);
  99. }
  100. @Test
  101. public void testUseCase8() throws Exception {
  102. useCase(8, License.REAL, Version.CVAL, Validated.NO, Network.OFF,
  103. Compile.YES, Cached.NO, Message.NO_VALIDATED);
  104. }
  105. @Test
  106. public void testUseCase9() throws Exception {
  107. useCase(9, License.REAL, Version.CVAL, Validated.YES, Network.OFF,
  108. Compile.YES, Cached.YES, Message.VALID);
  109. }
  110. @Test
  111. public void testUseCase10() throws Exception {
  112. useCase(10, License.EVAL_EXPIRED, Version.CVAL, Validated.NO,
  113. Network.ON, Compile.NO, Cached.YES, Message.EXPIRED);
  114. }
  115. @Test
  116. public void testUseCase11() throws Exception {
  117. useCase(11, License.EVAL_EXPIRED, Version.CVAL, Validated.YES,
  118. Network.OFF, Compile.NO, Cached.YES, Message.EXPIRED);
  119. }
  120. @Test
  121. public void testUseCase12() throws Exception {
  122. useCase(12, License.REAL_EXPIRED, Version.CVAL, Validated.YES,
  123. Network.OFF, Compile.NO, Cached.YES, Message.EXPIRED);
  124. }
  125. @Test
  126. public void testUseCase13() throws Exception {
  127. useCase(13, License.REAL_EXPIRED, Version.CVAL, Validated.NO,
  128. Network.ON, Compile.NO, Cached.YES, Message.EXPIRED);
  129. }
  130. @Test
  131. public void testUseCase14() throws Exception {
  132. useCase(14, License.INVALID, Version.CVAL, Validated.OLD_KEY,
  133. Network.OFF, Compile.YES, Cached.NO, Message.NO_VALIDATED);
  134. }
  135. @Test
  136. public void testMultipleLicenseUseCase15() throws Exception {
  137. addLicensedJarToClasspath("test.foo", VAADIN_CVAL);
  138. System.setProperty(computeLicenseName("test.foo"), VALID_KEY);
  139. useCase(15, License.REAL, Version.CVAL, Validated.YES, Network.OFF,
  140. Compile.YES, Cached.YES, Message.NO_VALIDATED);
  141. }
  142. @Test
  143. public void testMultipleLicenseUseCase16() throws Exception {
  144. addLicensedJarToClasspath("test.foo", VAADIN_CVAL);
  145. System.setProperty(computeLicenseName("test.foo"), VALID_KEY);
  146. useCase(16, License.REAL, Version.CVAL, Validated.YES, Network.ON,
  147. Compile.NO, Cached.YES, Message.INVALID);
  148. }
  149. private void useCase(int number, License lic, Version ver, Validated val,
  150. Network net, Compile res, Cached cached, Message msg)
  151. throws Exception {
  152. if (ver == Version.AGPL) {
  153. addLicensedJarToClasspath(productNameAgpl, VAADIN_AGPL);
  154. addLicensedJarToClasspath(productNameCval, null);
  155. } else {
  156. addLicensedJarToClasspath(productNameAgpl, null);
  157. addLicensedJarToClasspath(productNameCval, VAADIN_CVAL);
  158. }
  159. String licenseName = computeLicenseName(productNameCval);
  160. if (lic == License.NONE) {
  161. System.getProperties().remove(licenseName);
  162. } else if (lic == License.INVALID) {
  163. System.setProperty(licenseName, INVALID_KEY);
  164. } else {
  165. System.setProperty(licenseName, VALID_KEY);
  166. }
  167. if (val == Validated.NO) {
  168. deleteCache(productNameCval);
  169. } else {
  170. String type = lic == License.EVAL || lic == License.EVAL_EXPIRED
  171. ? "evaluation"
  172. : null;
  173. Boolean expired = lic == License.EVAL_EXPIRED
  174. || lic == License.REAL_EXPIRED ? true : null;
  175. String key = val == Validated.OLD_KEY ? "oldkey" : null;
  176. saveCache(productNameCval, key, expired, null, type);
  177. }
  178. CvalServer licenseProvider = validLicenseProvider;
  179. if (net == Network.OFF) {
  180. licenseProvider = unreachableLicenseProvider;
  181. } else if (lic == License.EVAL_EXPIRED || lic == License.REAL_EXPIRED) {
  182. licenseProvider = expiredLicenseProvider;
  183. } else if (lic == License.EVAL) {
  184. licenseProvider = validEvaluationLicenseProvider;
  185. }
  186. CvalAddonsChecker addonChecker = new CvalAddonsChecker();
  187. addonChecker.setLicenseProvider(licenseProvider).setFilter(".*test.*");
  188. captureSystemOut();
  189. String testNumber = "Test #" + number + " ";
  190. String message;
  191. try {
  192. addonChecker.run();
  193. message = readSystemOut();
  194. if (res == Compile.NO) {
  195. fail(testNumber + "Exception not thrown:" + message);
  196. }
  197. } catch (Exception e) {
  198. restoreSystemOut();
  199. message = e.getMessage();
  200. if (res == Compile.YES) {
  201. fail(testNumber + "Unexpected Exception: " + e.getMessage());
  202. }
  203. }
  204. // System.err.println("\n> " + testNumber + " " + lic + " " + ver + " "
  205. // + val + " " + net + " " + res + " " + cached + "\n" + message);
  206. assertTrue(testNumber + "Fail:\n" + message + "\nDoes not match:"
  207. + msg.msg, message.matches("(?s).*" + msg.msg + ".*"));
  208. String c = cachedPreferences(productNameCval);
  209. assertTrue(testNumber + "Fail: cacheExists != " + (cached == Cached.YES)
  210. + "\n " + c, (c != null) == (cached == Cached.YES));
  211. }
  212. }