@Test
  public void testGetBriefMaintenanceStatusMessageForMaintenanceExpiredPersonalLicense() {
    mockLicense.setLicenseType(LicenseType.PERSONAL);
    mockLicense.setMaintenanceExpired(true);
    mockLicense.setMaintenanceExpiryDate(tenSecondsBeforeNow);

    assertBriefMaintenanceMessageContains("unsupported");
  }
 @Test
 public void testGetLicenseExpiryStatusMessageForPersonalLicenseWithNonExpiredMaintenance() {
   mockLicense.setMaintenanceExpired(false);
   mockLicense.setMaintenanceExpiryDate(tenSecondsFromNow);
   // unsupported license
   mockLicense.setLicenseType(LicenseType.PERSONAL);
   assertExpiryMessageContains("admin.upgrades.available.until");
 }
 @Test
 public void testGetLicenseStatusMessageForAlmostMaintenanceExpiredPersonalLicense()
     throws Exception {
   mockLicense.setLicenseType(LicenseType.PERSONAL);
   mockLicense.setMaintenanceExpiryDate(tenSecondsFromNow);
   String message = licenseDetails.getLicenseStatusMessage(fred, "");
   assertTrue(message.contains("admin.license.updates.only.will.end"));
   assertTrue(message.contains("admin.license.renew.for.updates.only.after"));
 }
  @Test
  public void testGetLicenseExpiryStatusMessageForCommunityLicenseWithNonExpiredMaintenance() {
    mockLicense.setMaintenanceExpired(false);
    mockLicense.setMaintenanceExpiryDate(tenSecondsFromNow);

    // other self renewable but supported licenses
    mockLicense.setLicenseType(LicenseType.COMMUNITY);
    assertExpiryMessageContains("admin.support.available.until");
  }
  @Test
  public void testGetLicenseStatusMessageNormalForMaintenanceExpiredNonProfitLicense()
      throws Exception {
    mockLicense.setLicenseType(LicenseType.NON_PROFIT);
    mockLicense.setMaintenanceExpired(true);
    mockLicense.setMaintenanceExpiryDate(tenSecondsBeforeNow);

    String message = licenseDetails.getLicenseStatusMessage(fred, "");
    assertTrue(message.contains("admin.license.updates.only.has.ended"));
    assertTrue(message.contains("admin.license.renew.for.deprecated"));
  }
 @Test
 public void testGetLicenseStatusMessageNewBuildOldLicenseForNonExpiredNonProfitLicense() {
   mockLicense.setLicenseType(LicenseType.NON_PROFIT);
   mockLicense.setMaintenanceExpiryDate(tenSecondsBeforeNow);
   setLicenseExtenstionTimestamp(tenDaysAgoInMillis);
   // user: doesnt exist, mockLicense: other/deprecated, expired: no
   String message = licenseDetails.getLicenseStatusMessage(fred, "");
   assertTrue(message.contains("admin.license.nbol.current.version.user.unknown"));
   assertTrue(message.contains("admin.license.nbol.updates.only"));
   assertTrue(message.contains("admin.license.renew.for.deprecated"));
   assertTrue(message.contains("admin.license.nbol.evaluation.period.will.expire.in"));
 }
  @Before
  public void setUp() throws Exception {
    final DateTimeFormatter dateTimeFormatter = new DateTimeFormatterFactoryStub().formatter();
    buildUtilsInfo = Mockito.mock(BuildUtilsInfo.class);
    clusterManager = Mockito.mock(ClusterManager.class);
    applicationProperties = new MockApplicationProperties();
    externalLinkUtil = new MockExternalLinkUtil();
    mockI18nHelper = new NoopI18nHelper(Locale.ENGLISH);

    now = new Date(1401162923372L);
    tenSecondsFromNow = new Date(now.getTime() + TimeUnit.SECONDS.toMillis(10));
    tenSecondsBeforeNow = new Date(now.getTime() - TimeUnit.SECONDS.toMillis(10));
    tenDaysFromNow = new Date(now.getTime() + TimeUnit.DAYS.toMillis(10));
    twentyFourDaysAgo = new Date(now.getTime() - TimeUnit.DAYS.toMillis(24));
    fiftyDaysFromNow = new Date(now.getTime() + TimeUnit.DAYS.toMillis(50));

    tenDaysAgoInMillis = now.getTime() - TimeUnit.DAYS.toMillis(10);
    thirtyDaysAgoInMillis = now.getTime() - TimeUnit.DAYS.toMillis(30);
    fiftyDaysAgoInMillis = now.getTime() - TimeUnit.DAYS.toMillis(50);

    mockLicense = new MockLicense();
    mockLicense.setLicenseType(LicenseType.COMMERCIAL);
    mockLicense.setMaintenanceExpired(false);
    mockLicense.setMaintenanceExpiryDate(tenSecondsFromNow);

    when(buildUtilsInfo.getCurrentBuildDate()).thenReturn(now);

    licenseDetails =
        new DefaultLicenseDetails(
            mockLicense,
            LICENSE_STRING,
            applicationProperties,
            externalLinkUtil,
            buildUtilsInfo,
            new NoopI18nFactory(),
            dateTimeFormatter,
            new Version2LicenseDecoder(),
            clusterManager,
            new ConstantClock(now.getTime())) {
          @Override
          User getConfirmedUser() {
            return fred;
          }
        };
  }
 private void assertSupportEntitlement(
     final LicenseType licenceType, final boolean expectedEntitlement) {
   mockLicense.setLicenseType(licenceType);
   assertEquals(licenceType.name(), expectedEntitlement, licenseDetails.isEntitledToSupport());
 }
 @Test
 public void testGetBriefMaintenanceStatusMessageForValidPersonalLicense() {
   mockLicense.setLicenseType(LicenseType.PERSONAL);
   assertBriefMaintenanceMessageContains("unsupported");
 }
 @Test
 public void testGetBriefMaintenanceStatusMessageForValidCommunityLicense() {
   mockLicense.setLicenseType(LicenseType.COMMUNITY);
   assertBriefMaintenanceMessageContains("supported.valid");
 }