diff --git a/thehive/app/org/thp/thehive/controllers/v0/CaseCtrl.scala b/thehive/app/org/thp/thehive/controllers/v0/CaseCtrl.scala index bf1fb64815..522c7f432b 100644 --- a/thehive/app/org/thp/thehive/controllers/v0/CaseCtrl.scala +++ b/thehive/app/org/thp/thehive/controllers/v0/CaseCtrl.scala @@ -157,7 +157,7 @@ class CaseCtrl @Inject() ( _ <- sameOrga(Seq(caze, toMerge)) _ <- sameProfile(Seq(caze, toMerge)) merged <- caseSrv.merge(Seq(caze, toMerge)) - } yield Results.Ok(merged.toJson) + } yield Results.Created(merged.toJson) } private def sameOrga(cases: Seq[Case with Entity])(implicit graph: Graph): Try[Seq[Case with Entity]] = diff --git a/thehive/test/org/thp/thehive/controllers/v0/CaseCtrlTest.scala b/thehive/test/org/thp/thehive/controllers/v0/CaseCtrlTest.scala index 35530cdc20..ed4089fc05 100644 --- a/thehive/test/org/thp/thehive/controllers/v0/CaseCtrlTest.scala +++ b/thehive/test/org/thp/thehive/controllers/v0/CaseCtrlTest.scala @@ -369,8 +369,8 @@ class CaseCtrlTest extends PlaySpecification with TestAppBuilder { status(case21) must equalTo(200).updateMessage(s => s"$s\n${contentAsString(case21)}") val output21 = contentAsJson(case21).as[OutputCase] - val request = FakeRequest("GET", "/api/v0/case/21/_merge/22") - .withHeaders("user" -> "admin@thehive.local") + val request = FakeRequest("POST", "/api/v0/case/21/_merge/22") + .withHeaders("user" -> "certuser@thehive.local") val result = app[CaseCtrl].merge("21", "22")(request) status(result) must beEqualTo(201).updateMessage(s => s"$s\n${contentAsString(result)}") @@ -389,8 +389,8 @@ class CaseCtrlTest extends PlaySpecification with TestAppBuilder { tlp = 4, pap = 3, status = "Open", - tags = Set.empty, - owner = None, + tags = Set("toMerge:pred1=\"value1\"", "toMerge:pred2=\"value2\""), + owner = Some("certuser@thehive.local"), stats = JsObject.empty ) ) @@ -403,8 +403,8 @@ class CaseCtrlTest extends PlaySpecification with TestAppBuilder { } "merge two cases error, not same organisation" in testApp { app => - val request = FakeRequest("GET", "/api/v0/case/21/_merge/24") - .withHeaders("user" -> "admin@thehive.local") + val request = FakeRequest("POST", "/api/v0/case/21/_merge/24") + .withHeaders("user" -> "certuser@thehive.local") val result = app[CaseCtrl].merge("21", "24")(request) // User shouldn't be able to see others cases, resulting in 404 @@ -412,8 +412,8 @@ class CaseCtrlTest extends PlaySpecification with TestAppBuilder { } "merge two cases error, not same profile" in testApp { app => - val request = FakeRequest("GET", "/api/v0/case/21/_merge/25") - .withHeaders("user" -> "admin@thehive.local") + val request = FakeRequest("POST", "/api/v0/case/21/_merge/25") + .withHeaders("user" -> "certuser@thehive.local") val result = app[CaseCtrl].merge("21", "25")(request) status(result) must beEqualTo(400).updateMessage(s => s"$s\n${contentAsString(result)}") diff --git a/thehive/test/org/thp/thehive/services/CaseSrvTest.scala b/thehive/test/org/thp/thehive/services/CaseSrvTest.scala index 1bc85ef950..8753dbb560 100644 --- a/thehive/test/org/thp/thehive/services/CaseSrvTest.scala +++ b/thehive/test/org/thp/thehive/services/CaseSrvTest.scala @@ -419,9 +419,10 @@ class CaseSrvTest extends PlaySpecification with TestAppBuilder { } yield newCase } must beASuccessfulTry.which { richCase => app[Database].roTransaction { implicit graph => - app[CaseSrv].get(EntityName(richCase.number.toString)).tasks.toSeq.size mustEqual 3 - app[CaseSrv].get(EntityName(richCase.number.toString)).observables.toSeq.size mustEqual 3 - app[CaseSrv].get(EntityName(richCase.number.toString)).procedure.toSeq.size mustEqual 3 + val mergedCase = app[CaseSrv].get(EntityName(richCase.number.toString)) + mergedCase.clone().tasks.toSeq.size mustEqual 3 + mergedCase.clone().observables.toSeq.size mustEqual 3 + mergedCase.clone().procedure.toSeq.size mustEqual 3 } } }