@Test
 public void testGetLicenseExpiryStatusMessageForLicenseWithExpiredMaintenance() {
   // finally, if expired, message should be null
   mockLicense.setMaintenanceExpired(true);
   mockLicense.setMaintenanceExpiryDate(tenSecondsBeforeNow);
   assertNull(licenseDetails.getLicenseExpiryStatusMessage(fred));
 }
  @Test
  public void testGetLicenseExpiryStatusMessageForLicenseWithNonExpiredMaintenance() {
    mockLicense.setMaintenanceExpired(false);
    mockLicense.setMaintenanceExpiryDate(tenSecondsFromNow);

    assertExpiryMessageContains("admin.support.available.until");
  }
  @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 testGetLicenseStatusMessageForMaintenanceExpiredLicense() throws Exception {
    mockLicense.setMaintenanceExpired(true);
    mockLicense.setMaintenanceExpiryDate(tenSecondsBeforeNow);

    String message = licenseDetails.getLicenseStatusMessage(fred, "");
    assertTrue(message.contains("admin.license.support.and.updates.has.ended"));
    assertTrue(message.contains("admin.license.renew.for.support.and.updates"));
  }
  @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"));
  }
  @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;
          }
        };
  }
 @Test
 public void testGetBriefMaintenanceStatusMessageMaintenanceExpiredLicense() {
   mockLicense.setMaintenanceExpired(true);
   mockLicense.setMaintenanceExpiryDate(tenSecondsBeforeNow);
   assertBriefMaintenanceMessageContains("supported.expired");
 }