From 77cfdf7207b5ca92205ee6800c682ad9835d4b0e Mon Sep 17 00:00:00 2001 From: "Tarek M. Ahmed" Date: Wed, 27 Nov 2024 11:33:47 -0500 Subject: [PATCH] BENCH-4609 Add a new Utility method isServiceAccount --- .../java/bio/terra/common/iam/IamUtils.java | 18 ++++++++++ .../bio/terra/common/iam/IamUtilsTest.java | 33 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/main/java/bio/terra/common/iam/IamUtils.java create mode 100644 src/test/java/bio/terra/common/iam/IamUtilsTest.java diff --git a/src/main/java/bio/terra/common/iam/IamUtils.java b/src/main/java/bio/terra/common/iam/IamUtils.java new file mode 100644 index 00000000..a9ec203d --- /dev/null +++ b/src/main/java/bio/terra/common/iam/IamUtils.java @@ -0,0 +1,18 @@ +package bio.terra.common.iam; + +public final class IamUtils { + + /** + * Check whether the provided email address is a service account. + * + * @param email + * @return true if the email address is a service account + */ + public static boolean isServiceAccount(String email) { + if (email == null) { + return false; + } + return email.matches("\\S+@\\S*gserviceaccount\\.com$"); + } + +} diff --git a/src/test/java/bio/terra/common/iam/IamUtilsTest.java b/src/test/java/bio/terra/common/iam/IamUtilsTest.java new file mode 100644 index 00000000..81a628bb --- /dev/null +++ b/src/test/java/bio/terra/common/iam/IamUtilsTest.java @@ -0,0 +1,33 @@ +package bio.terra.common.iam; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class IamUtilsTest { + + @Test + public void isServiceAccountWithValidServiceAccountEmail() { + assertTrue(IamUtils.isServiceAccount("user@gserviceaccount.com")); + } + + @Test + public void isServiceAccountWithInvalidServiceAccountEmail() { + assertFalse(IamUtils.isServiceAccount("user@verily.com")); + } + + @Test + public void isServiceAccountWithWhitespaceInEmail() { + assertFalse(IamUtils.isServiceAccount(" user@gserviceaccount.com")); + } + + @Test + public void isServiceAccountWithEmptyEmail() { + assertFalse(IamUtils.isServiceAccount("")); + } + + @Test + public void isServiceAccountWithNullEmail() { + assertFalse(IamUtils.isServiceAccount(null)); + } +} \ No newline at end of file