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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. /*
  2. * Copyright 2000-2014 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 org.junit.Assert;
  36. import org.junit.Test;
  37. import com.vaadin.tools.CvalChecker.CvalServer;
  38. /**
  39. * Tests for Use Cases
  40. */
  41. public class CvalAddonstCheckerUseCasesTest {
  42. enum License {
  43. NONE, EVAL, INVALID, REAL, EVAL_EXPIRED, REAL_EXPIRED
  44. };
  45. enum Version {
  46. AGPL, CVAL
  47. };
  48. enum Validated {
  49. YES, NO, OLD_KEY
  50. };
  51. enum Network {
  52. ON, OFF
  53. };
  54. enum Compile {
  55. YES, NO
  56. };
  57. enum Cached {
  58. YES, NO
  59. };
  60. enum Message {
  61. AGPL("AGPL"), VALID(">.* valid"), INVALID("not valid"), NO_LICENSE(
  62. "not found"), NO_VALIDATED("has not been validated"), EXPIRED(
  63. "has expired"), EVALUATION("evaluation");
  64. String msg;
  65. Message(String s) {
  66. msg = s;
  67. }
  68. }
  69. @Test
  70. public void testUseCases() throws Exception {
  71. useCase(1, License.NONE, Version.AGPL, Validated.NO, Network.OFF,
  72. Compile.YES, Cached.NO, Message.AGPL);
  73. useCase(2, License.NONE, Version.CVAL, Validated.NO, Network.ON,
  74. Compile.NO, Cached.NO, Message.NO_LICENSE);
  75. useCase(3, License.NONE, Version.CVAL, Validated.NO, Network.OFF,
  76. Compile.NO, Cached.NO, Message.NO_LICENSE);
  77. useCase(4, License.EVAL, Version.CVAL, Validated.NO, Network.ON,
  78. Compile.YES, Cached.YES, Message.EVALUATION);
  79. useCase(5, License.INVALID, Version.CVAL, Validated.NO, Network.OFF,
  80. Compile.YES, Cached.NO, Message.NO_VALIDATED);
  81. useCase(6, License.INVALID, Version.CVAL, Validated.NO, Network.ON,
  82. Compile.NO, Cached.NO, Message.INVALID);
  83. useCase(7, License.REAL, Version.CVAL, Validated.NO, Network.ON,
  84. Compile.YES, Cached.YES, Message.VALID);
  85. useCase(8, License.REAL, Version.CVAL, Validated.NO, Network.OFF,
  86. Compile.YES, Cached.NO, Message.NO_VALIDATED);
  87. useCase(9, License.REAL, Version.CVAL, Validated.YES, Network.OFF,
  88. Compile.YES, Cached.YES, Message.VALID);
  89. useCase(10, License.EVAL_EXPIRED, Version.CVAL, Validated.NO,
  90. Network.ON, Compile.NO, Cached.YES, Message.EXPIRED);
  91. useCase(11, License.EVAL_EXPIRED, Version.CVAL, Validated.YES,
  92. Network.OFF, Compile.NO, Cached.YES, Message.EXPIRED);
  93. useCase(12, License.REAL_EXPIRED, Version.CVAL, Validated.YES,
  94. Network.OFF, Compile.NO, Cached.YES, Message.EXPIRED);
  95. useCase(13, License.REAL_EXPIRED, Version.CVAL, Validated.NO,
  96. Network.ON, Compile.NO, Cached.YES, Message.EXPIRED);
  97. useCase(14, License.INVALID, Version.CVAL, Validated.OLD_KEY,
  98. Network.OFF, Compile.YES, Cached.NO, Message.NO_VALIDATED);
  99. }
  100. @Test
  101. public void testMultipleLicenseUseCases() throws Exception {
  102. addLicensedJarToClasspath("test.foo", VAADIN_CVAL);
  103. System.setProperty(computeLicenseName("test.foo"), VALID_KEY);
  104. useCase(15, License.REAL, Version.CVAL, Validated.YES, Network.OFF,
  105. Compile.YES, Cached.YES, Message.NO_VALIDATED);
  106. useCase(16, License.REAL, Version.CVAL, Validated.YES, Network.ON,
  107. Compile.NO, Cached.YES, Message.INVALID);
  108. }
  109. private void useCase(int number, License lic, Version ver, Validated val,
  110. Network net, Compile res, Cached cached, Message msg)
  111. throws Exception {
  112. if (ver == Version.AGPL) {
  113. addLicensedJarToClasspath(productNameAgpl, VAADIN_AGPL);
  114. addLicensedJarToClasspath(productNameCval, null);
  115. } else {
  116. addLicensedJarToClasspath(productNameAgpl, null);
  117. addLicensedJarToClasspath(productNameCval, VAADIN_CVAL);
  118. }
  119. String licenseName = computeLicenseName(productNameCval);
  120. if (lic == License.NONE) {
  121. System.getProperties().remove(licenseName);
  122. } else if (lic == License.INVALID) {
  123. System.setProperty(licenseName, INVALID_KEY);
  124. } else {
  125. System.setProperty(licenseName, VALID_KEY);
  126. }
  127. if (val == Validated.NO) {
  128. deleteCache(productNameCval);
  129. } else {
  130. String type = lic == License.EVAL || lic == License.EVAL_EXPIRED ? "evaluation"
  131. : null;
  132. Boolean expired = lic == License.EVAL_EXPIRED
  133. || lic == License.REAL_EXPIRED ? true : null;
  134. String key = val == Validated.OLD_KEY ? "oldkey" : null;
  135. saveCache(productNameCval, key, expired, null, type);
  136. }
  137. CvalServer licenseProvider = validLicenseProvider;
  138. if (net == Network.OFF) {
  139. licenseProvider = unreachableLicenseProvider;
  140. } else if (lic == License.EVAL_EXPIRED || lic == License.REAL_EXPIRED) {
  141. licenseProvider = expiredLicenseProvider;
  142. } else if (lic == License.EVAL) {
  143. licenseProvider = validEvaluationLicenseProvider;
  144. }
  145. CvalAddonsChecker addonChecker = new CvalAddonsChecker();
  146. addonChecker.setLicenseProvider(licenseProvider).setFilter(".*test.*");
  147. captureSystemOut();
  148. String testNumber = "Test #" + number + " ";
  149. String message;
  150. try {
  151. addonChecker.run();
  152. message = readSystemOut();
  153. if (res == Compile.NO) {
  154. Assert.fail(testNumber + "Exception not thrown:" + message);
  155. }
  156. } catch (Exception e) {
  157. restoreSystemOut();
  158. message = e.getMessage();
  159. if (res == Compile.YES) {
  160. Assert.fail(testNumber + "Unexpected Exception: "
  161. + e.getMessage());
  162. }
  163. }
  164. // System.err.println("\n> " + testNumber + " " + lic + " " + ver + " "
  165. // + val + " " + net + " " + res + " " + cached + "\n" + message);
  166. Assert.assertTrue(testNumber + "Fail:\n" + message
  167. + "\nDoes not match:" + msg.msg,
  168. message.matches("(?s).*" + msg.msg + ".*"));
  169. String c = cachedPreferences(productNameCval);
  170. Assert.assertTrue(testNumber + "Fail: cacheExists != "
  171. + (cached == Cached.YES) + "\n " + c,
  172. (c != null) == (cached == Cached.YES));
  173. }
  174. }