Skip to content

Commit

Permalink
#1264 Basic merge & basics tests ok
Browse files Browse the repository at this point in the history
  • Loading branch information
rriclet committed Feb 25, 2021
1 parent c6f98c5 commit 56d2059
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 9 deletions.
2 changes: 1 addition & 1 deletion thehive/app/org/thp/thehive/controllers/v1/CaseCtrl.scala
Original file line number Diff line number Diff line change
Expand Up @@ -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]] =
Expand Down
4 changes: 2 additions & 2 deletions thehive/app/org/thp/thehive/services/CaseSrv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 6 additions & 6 deletions thehive/test/org/thp/thehive/controllers/v1/CaseCtrlTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -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" -> "[email protected]")
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)}")
Expand All @@ -227,7 +227,7 @@ class CaseCtrlTest extends PlaySpecification with TestAppBuilder {
pap = 3,
status = "Open",
None,
None,
Some("[email protected]"),
Seq()
)
)
Expand All @@ -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)}")
Expand All @@ -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)}")
Expand Down
1 change: 1 addition & 0 deletions thehive/test/resources/data/OrganisationShare.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"}
]
1 change: 1 addition & 0 deletions thehive/test/resources/data/Share.json
Original file line number Diff line number Diff line change
Expand Up @@ -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}
]
1 change: 1 addition & 0 deletions thehive/test/resources/data/ShareCase.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"}
]

0 comments on commit 56d2059

Please sign in to comment.