diff --git a/WORKSPACE b/WORKSPACE index 986c3ebd16..2bc677cd9e 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -3,7 +3,10 @@ workspace(name = "io_dasch_dsp_api") # load http_archive method load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") -# bazel-skylib 1.0.2 released 2019.10.09 (https://github.com/bazelbuild/bazel-skylib/releases/tag/1.0.2) +##################################### +# Skylib # +##################################### +# 1.0.2 released 2019.10.09 (https://github.com/bazelbuild/bazel-skylib/releases/tag/1.0.2) skylib_version = "1.0.2" http_archive( @@ -13,7 +16,82 @@ http_archive( url = "https://github.com/bazelbuild/bazel-skylib/releases/download/{}/bazel-skylib-{}.tar.gz".format(skylib_version, skylib_version), ) -# download rules_scala repository +##################################### +# Docker # +##################################### + +rules_docker_version = "0.17.0" + +rules_docker_version_sha256 = "59d5b42ac315e7eadffa944e86e90c2990110a1c8075f1cd145f487e999d22b3" + +http_archive( + name = "io_bazel_rules_docker", + sha256 = rules_docker_version_sha256, + strip_prefix = "rules_docker-%s" % rules_docker_version, + url = "https://github.com/bazelbuild/rules_docker/releases/download/v%s/rules_docker-v%s.tar.gz" % (rules_docker_version, rules_docker_version), +) + +load( + "@io_bazel_rules_docker//repositories:repositories.bzl", + container_repositories = "repositories", +) + +container_repositories() + +load("@io_bazel_rules_docker//repositories:deps.bzl", container_deps = "deps") + +container_deps() + +# load container_pull method +load( + "@io_bazel_rules_docker//container:container.bzl", + "container_pull", +) + +# get distroless java +container_pull( + name = "java_base", + # 'tag' is also supported, but digest is encouraged for reproducibility. + digest = "sha256:deadbeef", + registry = "gcr.io", + repository = "distroless/java", +) + +# get openjdk +container_pull( + name = "openjdk11", + digest = "sha256:0e51b455654bd162c485a6a6b5b120cc82db453d9265cc90f0c4fb5d14e2f62e", + registry = "docker.io", + repository = "adoptopenjdk", + tag = "11-jre-hotspot-bionic", +) + +# get sipi +load("//third_party:versions.bzl", "SIPI_IMAGE_DIGEST", "SIPI_REPOSITORY", "SIPI_VERSION") + +container_pull( + name = "sipi", + digest = SIPI_IMAGE_DIGEST, + registry = "docker.io", + repository = SIPI_REPOSITORY, + tag = SIPI_VERSION, +) + +# get fuseki +load("//third_party:versions.bzl", "FUSEKI_IMAGE_DIGEST", "FUSEKI_REPOSITORY", "FUSEKI_VERSION") + +container_pull( + name = "jenafuseki", + digest = FUSEKI_IMAGE_DIGEST, + registry = "docker.io", + repository = FUSEKI_REPOSITORY, + tag = FUSEKI_VERSION, +) + +##################################### +# Scala # +##################################### + rules_scala_version = "0ac75d3a044b8e316d1b11b90a7d044685bd72e8" # 22.04.2021 rules_scala_version_sha256 = "7624c95c19b60df943dbde90c54d09ecad9aca9432b1211da8352f131776ac36" @@ -52,9 +130,10 @@ scalatest_repositories() scalatest_toolchain() -# -# Download the protobuf repository (needed by go and rules_scala_annex) -# +##################################### +# Protobuf (Scala Annex) # +##################################### + protobuf_tag = "3.12.3" protobuf_sha256 = "e5265d552e12c1f39c72842fa91d84941726026fa056d914ea6a25cd58d7bbf8" @@ -71,8 +150,10 @@ load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") protobuf_deps() +##################################### +# JAR Dependencies # +##################################### # -# download rules_jvm_external used for maven dependency resolution # defined in the third_party sub-folder # rules_jvm_external_version = "4.0" # 6.01.2021 @@ -97,9 +178,9 @@ load("@maven//:defs.bzl", "pinned_maven_install") pinned_maven_install() -# -# Load rules_scala_annex, required by rules_twirl -# +##################################### +# Scala Annex (Twirl dependency) # +##################################### rules_scala_annex_version = "2503b72a166610c14170b117c51033b42a32e48b" # 29.06.2020 rules_scala_annex_sha256 = "52d677dc8205db25a49824aade45984e3ef1b79c3bf761efede35d921033c3a4" @@ -147,9 +228,9 @@ bind( actual = "@rules_scala_annex//src/main/scala:zinc_2_12_10", ) -# -# download the rules_twirl repository (needed to compile twirl templates) -# +##################################### +# Twirl templates # +##################################### rules_twirl_version = "35389750d178f17f7ddd85b9335f7b8b8d662f78" # 29.04.2020 rules_twirl_version_sha256 = "d072049d0917b87e1eb677a4255509a7133ca71fc21c8de4b4536ca030eb3d3a" @@ -170,9 +251,9 @@ load("@twirl//:defs.bzl", twirl_pinned_maven_install = "pinned_maven_install") twirl_pinned_maven_install() -# -# Download the rules_go repository -# +##################################### +# Buildifier # +##################################### # buildifier is written in Go and hence needs rules_go to be built. # See https://github.com/bazelbuild/rules_go for the up to date setup instructions. http_archive( @@ -208,90 +289,11 @@ http_archive( url = "https://github.com/bazelbuild/buildtools/archive/master.zip", ) -# legacy variant used by rules_docker. Remove after rules_docker was updated to -# newest rules_python -load("@rules_python//python:pip.bzl", "pip_import", "pip_repositories") - -pip_repositories() - -# -# Download the rules_docker repository at release v0.14.4 -# -rules_docker_version = "0.14.4" - -rules_docker_version_sha256 = "4521794f0fba2e20f3bf15846ab5e01d5332e587e9ce81629c7f96c793bb7036" - -http_archive( - name = "io_bazel_rules_docker", - sha256 = rules_docker_version_sha256, - strip_prefix = "rules_docker-%s" % rules_docker_version, - url = "https://github.com/bazelbuild/rules_docker/releases/download/v%s/rules_docker-v%s.tar.gz" % (rules_docker_version, rules_docker_version), -) - -load( - "@io_bazel_rules_docker//repositories:repositories.bzl", - container_repositories = "repositories", -) - -container_repositories() - -load("@io_bazel_rules_docker//repositories:deps.bzl", container_deps = "deps") - -container_deps() -load("@io_bazel_rules_docker//repositories:pip_repositories.bzl", "pip_deps") -pip_deps() - -# load container_pull method -load( - "@io_bazel_rules_docker//container:container.bzl", - "container_pull", -) - -# get distroless java -container_pull( - name = "java_base", - # 'tag' is also supported, but digest is encouraged for reproducibility. - digest = "sha256:deadbeef", - registry = "gcr.io", - repository = "distroless/java", -) - -# get openjdk -container_pull( - name = "openjdk11", - digest = "sha256:0e51b455654bd162c485a6a6b5b120cc82db453d9265cc90f0c4fb5d14e2f62e", - registry = "docker.io", - repository = "adoptopenjdk", - tag = "11-jre-hotspot-bionic", -) - -# get sipi -load("//third_party:versions.bzl", "SIPI_IMAGE_DIGEST", "SIPI_REPOSITORY", "SIPI_VERSION") - -container_pull( - name = "sipi", - digest = SIPI_IMAGE_DIGEST, - registry = "docker.io", - repository = SIPI_REPOSITORY, - tag = SIPI_VERSION, -) - -# get fuseki -load("//third_party:versions.bzl", "FUSEKI_IMAGE_DIGEST", "FUSEKI_REPOSITORY", "FUSEKI_VERSION") - -container_pull( - name = "jenafuseki", - digest = FUSEKI_IMAGE_DIGEST, - registry = "docker.io", - repository = FUSEKI_REPOSITORY, - tag = FUSEKI_VERSION, -) - -# -# download rules_pkg - basic packaging rules -# +##################################### +# rules_pkg - basic packaging rules # +##################################### rules_package_version = "0.2.4" rules_package_version_sha256 = "4ba8f4ab0ff85f2484287ab06c0d871dcb31cc54d439457d28fd4ae14b18450a" @@ -302,14 +304,13 @@ http_archive( url = "https://github.com/bazelbuild/rules_pkg/releases/download/%s/rules_pkg-%s.tar.gz" % (rules_package_version, rules_package_version), ) -# load further dependencies of this rule load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies") rules_pkg_dependencies() -# -# download rules_stamp - stamping helper -# +##################################### +# rules_stamp - stamping helper # +##################################### http_archive( name = "ecosia_rules_stamp", sha256 = "36d7ea381bfb2520f9353299b162434b25c77365d3c9e9459195c536da5e837d", diff --git a/sipi/scripts/BUILD.bazel b/sipi/scripts/BUILD.bazel index 204a038668..10d414589e 100644 --- a/sipi/scripts/BUILD.bazel +++ b/sipi/scripts/BUILD.bazel @@ -4,7 +4,29 @@ load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") filegroup( name = "scripts", - srcs = glob(["*.lua"]), + srcs = [ + "admin_upload.lua", + "cache.lua", + "clean_temp_dir.lua", + "debug.lua", + "delete_temp_file.lua", + "exit.lua", + "file_info.lua", + "get_knora_session.lua", + "jwt.lua", + "send_response.lua", + "sipi.init-knora.lua", + "sipi.init-knora-no-auth.lua", + "sipi.init-knora-test.lua", + "store.lua", + "test1.lua", + "test2.lua", + "test_file_info.lua", + "test_functions.lua", + "test_knora_session_cookie.lua", + "upload.lua", + "util.lua", + ], ) pkg_tar( diff --git a/sipi/scripts/send_response.lua b/sipi/scripts/send_response.lua index 3b917a8595..58ed84c1a5 100644 --- a/sipi/scripts/send_response.lua +++ b/sipi/scripts/send_response.lua @@ -49,20 +49,15 @@ function send_error(status, msg) msg_str = "Unknown error. Please report this as a possible bug in a Sipi route." end - local result - - -- If this is an internal server error, log the message, and return a generic message to the client. + -- If this is an internal server error, log the message. if http_status // 100 == 5 then server.log(msg_str, server.loglevel.LOG_ERR) - - result = { - message = "Internal server error" - } - else - result = { - message = msg_str - } end + + local result + result = { + message = msg_str + } success, error_msg = server.sendHeader("Content-Type", "application/json") if not success then diff --git a/sipi/scripts/upload.lua b/sipi/scripts/upload.lua index 53cb86c957..cb03d4154d 100644 --- a/sipi/scripts/upload.lua +++ b/sipi/scripts/upload.lua @@ -38,7 +38,8 @@ end -- Buffer the response (helps with error handling). -local success, error_msg = server.setBuffer() +local success, error_msg +success, error_msg = server.setBuffer() if not success then send_error(500, "server.setBuffer() failed: " .. error_msg) return @@ -54,12 +55,14 @@ end local tmpFolder = config.imgroot .. '/tmp/' local exists success, exists = server.fs.exists(tmpFolder) -if not success then +if not success then -- tests server.fs.exists + -- fs.exist was not run successful. This does not mean, that the tmp folder is not there. send_error(500, "server.fs.exists() failed: " .. exists) return end -if not exists then - local error_msg +if not exists then -- checks the response of server.fs.exists + -- tmp folder does not exist + server.log("temp folder missing: " .. tmpFolder, server.loglevel.LOG_ERR) success, error_msg = server.fs.mkdir(tmpFolder, 511) if not success then send_error(500, "server.fs.mkdir() failed: " .. error_msg) diff --git a/webapi/src/test/resources/logback-test.xml b/webapi/src/test/resources/logback-test.xml index 80e17fc267..593e0acf49 100644 --- a/webapi/src/test/resources/logback-test.xml +++ b/webapi/src/test/resources/logback-test.xml @@ -51,6 +51,8 @@ + + diff --git a/webapi/src/test/scala/org/knora/webapi/ITKnoraLiveSpec.scala b/webapi/src/test/scala/org/knora/webapi/ITKnoraLiveSpec.scala index 3d8a83f276..955ee7ccbd 100644 --- a/webapi/src/test/scala/org/knora/webapi/ITKnoraLiveSpec.scala +++ b/webapi/src/test/scala/org/knora/webapi/ITKnoraLiveSpec.scala @@ -244,9 +244,8 @@ class ITKnoraLiveSpec(_system: ActorSystem) val sipiRequest = Post(s"$baseInternalSipiUrl/upload?token=$loginToken", sipiFormData) val sipiUploadResponseJson: JsObject = getResponseJson(sipiRequest) - // println(sipiUploadResponseJson.prettyPrint) + val sipiUploadResponse: SipiUploadResponse = sipiUploadResponseJson.convertTo[SipiUploadResponse] - // println(s"sipiUploadResponse: $sipiUploadResponse") // Request the temporary file from Sipi. for (responseEntry <- sipiUploadResponse.uploadedFiles) { diff --git a/webapi/src/test/scala/org/knora/webapi/TestContainers.scala b/webapi/src/test/scala/org/knora/webapi/TestContainers.scala index 4bf73fdb78..f42fa41e83 100644 --- a/webapi/src/test/scala/org/knora/webapi/TestContainers.scala +++ b/webapi/src/test/scala/org/knora/webapi/TestContainers.scala @@ -25,7 +25,7 @@ import com.typesafe.config.{Config, ConfigFactory} import org.testcontainers.containers.{BindMode, GenericContainer} import org.testcontainers.utility.DockerImageName -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ /** * Provides all containers necessary for running tests. @@ -69,7 +69,6 @@ object TestContainers { RedisContainer.withExposedPorts(6379) RedisContainer.start() - import scala.collection.JavaConverters._ private val portMap = Map( "app.triplestore.fuseki.port" -> FusekiContainer.getFirstMappedPort, "app.sipi.internal-host" -> sipiIp, diff --git a/webapi/src/test/scala/org/knora/webapi/e2e/v1/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/e2e/v1/BUILD.bazel index 2212a0e5dc..8d5285d056 100644 --- a/webapi/src/test/scala/org/knora/webapi/e2e/v1/BUILD.bazel +++ b/webapi/src/test/scala/org/knora/webapi/e2e/v1/BUILD.bazel @@ -108,6 +108,7 @@ scala_test( ], jvm_flags = ["-Dconfig.resource=fuseki.conf"], # unused_dependency_checker_mode = "warn", + scalacopts = ["-deprecation"], deps = ALL_WEBAPI_MAIN_DEPENDENCIES + [ "//webapi:main_library", "//webapi:test_library", diff --git a/webapi/src/test/scala/org/knora/webapi/responders/admin/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/responders/admin/BUILD.bazel index 32ee67f4b7..1fc1ef107b 100644 --- a/webapi/src/test/scala/org/knora/webapi/responders/admin/BUILD.bazel +++ b/webapi/src/test/scala/org/knora/webapi/responders/admin/BUILD.bazel @@ -51,6 +51,7 @@ scala_test( ], jvm_flags = ["-Dconfig.resource=fuseki.conf"], # unused_dependency_checker_mode = "warn", + scalacopts = ["-deprecation"], deps = ALL_WEBAPI_MAIN_DEPENDENCIES + [ "//webapi:main_library", "//webapi:test_library", diff --git a/webapi/src/test/scala/org/knora/webapi/responders/admin/PermissionsResponderADMSpec.scala b/webapi/src/test/scala/org/knora/webapi/responders/admin/PermissionsResponderADMSpec.scala index fdc18875a0..af6b2a0cb1 100644 --- a/webapi/src/test/scala/org/knora/webapi/responders/admin/PermissionsResponderADMSpec.scala +++ b/webapi/src/test/scala/org/knora/webapi/responders/admin/PermissionsResponderADMSpec.scala @@ -63,9 +63,9 @@ class PermissionsResponderADMSpec /* define private method access */ private val userAdministrativePermissionsGetADM = - PrivateMethod[Future[Map[IRI, Set[PermissionADM]]]]('userAdministrativePermissionsGetADM) + PrivateMethod[Future[Map[IRI, Set[PermissionADM]]]](Symbol("userAdministrativePermissionsGetADM")) private val defaultObjectAccessPermissionsForGroupsGetADM = - PrivateMethod[Future[Set[PermissionADM]]]('defaultObjectAccessPermissionsForGroupsGetADM) + PrivateMethod[Future[Set[PermissionADM]]](Symbol("defaultObjectAccessPermissionsForGroupsGetADM")) override lazy val rdfDataObjects = List( RdfDataObject(path = "test_data/responders.admin.PermissionsResponderV1Spec/additional_permissions-data.ttl", diff --git a/webapi/src/test/scala/org/knora/webapi/responders/v1/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/responders/v1/BUILD.bazel index aa9590c3f9..7b0309c6f3 100644 --- a/webapi/src/test/scala/org/knora/webapi/responders/v1/BUILD.bazel +++ b/webapi/src/test/scala/org/knora/webapi/responders/v1/BUILD.bazel @@ -71,6 +71,7 @@ scala_test( ], jvm_flags = ["-Dconfig.resource=fuseki.conf"], # unused_dependency_checker_mode = "warn", + scalacopts = ["-deprecation"], deps = ALL_WEBAPI_MAIN_DEPENDENCIES + [ "//webapi:main_library", "//webapi:test_library", diff --git a/webapi/src/test/scala/org/knora/webapi/routing/AuthenticatorSpec.scala b/webapi/src/test/scala/org/knora/webapi/routing/AuthenticatorSpec.scala index dfad4343bd..b03430cd0c 100644 --- a/webapi/src/test/scala/org/knora/webapi/routing/AuthenticatorSpec.scala +++ b/webapi/src/test/scala/org/knora/webapi/routing/AuthenticatorSpec.scala @@ -45,8 +45,8 @@ class AuthenticatorSpec extends CoreSpec("AuthenticationTestSystem") with Implic implicit val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance - private val getUserByIdentifier = PrivateMethod[Future[UserADM]]('getUserByIdentifier) - private val authenticateCredentialsV2 = PrivateMethod[Future[Boolean]]('authenticateCredentialsV2) + private val getUserByIdentifier = PrivateMethod[Future[UserADM]](Symbol("getUserByIdentifier")) + private val authenticateCredentialsV2 = PrivateMethod[Future[Boolean]](Symbol("authenticateCredentialsV2")) "During Authentication" when { "called, the 'getUserADMByEmail' method " should { diff --git a/webapi/src/test/scala/org/knora/webapi/routing/BUILD.bazel b/webapi/src/test/scala/org/knora/webapi/routing/BUILD.bazel index d7465e2acb..59d683cbfe 100644 --- a/webapi/src/test/scala/org/knora/webapi/routing/BUILD.bazel +++ b/webapi/src/test/scala/org/knora/webapi/routing/BUILD.bazel @@ -15,6 +15,7 @@ scala_test( ], jvm_flags = ["-Dconfig.resource=fuseki.conf"], # unused_dependency_checker_mode = "warn", + scalacopts = ["-deprecation"], deps = ALL_WEBAPI_MAIN_DEPENDENCIES + [ "//webapi:main_library", "//webapi:test_library",