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