You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/08/05 22:55:47 UTC
[isis] 02/05: ISIS-2728: adds UserMemento#multiTenancyToken unit
tests
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2728
in repository https://gitbox.apache.org/repos/asf/isis.git
commit ecfce2aa14d94447de1bc7d3ae268267df658a9f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 11 16:47:00 2021 +0100
ISIS-2728: adds UserMemento#multiTenancyToken unit tests
(cherry picked from commit e141c7ffb8f401eb80d99997e12b0121604a1d21)
(cherry picked from commit 6de24feb8a29d2ec325679d6497ac6887d9949f2)
---
.../isis/applib/services/user/UserMemento.java | 7 ++++++
.../applib/services/user/UserMemento_Test.java | 29 +++++++++++++++++++++-
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
index 4469a1e..5b5c78b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
@@ -210,6 +210,13 @@ public class UserMemento implements Serializable {
boolean impersonating = false;
+ /**
+ * Indicates which tenancy (or tenancies) this user has access to.
+ *
+ * <p>
+ * The interpretation of this token is implementation-specific.
+ * </p>
+ */
@Property(optionality = Optionality.OPTIONAL)
@PropertyLayout(fieldSetId = "security", sequence = "3")
@Getter @With(onMethod_ = {@Programmatic})
diff --git a/api/applib/src/test/java/org/apache/isis/applib/services/user/UserMemento_Test.java b/api/applib/src/test/java/org/apache/isis/applib/services/user/UserMemento_Test.java
index 504ac66..8cef9df 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/services/user/UserMemento_Test.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/services/user/UserMemento_Test.java
@@ -215,6 +215,29 @@ class UserMemento_Test {
}
@Nested
+ class withTenancyToken {
+
+ @Test
+ void user_and_roles_preserved_and_impersonating_flag_set() throws MalformedURLException {
+
+ // given
+ val userMemento = UserMemento.ofNameAndRoleNames("fredflintstone", "CAVEMAN", "HUSBAND");
+
+ // when
+ val userMemento2 = userMemento.withMultiTenancyToken("/ITA");
+
+ // then copy created
+ Assertions.assertThat(userMemento2).isNotSameAs(userMemento);
+
+ // then copy correct
+ Assertions.assertThat(userMemento2.getMultiTenancyToken()).isEqualTo("/ITA");
+
+ // then original unchanged
+ Assertions.assertThat(userMemento.getMultiTenancyToken()).isNull();
+ }
+ }
+
+ @Nested
class all_the_withers {
@Test
@@ -225,7 +248,9 @@ class UserMemento_Test {
.withRoleAdded("CAVEMAN")
.withRoleAdded("HUSBAND")
.withAvatarUrl(new java.net.URL("https://upload.wikimedia.org/wikipedia/en/a/ad/Fred_Flintstone.png"))
- .withRealName("Fred Flintstone");
+ .withRealName("Fred Flintstone")
+ .withMultiTenancyToken("/USA/Bedrock")
+ ;
// then
Assertions.assertThat(userMemento.getName()).isEqualTo("fredflintstone");
@@ -250,6 +275,7 @@ class UserMemento_Test {
Assertions.assertThat(userMemento2.getAvatarUrl()).isEqualTo(new java.net.URL("https://upload.wikimedia.org/wikipedia/en/a/ad/Fred_Flintstone.png"));
Assertions.assertThat(userMemento2.getRealName()).isEqualTo("Fred Flintstone");
Assertions.assertThat(userMemento2.isImpersonating()).isTrue();
+ Assertions.assertThat(userMemento2.getMultiTenancyToken()).isEqualTo("/USA/Bedrock");
// then original unchanged
Assertions.assertThat(userMemento.getName()).isEqualTo("fredflintstone");
@@ -259,6 +285,7 @@ class UserMemento_Test {
Assertions.assertThat(userMemento.getAvatarUrl()).isEqualTo(new java.net.URL("https://upload.wikimedia.org/wikipedia/en/a/ad/Fred_Flintstone.png"));
Assertions.assertThat(userMemento.getRealName()).isEqualTo("Fred Flintstone");
Assertions.assertThat(userMemento.isImpersonating()).isFalse();
+ Assertions.assertThat(userMemento.getMultiTenancyToken()).isEqualTo("/USA/Bedrock");
}
}