diff --git a/docs/03-apis/api-admin/groups.md b/docs/03-apis/api-admin/groups.md
index 933cdc9591..85c228f0a2 100644
--- a/docs/03-apis/api-admin/groups.md
+++ b/docs/03-apis/api-admin/groups.md
@@ -48,7 +48,7 @@ License along with Knora. If not, see .
- POST: `/admin/groups`
- BODY:
- ```JSON
+```json
{
"name": "NewGroup",
"description": "NewGroupDescription",
@@ -56,10 +56,12 @@ License along with Knora. If not, see .
"status": true,
"selfjoin": false
}
- ```
- Additionally, each group can have an optional custom IRI (of @ref:[Knora IRI](../api-v2/knora-iris.md#iris-for-data) form)
- specified by the `id` in the request body as below:
- ```JSON
+```
+
+Additionally, each group can have an optional custom IRI (of @ref:[Knora IRI](../api-v2/knora-iris.md#iris-for-data) form)
+specified by the `id` in the request body as below:
+
+```json
{
"id": "http://rdfh.ch/groups/00FF/group-with-custom-Iri",
"name": "GroupWithCustomIRI",
@@ -68,7 +70,7 @@ License along with Knora. If not, see .
"status": true,
"selfjoin": false
}
- ```
+```
### Update group information
@@ -80,10 +82,10 @@ hasProjectRestrictedGroupAdminPermission (for this group)
- PUT: `/admin/groups/`
- BODY:
-```
+```json
{
"name": "UpdatedGroupName",
- "description": "UpdatedGroupDescription".
+ "description": "UpdatedGroupDescription",
"selfjoin": false
}
```
diff --git a/docs/03-apis/api-admin/lists.md b/docs/03-apis/api-admin/lists.md
index 486d50056d..bbc77902c9 100644
--- a/docs/03-apis/api-admin/lists.md
+++ b/docs/03-apis/api-admin/lists.md
@@ -57,22 +57,25 @@ License along with Knora. If not, see .
- Required permission: SystemAdmin / ProjectAdmin
- POST: `/admin/lists`
- BODY:
- ```JSON
+
+```json
{
"projectIri": "someprojectiri",
"labels": [{ "value": "Neue Liste", "language": "de"}],
"comments": []
}
- ```
- Additionally, each list can have an optional custom IRI (of [Knora IRI](../api-v2/knora-iris.md#iris-for-data) form) specified by the `id` in the request body as below:
- ```JSON
+```
+
+Additionally, each list can have an optional custom IRI (of [Knora IRI](../api-v2/knora-iris.md#iris-for-data) form) specified by the `id` in the request body as below:
+
+```json
{
"id": "http://rdfh.ch/lists/0001/a-list-with-IRI",
"projectIri": "http://rdfh.ch/projects/0001",
"labels": [{ "value": "Neue Liste mit IRI", "language": "de"}],
"comments": []
}
- ```
+```
### Create new child node
@@ -82,7 +85,8 @@ License along with Knora. If not, see .
are currently only appended.
- POST: `/admin/lists/`
- BODY:
- ```
+
+```json
{
"parentNodeIri": "nodeIri",
"projectIri": "someprojectiri",
@@ -90,7 +94,7 @@ License along with Knora. If not, see .
"labels": [{ "value": "New First Child List Node Value", "language": "en"}],
"comments": [{ "value": "New First Child List Node Comment", "language": "en"}]
}
- ```
+```
### Get list's information
@@ -104,14 +108,15 @@ License along with Knora. If not, see .
- Update list information
- PUT: `/admin/lists/infos/`
- BODY:
- ```
+
+```json
{
"listIri": "listIri",
"projectIri": "someprojectiri",
"labels": [{ "value": "Neue geönderte Liste", "language": "de"}, { "value": "Changed list", "language": "en"}],
"comments": [{ "value": "Neuer Kommentar", "language": "de"}, { "value": "New comment", "language": "en"}]
}
- ```
+```
## List Node Operations
diff --git a/docs/03-apis/api-admin/projects.md b/docs/03-apis/api-admin/projects.md
index 0b028ec6bd..142bf35326 100644
--- a/docs/03-apis/api-admin/projects.md
+++ b/docs/03-apis/api-admin/projects.md
@@ -63,13 +63,17 @@ License along with Knora. If not, see .
- Optional information: longname, description, keywords, logo
- Returns information about the newly created project
- Remark: There are two distinct use cases / payload combination:
+
(1) change ontology and data graph: ontologygraph, datagraph,
+
(2) basic project information: shortname, longname, description,
keywords, logo, institution, status, selfjoin
+
- TypeScript Docs: projectFormats - CreateProjectApiRequestV1
- POST: `/admin/projects/`
- BODY:
- ```JSON
+
+```json
{
"shortname": "newproject",
"longname": "project longname",
@@ -79,9 +83,11 @@ License along with Knora. If not, see .
"status": true,
"selfjoin": false
}
- ```
- Additionally, each project can have an optional custom IRI (of [Knora IRI](../api-v2/knora-iris.md#iris-for-data) form) specified by the `id` in the request body as below:
- ```JSON
+```
+
+Additionally, each project can have an optional custom IRI (of [Knora IRI](../api-v2/knora-iris.md#iris-for-data) form) specified by the `id` in the request body as below:
+
+```json
{
"id": "http://rdfh.ch/projects/3333",
"shortname": "newprojectWithIri",
@@ -93,7 +99,8 @@ License along with Knora. If not, see .
"status": true,
"selfjoin": false
}
- ```
+```
+
### Update project information:
- Required permission: SystemAdmin / ProjectAdmin
@@ -102,7 +109,8 @@ License along with Knora. If not, see .
- TypeScript Docs: projectFormats - ChangeProjectApiRequestV1
- PUT: `/admin/projects/iri/`
- BODY:
- ```JSON
+
+```json
{
"shortname": "newproject",
"longname": "project longname",
@@ -112,7 +120,7 @@ License along with Knora. If not, see .
"status": true,
"selfjoin": false
}
- ```
+```
### Delete project (update project status):
diff --git a/docs/03-apis/api-admin/users.md b/docs/03-apis/api-admin/users.md
index 9c8adc35b3..bd8ac92286 100644
--- a/docs/03-apis/api-admin/users.md
+++ b/docs/03-apis/api-admin/users.md
@@ -67,7 +67,7 @@ License along with Knora. If not, see .
- Required permission: none, self-registration is allowed
- Required information: email (unique), given name, family name,
- password, password, status, systemAdmin
+ password, status, systemAdmin
- Username restrictions:
- 4 - 50 characters long
- Only contains alphanumeric characters, underscore and dot.
@@ -77,7 +77,8 @@ License along with Knora. If not, see .
- TypeScript Docs: userFormats - `CreateUserApiRequestV1`
- POST: `/admin/users`
- BODY:
- ```JSON
+
+```json
{
"email": "donald.duck@example.org",
"givenName": "Donald",
@@ -88,11 +89,12 @@ License along with Knora. If not, see .
"lang": "en",
"systemAdmin": false
}
- ```
+```
- Additionally, each user can have an optional custom IRI (of [Knora IRI](../api-v2/knora-iris.md#iris-for-data) form)
- specified by the `id` in the request body as below:
- ```JSON
+Additionally, each user can have an optional custom IRI (of [Knora IRI](../api-v2/knora-iris.md#iris-for-data) form)
+specified by the `id` in the request body as below:
+
+```json
{
"id" : "http://rdfh.ch/users/donaldDuck",
"email": "donald.duck@example.org",
@@ -104,7 +106,7 @@ License along with Knora. If not, see .
"lang": "en",
"systemAdmin": false
}
- ```
+```
### Update basic user information**
@@ -114,7 +116,8 @@ License along with Knora. If not, see .
- TypeScript Docs: userFormats - ChangeUserApiRequestADM
- PUT: `/admin/users/iri//BasicUserInformation`
- BODY:
- ```
+
+```json
{
"username": "donald.big.duck",
"email": "donald.big.duck@example.org",
@@ -122,7 +125,7 @@ License along with Knora. If not, see .
"familyName": "Duckmann",
"lang": "de"
}
- ```
+```
### Update user's password
@@ -130,12 +133,13 @@ License along with Knora. If not, see .
- Changeable information: password
- PUT: `/admin/users/iri//Password`
- BODY:
- ```
+
+```json
{
"requesterPassword": "test",
"newPassword": "test1234"
}
- ```
+```
### Delete user
@@ -144,11 +148,12 @@ License along with Knora. If not, see .
`false`. To un-delete, set `status` to `true`.
- PUT: `/admin/users/iri//Status`
- BODY:
- ```
+
+```
{
"status": false // true or false
}
- ```
+```
### Delete user (-\update user)**
@@ -210,11 +215,12 @@ License along with Knora. If not, see .
`true` or `false`
- PUT: `/admin/users/iri//SystemAdmin`
- BODY:
- ```JSON
+
+```
{
"systemAdmin": false
}
- ```
+```
## Example Data
diff --git a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADM.scala b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADM.scala
index adee0fcaf9..920dcce87a 100644
--- a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADM.scala
+++ b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADM.scala
@@ -62,9 +62,8 @@ case class CreateProjectApiRequestADM(id: Option[IRI] = None,
implicit protected val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance
def toJsValue: JsValue = createProjectApiRequestADMFormat.write(this)
- if (description.isEmpty) {
- throw BadRequestException("Project description needs to be supplied.")
- }
+ if (description.isEmpty) throw BadRequestException("Project description needs to be supplied.")
+
stringFormatter.validateOptionalProjectIri(id, throw BadRequestException(s"Invalid project IRI"))
}
diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/admin/GroupsADME2ESpec.scala b/webapi/src/test/scala/org/knora/webapi/e2e/admin/GroupsADME2ESpec.scala
index f1b86a19ce..9de97148a7 100644
--- a/webapi/src/test/scala/org/knora/webapi/e2e/admin/GroupsADME2ESpec.scala
+++ b/webapi/src/test/scala/org/knora/webapi/e2e/admin/GroupsADME2ESpec.scala
@@ -88,25 +88,6 @@ class GroupsADME2ESpec extends E2ESpec(GroupsADME2ESpec.config) with GroupsADMJs
result.id should be ("http://rdfh.ch/groups/00FF/group-with-customIri")
}
- "return 'BadRequest' if the supplied 'id' is not a valid IRI" in {
- val params =
- s"""{ "id": "invalid-group-IRI",
- | "name": "NewGroupWithInvalidCustomIri",
- | "description": "A new group with an invalid custom Iri",
- | "project": "${SharedTestDataADM.IMAGES_PROJECT_IRI}",
- | "status": true,
- | "selfjoin": false
- |}""".stripMargin
-
-
- val request = Post(baseApiUrl + s"/admin/groups", HttpEntity(ContentTypes.`application/json`, params)) ~> addCredentials(BasicHttpCredentials(imagesUser01Email, testPass))
- val response: HttpResponse = singleAwaitingRequest(request)
- response.status should be (StatusCodes.BadRequest)
- val errorMessage : String = Await.result(Unmarshal(response.entity).to[String], 1.second)
- val invalidIri: Boolean = errorMessage.contains(s"Invalid group IRI")
- invalidIri should be(true)
- }
-
"return 'BadRequest' if the supplied IRI for the group is not unique" in {
val params =
s"""{ "id": "http://rdfh.ch/groups/00FF/group-with-customIri",
diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/admin/ListsADME2ESpec.scala b/webapi/src/test/scala/org/knora/webapi/e2e/admin/ListsADME2ESpec.scala
index cf640cc095..cf8d85635e 100644
--- a/webapi/src/test/scala/org/knora/webapi/e2e/admin/ListsADME2ESpec.scala
+++ b/webapi/src/test/scala/org/knora/webapi/e2e/admin/ListsADME2ESpec.scala
@@ -171,27 +171,6 @@ class ListsADME2ESpec extends E2ESpec(ListsADME2ESpec.config) with SessionJsonPr
labels.head should be (StringLiteralV2(value = "New list with a custom IRI", language = Some("en")))
}
- "return a BadRequestException during list creation when an invalid list IRI is given" in {
-
- // invalid list IRI
- val params =
- s"""
- |{
- | "id": "invalid-list-IRI",
- | "projectIri": "${SharedTestDataADM.ANYTHING_PROJECT_IRI}",
- | "labels": [{ "value": "New List", "language": "en"}],
- | "comments": []
- |}
- """.stripMargin
-
- val request = Post(baseApiUrl + s"/admin/lists", HttpEntity(ContentTypes.`application/json`, params)) ~> addCredentials(anythingAdminUserCreds.basicHttpCredentials)
- val response: HttpResponse = singleAwaitingRequest(request)
- response.status should be(StatusCodes.BadRequest)
- val errorMessage : String = Await.result(Unmarshal(response.entity).to[String], 1.second)
- val invalidIri: Boolean = errorMessage.contains("Invalid list IRI")
- invalidIri should be(true)
- }
-
"return a DuplicateValueException during list creation when the supplied list IRI is not unique" in {
// duplicate list IRI
diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/admin/ProjectsADME2ESpec.scala b/webapi/src/test/scala/org/knora/webapi/e2e/admin/ProjectsADME2ESpec.scala
index d00f9fae7e..677c697cea 100644
--- a/webapi/src/test/scala/org/knora/webapi/e2e/admin/ProjectsADME2ESpec.scala
+++ b/webapi/src/test/scala/org/knora/webapi/e2e/admin/ProjectsADME2ESpec.scala
@@ -140,29 +140,6 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
}
- "return 'BadRequest' if the supplied project IRI is not a valid IRI" in {
- val params =
- s"""{
- | "id": "invalid-project-IRI",
- | "shortname": "newprojectWithInvalidIri",
- | "shortcode": "2222",
- | "longname": "new project with a custom invalid IRI",
- | "description": [{"value": "a project created with an invalid custom IRI", "language": "en"}],
- | "keywords": ["projectInvalidIRI"],
- | "logo": "/fu/bar/baz.jpg",
- | "status": true,
- | "selfjoin": false
- |}""".stripMargin
-
-
- val request = Post(baseApiUrl + s"/admin/projects", HttpEntity(ContentTypes.`application/json`, params)) ~> addCredentials(BasicHttpCredentials(rootEmail, testPass))
- val response: HttpResponse = singleAwaitingRequest(request)
- response.status should be (StatusCodes.BadRequest)
- val errorMessage : String = Await.result(Unmarshal(response.entity).to[String], 1.second)
- val invalidIri: Boolean = errorMessage.contains("Invalid project IRI")
- invalidIri should be(true)
- }
-
"return 'BadRequest' if the supplied project IRI is not unique" in {
val params =
s"""{
@@ -210,8 +187,6 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
result.selfjoin should be (false)
newProjectIri.set(result.id)
- // log.debug("newProjectIri: {}", newProjectIri.get)
-
}
"return a 'BadRequest' if the supplied project shortname during creation is not unique" in {
@@ -219,7 +194,7 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
s"""
|{
| "shortname": "newproject",
- | "shortcode"; "1112",
+ | "shortcode": "1112",
| "longname": "project longname",
| "description": [{"value": "project description", "language": "en"}],
| "keywords": ["keywords"],
@@ -232,7 +207,7 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
val request = Post(baseApiUrl + s"/admin/projects", HttpEntity(ContentTypes.`application/json`, params)) ~> addCredentials(BasicHttpCredentials(rootEmail, testPass))
val response: HttpResponse = singleAwaitingRequest(request)
- // log.debug(s"response: {}", response)
+
response.status should be (StatusCodes.BadRequest)
}
@@ -240,7 +215,7 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
val params =
s"""
|{
- | "shortcode"; "1112",
+ | "shortcode": "1112",
| "longname": "project longname",
| "description": [{"value": "project description", "language": "en"}],
| "keywords": ["keywords"],
@@ -250,10 +225,8 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
|}
""".stripMargin
-
val request = Post(baseApiUrl + s"/admin/projects", HttpEntity(ContentTypes.`application/json`, params)) ~> addCredentials(BasicHttpCredentials(rootEmail, testPass))
val response: HttpResponse = singleAwaitingRequest(request)
- // log.debug(s"response: {}", response)
response.status should be (StatusCodes.BadRequest)
}
@@ -261,7 +234,7 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
val params =
s"""
|{
- | "shortname"; "newproject2",
+ | "shortname": "newproject2",
| "longname": "project longname",
| "description": [{"value": "project description", "language": "en"}],
| "keywords": ["keywords"],
@@ -271,10 +244,8 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
|}
""".stripMargin
-
val request = Post(baseApiUrl + s"/admin/projects", HttpEntity(ContentTypes.`application/json`, params)) ~> addCredentials(BasicHttpCredentials(rootEmail, testPass))
val response: HttpResponse = singleAwaitingRequest(request)
- // log.debug(s"response: {}", response)
response.status should be (StatusCodes.BadRequest)
}
@@ -282,8 +253,8 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
val params =
s"""
|{
- | "shortcode"; "1114",
- | "shortname"; "newproject5",
+ | "shortcode": "1114",
+ | "shortname": "newproject5",
| "longname": "project longname",
| "description": [],
| "keywords": ["keywords"],
@@ -293,10 +264,8 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
|}
""".stripMargin
-
val request = Post(baseApiUrl + s"/admin/projects", HttpEntity(ContentTypes.`application/json`, params)) ~> addCredentials(BasicHttpCredentials(rootEmail, testPass))
val response: HttpResponse = singleAwaitingRequest(request)
- // log.debug(s"response: {}", response)
response.status should be (StatusCodes.BadRequest)
}
@@ -305,7 +274,6 @@ class ProjectsADME2ESpec extends E2ESpec(ProjectsADME2ESpec.config) with Session
val projectIriEncoded = URLEncoder.encode(newProjectIri.get, "utf-8")
val request = Put(baseApiUrl + s"/admin/projects/iri/" + projectIriEncoded, HttpEntity(ContentTypes.`application/json`, SharedTestDataADM.updateProjectRequest)) ~> addCredentials(BasicHttpCredentials(rootEmail, testPass))
val response: HttpResponse = singleAwaitingRequest(request)
- // log.debug(s"response: {}", response)
response.status should be (StatusCodes.OK)
val result: ProjectADM = AkkaHttpUtils.httpResponseToJson(response).fields("project").convertTo[ProjectADM]
diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/admin/UsersADME2ESpec.scala b/webapi/src/test/scala/org/knora/webapi/e2e/admin/UsersADME2ESpec.scala
index 418b2e1136..595acf95c2 100644
--- a/webapi/src/test/scala/org/knora/webapi/e2e/admin/UsersADME2ESpec.scala
+++ b/webapi/src/test/scala/org/knora/webapi/e2e/admin/UsersADME2ESpec.scala
@@ -232,29 +232,6 @@ class UsersADME2ESpec extends E2ESpec(UsersADME2ESpec.config) with ProjectsADMJs
result.id should be ("http://rdfh.ch/users/userWithCustomIri")
}
- "return 'BadRequest' if the supplied 'id' is not a valid IRI" in {
- val params =
- s"""{
- | "id": "invalid-user-IRI",
- | "username": "userWithInvalidCustomIri",
- | "email": "userWithInvalidCustomIri@example.org",
- | "givenName": "a user",
- | "familyName": "with an invalid custom Iri",
- | "password": "test",
- | "status": true,
- | "lang": "en",
- | "systemAdmin": false
- |}""".stripMargin
-
-
- val request = Post(baseApiUrl + s"/admin/users", HttpEntity(ContentTypes.`application/json`, params))
- val response: HttpResponse = singleAwaitingRequest(request)
- response.status should be (StatusCodes.BadRequest)
- val errorMessage : String = Await.result(Unmarshal(response.entity).to[String], 1.second)
- val invalidIri: Boolean = errorMessage.contains(s"Invalid user IRI")
- invalidIri should be(true)
- }
-
"return 'BadRequest' if the supplied IRI for the user is not unique" in {
val params =
s"""{
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/messages/BUILD.bazel
index d3aa12e8ad..e75d5c6ef4 100644
--- a/webapi/src/test/scala/org/knora/webapi/messages/BUILD.bazel
+++ b/webapi/src/test/scala/org/knora/webapi/messages/BUILD.bazel
@@ -1,162 +1,8 @@
package(default_visibility = ["//visibility:public"])
-load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
-load("//third_party:dependencies.bzl", "BASE_TEST_DEPENDENCIES", "BASE_TEST_DEPENDENCIES_WITH_JSON")
-
filegroup(
name = "SessionMessagesV1",
srcs = [
"v1/responder/sessionmessages/SessionMessagesV1.scala",
],
)
-
-scala_test(
- name = "ListsMessagesADMSpec",
- size = "small", # 60s
- srcs = [
- "admin/responder/listsmessages/ListsMessagesADMSpec.scala",
- ],
- data = [
- "//knora-ontologies",
- "//test_data",
- ],
- jvm_flags = ["-Dconfig.resource=fuseki.conf"],
- # unused_dependency_checker_mode = "warn",
- deps = [
- "//webapi:main_library",
- "//webapi:test_library",
- ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
-)
-
-scala_test(
- name = "PermissionsMessagesADMSpec",
- size = "small", # 60s
- srcs = [
- "admin/responder/permissionsmessages/PermissionsMessagesADMSpec.scala",
- ],
- data = [
- "//knora-ontologies",
- "//test_data",
- ],
- jvm_flags = ["-Dconfig.resource=fuseki.conf"],
- # unused_dependency_checker_mode = "warn",
- deps = [
- "//webapi:main_library",
- "//webapi:test_library",
- "@maven//:org_scalatest_scalatest_2_12",
- "@maven//:org_scalactic_scalactic_2_12",
- ],
-)
-
-scala_test(
- name = "ProjectsMessagesADMSpec",
- size = "small", # 60s
- srcs = [
- "admin/responder/projectsmessages/ProjectsMessagesADMSpec.scala",
- ],
- data = [
- "//knora-ontologies",
- "//test_data",
- ],
- jvm_flags = ["-Dconfig.resource=fuseki.conf"],
- # unused_dependency_checker_mode = "warn",
- deps = [
- "//webapi:main_library",
- "//webapi:test_library",
- ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
-)
-
-scala_test(
- name = "UsersMessagesADMSpec",
- size = "small", # 60s
- srcs = [
- "admin/responder/usersmessages/UsersMessagesADMSpec.scala",
- ],
- data = [
- "//knora-ontologies",
- "//test_data",
- ],
- jvm_flags = ["-Dconfig.resource=fuseki.conf"],
- # unused_dependency_checker_mode = "warn",
- deps = [
- "//webapi:main_library",
- "//webapi:test_library",
- "@maven//:org_springframework_security_spring_security_core",
- ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
-)
-
-scala_test(
- name = "TriplestoreMessagesSpec",
- size = "small", # 60s
- srcs = [
- "store/triplestoremessages/TriplestoreMessagesSpec.scala",
- ],
- data = [
- "//knora-ontologies",
- "//test_data",
- ],
- jvm_flags = ["-Dconfig.resource=fuseki.conf"],
- # unused_dependency_checker_mode = "warn",
- deps = [
- "//webapi:main_library",
- ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
-)
-
-scala_test(
- name = "PermissionMessagesV1Spec",
- size = "small", # 60s
- srcs = [
- "v1/responder/permissionmessages/PermissionMessagesV1Spec.scala",
- ],
- data = [
- "//knora-ontologies",
- "//test_data",
- ],
- jvm_flags = ["-Dconfig.resource=fuseki.conf"],
- # unused_dependency_checker_mode = "warn",
- deps = [
- "//webapi:main_library",
- "//webapi:test_library",
- "@maven//:org_scalatest_scalatest_2_12",
- "@maven//:org_scalactic_scalactic_2_12",
- ],
-)
-
-scala_test(
- name = "UserMessagesV1Spec",
- size = "small", # 60s
- srcs = [
- "v1/responder/usermessages/UserMessagesV1Spec.scala",
- ],
- data = [
- "//knora-ontologies",
- "//test_data",
- ],
- jvm_flags = ["-Dconfig.resource=fuseki.conf"],
- # unused_dependency_checker_mode = "warn",
- deps = [
- "//webapi:main_library",
- "//webapi:test_library",
- "@maven//:org_scalatest_scalatest_2_12",
- "@maven//:org_scalactic_scalactic_2_12",
- "@maven//:org_springframework_security_spring_security_core",
- ],
-)
-
-scala_test(
- name = "InputOntologyV2Spec",
- size = "small", # 60s
- srcs = [
- "v2/responder/ontologymessages/InputOntologyV2Spec.scala",
- ],
- data = [
- "//knora-ontologies",
- "//test_data",
- ],
- jvm_flags = ["-Dconfig.resource=fuseki.conf"],
- # unused_dependency_checker_mode = "warn",
- deps = [
- "//webapi:main_library",
- "//webapi:test_library",
- ] + BASE_TEST_DEPENDENCIES,
-)
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/groupsmessages/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/groupsmessages/BUILD.bazel
new file mode 100644
index 0000000000..586df5b372
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/groupsmessages/BUILD.bazel
@@ -0,0 +1,22 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
+load("//third_party:dependencies.bzl", "BASE_TEST_DEPENDENCIES_WITH_JSON")
+
+scala_test(
+ name = "GroupsMessagesADMSpec",
+ size = "small", # 60s
+ srcs = [
+ "GroupsMessagesADMSpec.scala",
+ ],
+ data = [
+ "//knora-ontologies",
+ "//test_data",
+ ],
+ jvm_flags = ["-Dconfig.resource=fuseki.conf"],
+ # unused_dependency_checker_mode = "warn",
+ deps = [
+ "//webapi:main_library",
+ "//webapi:test_library",
+ ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
+)
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/groupsmessages/GroupsMessagesADMSpec.scala b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/groupsmessages/GroupsMessagesADMSpec.scala
new file mode 100644
index 0000000000..c63261b5e7
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/groupsmessages/GroupsMessagesADMSpec.scala
@@ -0,0 +1,55 @@
+/*
+ * Copyright © 2015-2019 the contributors (see Contributors.md).
+ *
+ * This file is part of Knora.
+ *
+ * Knora is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Knora is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with Knora. If not, see .
+ */
+
+package org.knora.webapi.messages.admin.responder.groupsmessages
+
+import com.typesafe.config.ConfigFactory
+import org.knora.webapi.{SharedTestDataADM, _}
+
+object GroupsMessagesADMSpec {
+ val config = ConfigFactory.parseString(
+ """
+ akka.loglevel = "DEBUG"
+ akka.stdout-loglevel = "DEBUG"
+ """.stripMargin)
+}
+
+/**
+ * This spec is used to test 'GroupAdminMessages'.
+ */
+class GroupsMessagesADMSpec extends CoreSpec(GroupsMessagesADMSpec.config) {
+
+ "The CreateGroupsApiRequestADM case class" should {
+
+ "return 'BadRequest' if the supplied 'id' is not a valid IRI" in {
+
+ val caught = intercept[BadRequestException](
+ CreateGroupApiRequestADM(
+ id = Some("invalid-group-IRI"),
+ name = "NewGroupWithInvalidCustomIri",
+ description = Some("A new group with an invalid custom Iri"),
+ project = SharedTestDataADM.IMAGES_PROJECT_IRI,
+ status = true,
+ selfjoin = false
+ )
+ )
+ assert(caught.getMessage === "Invalid group IRI")
+ }
+ }
+}
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/listsmessages/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/listsmessages/BUILD.bazel
new file mode 100644
index 0000000000..324f604c46
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/listsmessages/BUILD.bazel
@@ -0,0 +1,22 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
+load("//third_party:dependencies.bzl", "BASE_TEST_DEPENDENCIES_WITH_JSON")
+
+scala_test(
+ name = "ListsMessagesADMSpec",
+ size = "small", # 60s
+ srcs = [
+ "ListsMessagesADMSpec.scala",
+ ],
+ data = [
+ "//knora-ontologies",
+ "//test_data",
+ ],
+ jvm_flags = ["-Dconfig.resource=fuseki.conf"],
+ # unused_dependency_checker_mode = "warn",
+ deps = [
+ "//webapi:main_library",
+ "//webapi:test_library",
+ ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
+)
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/listsmessages/ListsMessagesADMSpec.scala b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/listsmessages/ListsMessagesADMSpec.scala
index f78602f135..65000e3832 100644
--- a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/listsmessages/ListsMessagesADMSpec.scala
+++ b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/listsmessages/ListsMessagesADMSpec.scala
@@ -160,6 +160,24 @@ class ListsMessagesADMSpec extends AnyWordSpecLike with Matchers with ListADMJso
thrown.getMessage should equal (LABEL_MISSING_ERROR)
}
+ "throw a 'BadRequestException' for `CreateListApiRequestADM` when an invalid list IRI is given" in {
+
+ // invalid list IRI
+ val payload =
+ s"""
+ |{
+ | "id": "invalid-list-IRI",
+ | "projectIri": "${SharedTestDataADM.IMAGES_PROJECT_IRI}",
+ | "labels": [{ "value": "New List", "language": "en"}],
+ | "comments": []
+ |}
+ """.stripMargin
+
+ val thrown = the[BadRequestException] thrownBy payload.parseJson.convertTo[CreateListApiRequestADM]
+
+ thrown.getMessage should equal ("Invalid list IRI")
+ }
+
"throw 'BadRequestException' for `ChangeListInfoApiRequestADM` when list IRI is empty" in {
val payload =
@@ -337,4 +355,4 @@ class ListsMessagesADMSpec extends AnyWordSpecLike with Matchers with ListADMJso
}
}
-}
\ No newline at end of file
+}
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/permissionsmessages/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/permissionsmessages/BUILD.bazel
new file mode 100644
index 0000000000..9e67c9aa4d
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/permissionsmessages/BUILD.bazel
@@ -0,0 +1,23 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
+
+scala_test(
+ name = "PermissionsMessagesADMSpec",
+ size = "small", # 60s
+ srcs = [
+ "PermissionsMessagesADMSpec.scala",
+ ],
+ data = [
+ "//knora-ontologies",
+ "//test_data",
+ ],
+ jvm_flags = ["-Dconfig.resource=fuseki.conf"],
+ # unused_dependency_checker_mode = "warn",
+ deps = [
+ "//webapi:main_library",
+ "//webapi:test_library",
+ "@maven//:org_scalatest_scalatest_2_12",
+ "@maven//:org_scalactic_scalactic_2_12",
+ ],
+)
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/projectsmessages/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/projectsmessages/BUILD.bazel
new file mode 100644
index 0000000000..e7ba9a3718
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/projectsmessages/BUILD.bazel
@@ -0,0 +1,22 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
+load("//third_party:dependencies.bzl", "BASE_TEST_DEPENDENCIES_WITH_JSON")
+
+scala_test(
+ name = "ProjectsMessagesADMSpec",
+ size = "small", # 60s
+ srcs = [
+ "ProjectsMessagesADMSpec.scala",
+ ],
+ data = [
+ "//knora-ontologies",
+ "//test_data",
+ ],
+ jvm_flags = ["-Dconfig.resource=fuseki.conf"],
+ # unused_dependency_checker_mode = "warn",
+ deps = [
+ "//webapi:main_library",
+ "//webapi:test_library",
+ ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
+)
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADMSpec.scala b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADMSpec.scala
index 9a0077dc68..a47973f1f8 100644
--- a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADMSpec.scala
+++ b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADMSpec.scala
@@ -30,7 +30,7 @@ object ProjectsMessagesADMSpec {
}
/**
- * This spec is used to test subclasses of the [[org.knora.webapi.messages.v1.responder.usermessages.UsersResponderRequestV1]] class.
+ * This spec is used to test subclasses of the [[ProjectsMessagesADM]] class.
*/
class ProjectsMessagesADMSpec extends CoreSpec(ProjectsMessagesADMSpec.config) {
@@ -52,7 +52,7 @@ class ProjectsMessagesADMSpec extends CoreSpec(ProjectsMessagesADMSpec.config) {
"The CreateProjectApiRequestADM case class" should {
"return a 'BadRequest' when project description is not supplied" in {
- assertThrows[BadRequestException](
+ val caught = intercept[BadRequestException](
CreateProjectApiRequestADM(
shortname = "newproject5",
shortcode = "1114",
@@ -64,6 +64,24 @@ class ProjectsMessagesADMSpec extends CoreSpec(ProjectsMessagesADMSpec.config) {
selfjoin = false
)
)
+ assert(caught.getMessage === "Project description needs to be supplied.")
+ }
+
+ "return 'BadRequest' if the supplied project IRI is not a valid IRI" in {
+ val caught = intercept[BadRequestException](
+ CreateProjectApiRequestADM(
+ id = Some("invalid-project-IRI"),
+ shortname = "newprojectWithInvalidIri",
+ shortcode = "2222",
+ longname = Some("new project with a custom invalid IRI"),
+ description = Seq(StringLiteralV2("a project created with an invalid custom IRI", Some("en"))),
+ keywords = Seq("projectInvalidIRI"),
+ logo = Some("/fu/bar/baz.jpg"),
+ status = true,
+ selfjoin = false
+ )
+ )
+ assert(caught.getMessage === "Invalid project IRI")
}
}
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/usersmessages/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/usersmessages/BUILD.bazel
new file mode 100644
index 0000000000..9cb8b994f2
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/usersmessages/BUILD.bazel
@@ -0,0 +1,23 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
+load("//third_party:dependencies.bzl", "BASE_TEST_DEPENDENCIES_WITH_JSON")
+
+scala_test(
+ name = "UsersMessagesADMSpec",
+ size = "small", # 60s
+ srcs = [
+ "UsersMessagesADMSpec.scala",
+ ],
+ data = [
+ "//knora-ontologies",
+ "//test_data",
+ ],
+ jvm_flags = ["-Dconfig.resource=fuseki.conf"],
+ # unused_dependency_checker_mode = "warn",
+ deps = [
+ "//webapi:main_library",
+ "//webapi:test_library",
+ "@maven//:org_springframework_security_spring_security_core",
+ ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
+)
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADMSpec.scala b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADMSpec.scala
index d61676c3a0..9a7e4ed12a 100644
--- a/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADMSpec.scala
+++ b/webapi/src/test/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADMSpec.scala
@@ -193,6 +193,25 @@ class UsersMessagesADMSpec extends CoreSpec(UsersMessagesADMSpec.config) {
)
)
}
+
+ "return 'BadRequest' if the supplied 'id' is not a valid IRI" in {
+
+ val caught = intercept[BadRequestException](
+ CreateUserApiRequestADM(
+ id = Some("invalid-user-IRI"),
+ username = "userWithInvalidCustomIri",
+ email = "userWithInvalidCustomIri@example.org",
+ givenName = "a user",
+ familyName = "with an invalid custom Iri",
+ password = "test",
+ status = true,
+ lang = "en",
+ systemAdmin = false
+ )
+ )
+ assert(caught.getMessage === "Invalid user IRI")
+ }
+
}
"The UserIdentifierADM case class" should {
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/store/triplestoremessages/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/messages/store/triplestoremessages/BUILD.bazel
new file mode 100644
index 0000000000..fc150bcc92
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/messages/store/triplestoremessages/BUILD.bazel
@@ -0,0 +1,21 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
+load("//third_party:dependencies.bzl", "BASE_TEST_DEPENDENCIES_WITH_JSON")
+
+scala_test(
+ name = "TriplestoreMessagesSpec",
+ size = "small", # 60s
+ srcs = [
+ "TriplestoreMessagesSpec.scala",
+ ],
+ data = [
+ "//knora-ontologies",
+ "//test_data",
+ ],
+ jvm_flags = ["-Dconfig.resource=fuseki.conf"],
+ # unused_dependency_checker_mode = "warn",
+ deps = [
+ "//webapi:main_library",
+ ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
+)
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/v1/responder/permissionmessages/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/messages/v1/responder/permissionmessages/BUILD.bazel
new file mode 100644
index 0000000000..018d6bf80d
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/messages/v1/responder/permissionmessages/BUILD.bazel
@@ -0,0 +1,23 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
+
+scala_test(
+ name = "PermissionMessagesV1Spec",
+ size = "small", # 60s
+ srcs = [
+ "PermissionMessagesV1Spec.scala",
+ ],
+ data = [
+ "//knora-ontologies",
+ "//test_data",
+ ],
+ jvm_flags = ["-Dconfig.resource=fuseki.conf"],
+ # unused_dependency_checker_mode = "warn",
+ deps = [
+ "//webapi:main_library",
+ "//webapi:test_library",
+ "@maven//:org_scalatest_scalatest_2_12",
+ "@maven//:org_scalactic_scalactic_2_12",
+ ],
+)
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/v1/responder/usermessages/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/messages/v1/responder/usermessages/BUILD.bazel
new file mode 100644
index 0000000000..2b340929b8
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/messages/v1/responder/usermessages/BUILD.bazel
@@ -0,0 +1,24 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
+
+scala_test(
+ name = "UserMessagesV1Spec",
+ size = "small", # 60s
+ srcs = [
+ "UserMessagesV1Spec.scala",
+ ],
+ data = [
+ "//knora-ontologies",
+ "//test_data",
+ ],
+ jvm_flags = ["-Dconfig.resource=fuseki.conf"],
+ # unused_dependency_checker_mode = "warn",
+ deps = [
+ "//webapi:main_library",
+ "//webapi:test_library",
+ "@maven//:org_scalatest_scalatest_2_12",
+ "@maven//:org_scalactic_scalactic_2_12",
+ "@maven//:org_springframework_security_spring_security_core",
+ ],
+)
diff --git a/webapi/src/test/scala/org/knora/webapi/messages/v2/responder/ontologymessages/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/messages/v2/responder/ontologymessages/BUILD.bazel
new file mode 100644
index 0000000000..bd73b8085d
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/messages/v2/responder/ontologymessages/BUILD.bazel
@@ -0,0 +1,22 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
+load("//third_party:dependencies.bzl", "BASE_TEST_DEPENDENCIES")
+
+scala_test(
+ name = "InputOntologyV2Spec",
+ size = "small", # 60s
+ srcs = [
+ "InputOntologyV2Spec.scala",
+ ],
+ data = [
+ "//knora-ontologies",
+ "//test_data",
+ ],
+ jvm_flags = ["-Dconfig.resource=fuseki.conf"],
+ # unused_dependency_checker_mode = "warn",
+ deps = [
+ "//webapi:main_library",
+ "//webapi:test_library",
+ ] + BASE_TEST_DEPENDENCIES,
+)
diff --git a/webapi/src/test/scala/org/knora/webapi/other/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/other/v1/BUILD.bazel
similarity index 57%
rename from webapi/src/test/scala/org/knora/webapi/other/BUILD.bazel
rename to webapi/src/test/scala/org/knora/webapi/other/v1/BUILD.bazel
index c8fbd26fe2..78a8e78b52 100644
--- a/webapi/src/test/scala/org/knora/webapi/other/BUILD.bazel
+++ b/webapi/src/test/scala/org/knora/webapi/other/v1/BUILD.bazel
@@ -1,13 +1,13 @@
package(default_visibility = ["//visibility:public"])
load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
-load("//third_party:dependencies.bzl", "BASE_TEST_DEPENDENCIES", "BASE_TEST_DEPENDENCIES_WITH_JSON", "BASE_TEST_DEPENDENCIES_WITH_JSON_LD")
+load("//third_party:dependencies.bzl", "BASE_TEST_DEPENDENCIES_WITH_JSON")
scala_test(
name = "DrawingsGodsV1E2ESpec",
size = "small", # 60s
srcs = [
- "v1/DrawingsGodsV1E2ESpec.scala",
+ "DrawingsGodsV1E2ESpec.scala",
],
data = [
"//knora-ontologies",
@@ -25,25 +25,7 @@ scala_test(
name = "DrawingsGodsV1Spec",
size = "small", # 60s
srcs = [
- "v1/DrawingsGodsV1Spec.scala",
- ],
- data = [
- "//knora-ontologies",
- "//test_data",
- ],
- jvm_flags = ["-Dconfig.resource=fuseki.conf"],
- # unused_dependency_checker_mode = "warn",
- deps = [
- "//webapi:main_library",
- "//webapi:test_library",
- ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
-)
-
-scala_test(
- name = "LumieresLausanneV2E2ESpec",
- size = "small", # 60s
- srcs = [
- "v2/LumieresLausanneV2E2ESpec.scala",
+ "DrawingsGodsV1Spec.scala",
],
data = [
"//knora-ontologies",
diff --git a/webapi/src/test/scala/org/knora/webapi/other/v2/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/other/v2/BUILD.bazel
new file mode 100644
index 0000000000..f635e64bf7
--- /dev/null
+++ b/webapi/src/test/scala/org/knora/webapi/other/v2/BUILD.bazel
@@ -0,0 +1,22 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@io_bazel_rules_scala//scala:scala.bzl", "scala_test")
+load("//third_party:dependencies.bzl", "BASE_TEST_DEPENDENCIES_WITH_JSON")
+
+scala_test(
+ name = "LumieresLausanneV2E2ESpec",
+ size = "small", # 60s
+ srcs = [
+ "LumieresLausanneV2E2ESpec.scala",
+ ],
+ data = [
+ "//knora-ontologies",
+ "//test_data",
+ ],
+ jvm_flags = ["-Dconfig.resource=fuseki.conf"],
+ # unused_dependency_checker_mode = "warn",
+ deps = [
+ "//webapi:main_library",
+ "//webapi:test_library",
+ ] + BASE_TEST_DEPENDENCIES_WITH_JSON,
+)