Skip to content

Commit 2bed332

Browse files
committed
tolerate missing settings for repositories
closes #409
1 parent 9dbece3 commit 2bed332

File tree

2 files changed

+62
-1
lines changed

2 files changed

+62
-1
lines changed

app/models/repository/Repositories.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ object Repositories {
1313
Json.obj(
1414
"name" -> name,
1515
"type" -> (info \ "type").as[JsValue],
16-
"settings" -> (info \ "settings").as[JsValue]
16+
"settings" -> (info \ "settings").asOpt[JsObject].getOrElse[JsObject](Json.obj())
1717
)
1818
}.toSeq
1919
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package models.repository
2+
3+
import org.specs2.Specification
4+
import play.api.libs.json.Json
5+
6+
object RepositoriesSpec extends Specification {
7+
8+
def is =
9+
s2"""
10+
Repositories should
11+
parse all repository info $repositories
12+
tolerate missing settings for repository $missingSettings
13+
14+
"""
15+
16+
def repositories = {
17+
val data = Json.parse(
18+
"""
19+
|{
20+
| "some_repo_with_settings": {
21+
| "type": "s3",
22+
| "settings": {
23+
| "bucket": "bucket_name",
24+
| "region": "us"
25+
| }
26+
| }
27+
|}
28+
""".stripMargin
29+
)
30+
Repositories(data) mustEqual Json.arr(
31+
Json.obj(
32+
"name" -> "some_repo_with_settings",
33+
"type" -> "s3",
34+
"settings" -> Json.obj(
35+
"bucket" -> "bucket_name",
36+
"region" -> "us"
37+
)
38+
)
39+
)
40+
}
41+
42+
def missingSettings = {
43+
val data = Json.parse(
44+
"""
45+
|{
46+
| "some_repo_with_settings": {
47+
| "type": "s3"
48+
| }
49+
|}
50+
""".stripMargin
51+
)
52+
Repositories(data) mustEqual Json.arr(
53+
Json.obj(
54+
"name" -> "some_repo_with_settings",
55+
"type" -> "s3",
56+
"settings" -> Json.obj()
57+
)
58+
)
59+
}
60+
61+
}

0 commit comments

Comments
 (0)