diff --git a/app/controllers/GetIndexSettings.scala b/app/controllers/GetIndexSettingsController.scala similarity index 66% rename from app/controllers/GetIndexSettings.scala rename to app/controllers/GetIndexSettingsController.scala index 78f0c08c4e406bdb10aa79b8689c852f4ae7f2c9..f966b684d4abfa9c190add45a8b09a4b8dc8ede3 100644 --- a/app/controllers/GetIndexSettings.scala +++ b/app/controllers/GetIndexSettingsController.scala @@ -1,6 +1,6 @@ package controllers -class GetIndexSettings extends ElasticActionController { +class GetIndexSettingsController extends ElasticActionController { def processElasticRequest = (request, client) => client.getIndexSettings(request.get("index"), request.host) diff --git a/conf/routes b/conf/routes index 99543de7a2711d0045534736202278c94895b015..d7a1d370f3c79ae0356514fad9081898ee43dfd8 100644 --- a/conf/routes +++ b/conf/routes @@ -15,7 +15,7 @@ POST /apis/optimize_indices @controllers.OptimizeIndexControlle POST /apis/clear_indices_cache @controllers.ClearIndexCacheController.execute POST /apis/refresh_indices @controllers.RefreshIndexController.execute POST /apis/delete_indices @controllers.DeleteIndexController.execute -POST /apis/get_index_settings @controllers.GetIndexSettings.execute +POST /apis/get_index_settings @controllers.GetIndexSettingsController.execute POST /apis/get_index_mapping @controllers.GetIndexMappingController.execute POST /apis/update_cluster_settings @controllers.PutClusterSettings.execute POST /apis/get_node_stats @controllers.NodeStatsController.execute diff --git a/test/controllers/GetIndexSettingsControllerSpec.scala b/test/controllers/GetIndexSettingsControllerSpec.scala new file mode 100644 index 0000000000000000000000000000000000000000..00d88312cf6e5ce61ff900491c5d8cd0f81d211d --- /dev/null +++ b/test/controllers/GetIndexSettingsControllerSpec.scala @@ -0,0 +1,61 @@ +package controllers + +import elastic.{ElasticResponse, ElasticClient} +import exceptions.MissingRequiredParamException +import models.CerebroRequest +import org.specs2.Specification +import org.specs2.mock.Mockito +import play.api.libs.json.Json +import play.api.test.FakeApplication + +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, Future} + +object GetIndexSettingsControllerSpec extends Specification with Mockito { + + def is = + s2""" + GetIndexSettingsController should ${step(play.api.Play.start(FakeApplication()))} + invoke getIndexSettings $getIndexSettings + should throw exception if index param is missing $missingIndex + ${step(play.api.Play.stop(FakeApplication()))} + """ + + val controller = new GetIndexSettingsController + + def getIndexSettings = { + val expectedResponse = Json.parse( + """ + |{ + | "someIndex": { + | "settings": { + | "index": { + | "creation_date": "1459675569309", + | "number_of_shards": "5", + | "number_of_replicas": "1", + | "uuid": "6sN-tL30Sfyz_tW0iVqVPQ", + | "version": { + | "created": "2030099" + | } + | } + | } + | } + |} + """.stripMargin + ) + val body = Json.obj("host" -> "somehost", "index" -> "someIndex") + val client = mock[ElasticClient] + client.getIndexSettings("someIndex", "somehost") returns Future.successful(ElasticResponse(200, expectedResponse)) + val response = Await.result(controller.processElasticRequest(CerebroRequest(body), client), Duration("1s")) + there was one(client).getIndexSettings("someIndex", "somehost") + response.body mustEqual expectedResponse + response.status mustEqual 200 + } + + def missingIndex = { + val body = Json.obj("host" -> "somehost") + val client = mock[ElasticClient] + controller.processElasticRequest(CerebroRequest(body), client) must throwA[MissingRequiredParamException] + } + +}