From b2ef44183f77aa05d9c854459a1248a90a3b2745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Kleinb=C3=B6lting?= Date: Mon, 24 Jun 2024 11:09:11 +0200 Subject: [PATCH] fix: Allow for longer user IRIs (DEV-3759) (#3291) --- .../slice/admin/domain/model/User.scala | 2 +- .../admin/domain/model/UserIriSpec.scala | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 webapi/src/test/scala/org/knora/webapi/slice/admin/domain/model/UserIriSpec.scala diff --git a/webapi/src/main/scala/org/knora/webapi/slice/admin/domain/model/User.scala b/webapi/src/main/scala/org/knora/webapi/slice/admin/domain/model/User.scala index 8203ee4d28..07aa73bd60 100644 --- a/webapi/src/main/scala/org/knora/webapi/slice/admin/domain/model/User.scala +++ b/webapi/src/main/scala/org/knora/webapi/slice/admin/domain/model/User.scala @@ -161,7 +161,7 @@ object UserIri extends StringValueCompanion[UserIri] { * * `$`: Asserts the end of the string. */ - private val userIriRegEx = """^http://rdfh\.ch/users/[a-zA-Z0-9_-]{4,36}$""".r + private val userIriRegEx = """^http://rdfh\.ch/users/[a-zA-Z0-9_-]{4,64}$""".r private val builtInIris = Seq("SystemUser", "AnonymousUser").map(KnoraAdminPrefixExpansion + _) diff --git a/webapi/src/test/scala/org/knora/webapi/slice/admin/domain/model/UserIriSpec.scala b/webapi/src/test/scala/org/knora/webapi/slice/admin/domain/model/UserIriSpec.scala new file mode 100644 index 0000000000..893792f189 --- /dev/null +++ b/webapi/src/test/scala/org/knora/webapi/slice/admin/domain/model/UserIriSpec.scala @@ -0,0 +1,37 @@ +/* + * Copyright © 2021 - 2024 Swiss National Data and Service Center for the Humanities and/or DaSCH Service Platform contributors. + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.knora.webapi.slice.admin.domain.model + +import zio.test.* + +object UserIriSpec extends ZIOSpecDefault { + + private val testIris = Seq( + "http://rdfh.ch/users/9CzAcnT0So-k10CTySHnQA", + "http://rdfh.ch/users/A6AZpISxSm65bBHZ_G5Z4w", + "http://rdfh.ch/users/AnythingAdminUser", + "http://rdfh.ch/users/activites-cs-test-user1", + "http://rdfh.ch/users/drawings-gods-test-ddd1", + "http://rdfh.ch/users/drawings-gods-test-user-metaannotator", + "http://rdfh.ch/users/multiuser", + "http://rdfh.ch/users/normaluser", + "http://rdfh.ch/users/parole-religieuse-test-user1", + "http://rdfh.ch/users/reforme-geneve-test1", + "http://rdfh.ch/users/root", + "http://rdfh.ch/users/roud-oeuvres-test-user1", + "http://rdfh.ch/users/stardom-archivist-test-user", + "http://rdfh.ch/users/stardom-cacourcoux", + "http://rdfh.ch/users/stardom-import-snf", + "http://rdfh.ch/users/superuser", + "http://rdfh.ch/users/theatre-societe-test-user", + "http://www.knora.org/ontology/knora-admin#AnonymousUser", + "http://www.knora.org/ontology/knora-admin#SystemUser", + ) + + val spec = suite("UserIriSpec")(test("") { + check(Gen.fromIterable(testIris))(iri => assertTrue(UserIri.from(iri).map(_.value) == Right(iri))) + }) +}