Skip to content

Commit 9598020

Browse files
author
asu80
committed
Add testSessionRepresentationReturnsCorrectGroupsDuringImpersonation
1 parent bb9a1a9 commit 9598020

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

testing/trino-tests/src/test/java/io/trino/security/TestImpersonation.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515

1616
import com.google.common.collect.ImmutableSet;
1717
import io.airlift.log.Logging;
18+
import io.trino.Session;
1819
import io.trino.jdbc.TrinoConnection;
1920
import io.trino.metadata.SystemSecurityMetadata;
2021
import io.trino.plugin.memory.MemoryPlugin;
2122
import io.trino.server.testing.TestingTrinoServer;
23+
import io.trino.spi.security.Identity;
2224
import io.trino.spi.security.TrinoPrincipal;
2325
import io.trino.testing.TestingAccessControlManager;
2426
import org.junit.jupiter.api.BeforeAll;
@@ -34,11 +36,13 @@
3436
import java.sql.SQLException;
3537
import java.sql.Statement;
3638
import java.util.Optional;
39+
import java.util.Set;
3740
import java.util.stream.Stream;
3841

3942
import static com.google.inject.multibindings.OptionalBinder.newOptionalBinder;
4043
import static io.trino.jdbc.BaseTrinoDriverTest.getCurrentUser;
4144
import static io.trino.spi.security.PrincipalType.USER;
45+
import static io.trino.testing.TestingSession.testSessionBuilder;
4246
import static java.lang.String.format;
4347
import static org.assertj.core.api.Assertions.assertThat;
4448
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -138,6 +142,31 @@ public void testImpersonationDisallowedWhenRoleIsNone()
138142
}
139143
}
140144

145+
@Test
146+
@Timeout(10)
147+
public void testSessionRepresentationReturnsCorrectGroupsDuringImpersonation()
148+
{
149+
// given
150+
Set<String> aliceGroups = ImmutableSet.of("alice_group");
151+
Set<String> johnGroups = ImmutableSet.of("john_group");
152+
Identity alice = Identity.forUser("alice").withGroups(aliceGroups).build();
153+
Identity john = Identity.forUser("john").withGroups(johnGroups).build();
154+
155+
// when
156+
Session aliceImpersonationSession = testSessionBuilder()
157+
.setOriginalIdentity(alice)
158+
.setIdentity(john)
159+
.build();
160+
161+
// then
162+
Set<String> originalUserGroups = aliceImpersonationSession.toSessionRepresentation()
163+
.getOriginalUserGroups();
164+
Set<String> userGroups = aliceImpersonationSession.toSessionRepresentation()
165+
.getGroups();
166+
assertThat(originalUserGroups).isEqualTo(aliceGroups);
167+
assertThat(userGroups).isEqualTo(johnGroups);
168+
}
169+
141170
private Connection createConnection(String catalog, String schema, String user)
142171
throws SQLException
143172
{

0 commit comments

Comments
 (0)