package org.zalando.stups.differentnamespace; import com.amazonaws.services.cloudtrail.processinglibrary.model.CloudTrailEvent; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.plugin.core.PluginRegistry; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import org.zalando.stups.fullstop.plugin.FullstopPlugin; import org.zalando.stups.fullstop.plugin.RegionPlugin; import org.zalando.stups.fullstop.plugin.config.RegionPluginProperties; import org.zalando.stups.fullstop.violation.ViolationSink; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.zalando.stups.fullstop.events.TestCloudTrailEventSerializer.createCloudTrailEvent; @RunWith(SpringRunner.class) @SpringBootTest(classes = FullstopApplication.class, properties = "debug=true") @ActiveProfiles("single") public class FullstopApplicationSingleIT { @Autowired private PluginRegistry<FullstopPlugin, CloudTrailEvent> pluginRegistry; @Autowired private RegionPlugin regionPlugin; @Autowired private RegionPluginProperties regionPluginProperties; @Autowired private ViolationSink violationSink; @Test public void testRegionPlugin() { assertThat(regionPluginProperties.getWhitelistedRegions()).containsOnly("us-west-1"); final List<FullstopPlugin> plugins = pluginRegistry.getPlugins(); assertThat(plugins).isNotEmpty(); assertThat(plugins).contains(regionPlugin); final CloudTrailEvent cloudTrailEvent = createCloudTrailEvent("/run-instance-us-west.json"); for (final FullstopPlugin plugin : plugins) { plugin.processEvent(cloudTrailEvent); } assertThat(((CountingViolationSink) violationSink).getInvocationCount()).isEqualTo(0); } @Test public void testRegionPluginThatShouldReportViolations() { assertThat(regionPluginProperties.getWhitelistedRegions()).containsOnly("us-west-1"); final List<FullstopPlugin> plugins = pluginRegistry.getPlugins(); assertThat(plugins).isNotEmpty(); assertThat(plugins).contains(regionPlugin); final CloudTrailEvent cloudTrailEvent = createCloudTrailEvent("/run-instance-eu-central.json"); for (final FullstopPlugin plugin : plugins) { plugin.processEvent(cloudTrailEvent); } assertThat(((CountingViolationSink) violationSink).getInvocationCount()).isGreaterThan(0); } }