Merge pull request #7 from myrle-krantz/develop
Added test that I can reach spring monitoring endpoints via system to…
diff --git a/component-test/src/main/java/TestPermittableEndpoints.java b/component-test/src/main/java/TestPermittableEndpoints.java
index 64a4f4e..ed2c16c 100644
--- a/component-test/src/main/java/TestPermittableEndpoints.java
+++ b/component-test/src/main/java/TestPermittableEndpoints.java
@@ -39,6 +39,9 @@
import java.util.Arrays;
import java.util.List;
+/**
+ * @author Myrle Krantz
+ */
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class TestPermittableEndpoints {
diff --git a/component-test/src/main/java/TestSystemTokenOnSpringEndpoints.java b/component-test/src/main/java/TestSystemTokenOnSpringEndpoints.java
new file mode 100644
index 0000000..07cdc5c
--- /dev/null
+++ b/component-test/src/main/java/TestSystemTokenOnSpringEndpoints.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2017 The Mifos Initiative.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import io.mifos.anubis.example.simple.ExampleConfiguration;
+import io.mifos.anubis.example.simple.Metrics;
+import io.mifos.anubis.example.simple.MetricsFeignClient;
+import io.mifos.anubis.test.v1.TenantApplicationSecurityEnvironmentTestRule;
+import io.mifos.core.api.context.AutoUserContext;
+import io.mifos.core.test.env.TestEnvironment;
+import io.mifos.core.test.fixture.TenantDataStoreContextTestRule;
+import io.mifos.core.test.fixture.cassandra.CassandraInitializer;
+import org.junit.Assert;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.RuleChain;
+import org.junit.rules.TestRule;
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.netflix.feign.EnableFeignClients;
+import org.springframework.cloud.netflix.ribbon.RibbonClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author Myrle Krantz
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
+public class TestSystemTokenOnSpringEndpoints {
+ private static final String APP_NAME = "anubis-v1";
+
+ @Configuration
+ @EnableFeignClients(basePackages = {"io.mifos.anubis.example.simple"})
+ @RibbonClient(name = APP_NAME)
+ @Import({ExampleConfiguration.class})
+ static public class TestConfiguration {
+ public TestConfiguration() {
+ super();
+ }
+
+ @Bean()
+ public Logger logger() {
+ return LoggerFactory.getLogger("system-token-logger");
+ }
+ }
+
+ private final static TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
+ private final static CassandraInitializer cassandraInitializer = new CassandraInitializer();
+ private final static TenantDataStoreContextTestRule tenantDataStoreContext = TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer);
+
+ @ClassRule
+ public static TestRule orderClassRules = RuleChain
+ .outerRule(testEnvironment)
+ .around(cassandraInitializer)
+ .around(tenantDataStoreContext);
+
+ @Rule
+ public final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment
+ = new TenantApplicationSecurityEnvironmentTestRule(testEnvironment);
+
+ @SuppressWarnings({"SpringAutowiredFieldsWarningInspection", "SpringJavaAutowiringInspection", "SpringJavaAutowiredMembersInspection"})
+ @Autowired
+ protected MetricsFeignClient example;
+
+
+ @Test
+ public void shouldBeAbleToGetMetrics() throws Exception {
+ try (final AutoUserContext ignored = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) {
+ final Metrics metrics = example.getMetrics();
+ Assert.assertTrue(metrics.getThreads() > 0);
+ }
+ }
+}
\ No newline at end of file
diff --git a/component-test/src/main/java/io/mifos/anubis/example/simple/Metrics.java b/component-test/src/main/java/io/mifos/anubis/example/simple/Metrics.java
new file mode 100644
index 0000000..c4538cb
--- /dev/null
+++ b/component-test/src/main/java/io/mifos/anubis/example/simple/Metrics.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2017 The Mifos Initiative.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.mifos.anubis.example.simple;
+
+/**
+ * @author Myrle Krantz
+ */
+public class Metrics {
+ private Integer threads;
+
+ public Metrics() {
+ }
+
+ public Integer getThreads() {
+ return threads;
+ }
+
+ public void setThreads(Integer threads) {
+ this.threads = threads;
+ }
+
+ @Override
+ public String toString() {
+ return "Metrics{" +
+ "threads=" + threads +
+ '}';
+ }
+}
diff --git a/component-test/src/main/java/io/mifos/anubis/example/simple/MetricsFeignClient.java b/component-test/src/main/java/io/mifos/anubis/example/simple/MetricsFeignClient.java
new file mode 100644
index 0000000..1d9d7ae
--- /dev/null
+++ b/component-test/src/main/java/io/mifos/anubis/example/simple/MetricsFeignClient.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2017 The Mifos Initiative.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.mifos.anubis.example.simple;
+
+import io.mifos.core.api.util.CustomFeignClientsConfiguration;
+import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * @author Myrle Krantz
+ */
+@FeignClient(name="anubis-v1", path="/anubis/v1", configuration = CustomFeignClientsConfiguration.class)
+public interface MetricsFeignClient {
+
+ @RequestMapping(value = "metrics", method = RequestMethod.GET,
+ consumes = MediaType.APPLICATION_JSON_VALUE,
+ produces = MediaType.ALL_VALUE)
+ Metrics getMetrics();
+}