From 56d2059615218dc62b47c6990aedf9930984ae77 Mon Sep 17 00:00:00 2001 From: Robin Riclet Date: Thu, 18 Feb 2021 18:27:55 +0100 Subject: [PATCH] #1264 Basic merge & basics tests ok --- .../org/thp/thehive/controllers/v1/CaseCtrl.scala | 2 +- thehive/app/org/thp/thehive/services/CaseSrv.scala | 4 ++-- .../thp/thehive/controllers/v1/CaseCtrlTest.scala | 12 ++++++------ thehive/test/resources/data/OrganisationShare.json | 1 + thehive/test/resources/data/Share.json | 1 + thehive/test/resources/data/ShareCase.json | 1 + 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/thehive/app/org/thp/thehive/controllers/v1/CaseCtrl.scala b/thehive/app/org/thp/thehive/controllers/v1/CaseCtrl.scala index f61d51e3a0..0eb6794313 100644 --- a/thehive/app/org/thp/thehive/controllers/v1/CaseCtrl.scala +++ b/thehive/app/org/thp/thehive/controllers/v1/CaseCtrl.scala @@ -142,7 +142,7 @@ class CaseCtrl @Inject() ( _ <- sameOrga(cases) _ <- sameProfile(cases) mergedCase <- caseSrv.merge(cases) - } yield Results.Ok(mergedCase.toJson) + } yield Results.Created(mergedCase.toJson) } private def sameOrga(cases: Seq[Case with Entity])(implicit graph: Graph): Try[Seq[Case with Entity]] = diff --git a/thehive/app/org/thp/thehive/services/CaseSrv.scala b/thehive/app/org/thp/thehive/services/CaseSrv.scala index 770e40b825..fb9057bcb1 100644 --- a/thehive/app/org/thp/thehive/services/CaseSrv.scala +++ b/thehive/app/org/thp/thehive/services/CaseSrv.scala @@ -310,12 +310,12 @@ class CaseSrv @Inject() ( cases.map(_.summary).fold(None)((s1, s2) => (s1 ++ s2).reduceOption(_ + "\n\n" + _)) ) - val tryTags = cases.toTry(c => get(c).tags.getOrFail("Tag")) + val tags = cases.flatMap(c => get(c).tags.toSeq) for { user <- userSrv.get(EntityIdOrName(authContext.userId)).getOrFail("User") orga <- organisationSrv.get(authContext.organisation).getOrFail("Organisation") - tags <- tryTags richCase <- create(mergedCase, Some(user), orga, tags.toSet, Seq(), None, Seq()) + _ = cases.map(remove(_)) // TODO customFields: Seq[RichCustomField], // TODO ShareCase link // TODO Procedure link diff --git a/thehive/test/org/thp/thehive/controllers/v1/CaseCtrlTest.scala b/thehive/test/org/thp/thehive/controllers/v1/CaseCtrlTest.scala index 8be344bdd5..7deeef00af 100644 --- a/thehive/test/org/thp/thehive/controllers/v1/CaseCtrlTest.scala +++ b/thehive/test/org/thp/thehive/controllers/v1/CaseCtrlTest.scala @@ -198,14 +198,14 @@ class CaseCtrlTest extends PlaySpecification with TestAppBuilder { } "merge 3 cases correctly" in testApp { app => - val request21 = FakeRequest("GET", s"/api/v0/case/#21") + val request21 = FakeRequest("GET", s"/api/v1/case/#21") .withHeaders("user" -> "certuser@thehive.local") val case21 = app[CaseCtrl].get("21")(request21) status(case21) must equalTo(200).updateMessage(s => s"$s\n${contentAsString(case21)}") val output21 = contentAsJson(case21).as[OutputCase] - val request = FakeRequest("GET", "/api/v1/case/21/_merge/22") - .withHeaders("user" -> "admin@thehive.local") + val request = FakeRequest("GET", "/api/v1/case/_merge/21,22,23") + .withHeaders("user" -> "certuser@thehive.local") val result = app[CaseCtrl].merge("21,22,23")(request) status(result) must beEqualTo(201).updateMessage(s => s"$s\n${contentAsString(result)}") @@ -227,7 +227,7 @@ class CaseCtrlTest extends PlaySpecification with TestAppBuilder { pap = 3, status = "Open", None, - None, + Some("certuser@thehive.local"), Seq() ) ) @@ -243,7 +243,7 @@ class CaseCtrlTest extends PlaySpecification with TestAppBuilder { "merge two cases error, not same organisation" in testApp { app => val request = FakeRequest("GET", "/api/v1/case/_merge/21,24") - .withHeaders("user" -> "admin@thehive.local") + .withHeaders("user" -> "certuser@thehive.local") val result = app[CaseCtrl].merge("21,24")(request) status(result) must beEqualTo(400).updateMessage(s => s"$s\n${contentAsString(result)}") @@ -253,7 +253,7 @@ class CaseCtrlTest extends PlaySpecification with TestAppBuilder { "merge two cases error, not same profile" in testApp { app => val request = FakeRequest("GET", "/api/v1/case/_merge/21,25") - .withHeaders("user" -> "admin@thehive.local") + .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/resources/data/OrganisationShare.json b/thehive/test/resources/data/OrganisationShare.json index 1ca1a6b7c8..aa6e0e28b3 100644 --- a/thehive/test/resources/data/OrganisationShare.json +++ b/thehive/test/resources/data/OrganisationShare.json @@ -8,6 +8,7 @@ {"from": "cert", "to": "case21-merge-cert"}, {"from": "cert", "to": "case22-merge-cert"}, {"from": "cert", "to": "case23-merge-cert"}, + {"from": "cert", "to": "case24-merge-cert"}, {"from": "soc", "to": "case24-merge-soc"}, {"from": "cert", "to": "case25-merge-cert"} ] \ No newline at end of file diff --git a/thehive/test/resources/data/Share.json b/thehive/test/resources/data/Share.json index 48eb7750da..e96b4d609d 100644 --- a/thehive/test/resources/data/Share.json +++ b/thehive/test/resources/data/Share.json @@ -8,6 +8,7 @@ {"id": "case21-merge-cert", "owner": true}, {"id": "case22-merge-cert", "owner": true}, {"id": "case23-merge-cert", "owner": true}, + {"id": "case24-merge-cert", "owner": true}, {"id": "case24-merge-soc", "owner": true}, {"id": "case25-merge-cert", "owner": true} ] \ No newline at end of file diff --git a/thehive/test/resources/data/ShareCase.json b/thehive/test/resources/data/ShareCase.json index 92bfdc1812..dc62b7b437 100644 --- a/thehive/test/resources/data/ShareCase.json +++ b/thehive/test/resources/data/ShareCase.json @@ -8,6 +8,7 @@ {"from": "case21-merge-cert", "to": "caseMerge21"}, {"from": "case22-merge-cert", "to": "caseMerge22"}, {"from": "case23-merge-cert", "to": "caseMerge23"}, + {"from": "case24-merge-cert", "to": "caseMerge24"}, {"from": "case24-merge-soc", "to": "caseMerge24"}, {"from": "case25-merge-cert", "to": "caseMerge25"} ] \ No newline at end of file