package io.crate.operation.reference.sys.check.cluster; import io.crate.operation.reference.sys.check.SysCheck; import io.crate.plugin.SQLPlugin; import io.crate.test.integration.CrateUnitTest; import org.elasticsearch.common.settings.ClusterSettings; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; import org.hamcrest.core.Is; import org.junit.Before; import org.junit.Test; import java.util.HashSet; import java.util.Set; public class LicenseEnterpriseChecksTest extends CrateUnitTest { private ClusterSettings clusterSettings; @Before public void registerSettings() { SQLPlugin sqlPlugin = new SQLPlugin(Settings.EMPTY); Set<Setting<?>> settings = new HashSet<>(); settings.addAll(ClusterSettings.BUILT_IN_CLUSTER_SETTINGS); settings.addAll(sqlPlugin.getSettings()); clusterSettings = new ClusterSettings(Settings.EMPTY, settings); } @Test public void testCommunityEdition() throws Exception { Settings settings = Settings.builder().put("license.enterprise", false).build(); LicenseEnterpriseChecks licenseEnterpriseCheck = new LicenseEnterpriseChecks(clusterSettings, settings); assertThat(licenseEnterpriseCheck.id(), Is.is(4)); assertThat(licenseEnterpriseCheck.severity(), Is.is(SysCheck.Severity.HIGH)); assertThat(licenseEnterpriseCheck.validate(), Is.is(true)); } @Test public void testUnlicensencedEnterpriseEdition() throws Exception { Settings settings = Settings.builder().put("license.enterprise", true).build(); LicenseEnterpriseChecks licenseEnterpriseCheck = new LicenseEnterpriseChecks(clusterSettings, settings); assertThat(licenseEnterpriseCheck.validate(), Is.is(false)); } @Test public void testLicensencedEnterpriseEdition() throws Exception { Settings settings = Settings.builder() .put("license.enterprise", true) .put("license.ident", "my-awesome-key").build(); LicenseEnterpriseChecks licenseEnterpriseCheck = new LicenseEnterpriseChecks(clusterSettings, settings); assertThat(licenseEnterpriseCheck.validate(), Is.is(true)); } @Test public void testLicensencedEnterpriseUpdateIdent() throws Exception { Settings settings = Settings.builder() .put("license.enterprise", true).build(); LicenseEnterpriseChecks licenseEnterpriseCheck = new LicenseEnterpriseChecks(clusterSettings, settings); assertThat(licenseEnterpriseCheck.validate(), Is.is(false)); Settings newSettings = Settings.builder() .put("license.ident", "my new license").build(); clusterSettings.applySettings(newSettings); assertThat(licenseEnterpriseCheck.validate(), Is.is(true)); } }