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 9.3KB

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