diff --git a/azkaban-common/src/test/java/azkaban/utils/StringUtilsTest.java b/azkaban-common/src/test/java/azkaban/utils/StringUtilsTest.java
new file mode 100644
index 0000000..2c8397b
--- /dev/null
+++ b/azkaban-common/src/test/java/azkaban/utils/StringUtilsTest.java
@@ -0,0 +1,80 @@
+package azkaban.utils;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class StringUtilsTest {
+
+ private static final String chromeOnMac =
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36";
+ private static final String fireFoxOnMac =
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:40.0) Gecko/20100101 Firefox/40.0";
+ private static final String safariOnMac =
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.78.2 (KHTML, like Gecko) Version/7.0.6 Safari/537.78.2";
+ private static final String chromeOnLinux =
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36";
+ private static final String fireFoxOnLinux =
+ "Mozilla/5.0 (X11; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0";
+
+ private static final String[] browserVariants = { chromeOnMac, fireFoxOnMac,
+ safariOnMac, chromeOnLinux, fireFoxOnLinux };
+
+ private static final String[] BROWSER_NAMES =
+ { "Chrome", "Firefox", "Safari" };
+
+ @Test
+ public void isBrowser() throws Exception {
+
+ for (String browser : browserVariants) {
+ Assert.assertTrue(browser, StringUtils.isFromBrowser(browser));
+ }
+ }
+
+ @Test
+ public void notBrowserWithLowercase() throws Exception {
+
+ for (String browser : browserVariants) {
+ Assert.assertFalse(browser.toLowerCase(),
+ StringUtils.isFromBrowser(browser.toLowerCase()));
+ }
+ }
+
+ @Test
+ public void notBrowser() throws Exception {
+ String testStr = "curl";
+ Assert.assertFalse(testStr, StringUtils.isFromBrowser(testStr));
+ }
+
+ @Test
+ public void emptyBrowserString() throws Exception {
+
+ Assert.assertFalse("empty string", StringUtils.isFromBrowser(""));
+ }
+
+ @Test
+ public void nullBrowserString() throws Exception {
+
+ Assert.assertFalse("null string", StringUtils.isFromBrowser(null));
+ }
+
+ @Test
+ public void startsWithBrowserName() {
+ for (String name : BROWSER_NAMES) {
+ Assert.assertTrue(StringUtils.isFromBrowser(name + " is awesome"));
+ }
+ }
+
+ @Test
+ public void endsWithBrowserName() {
+ for (String name : BROWSER_NAMES) {
+ Assert.assertTrue(StringUtils.isFromBrowser("awesome is" + name));
+ }
+ }
+
+ @Test
+ public void containsBrowserName() {
+ for (String name : BROWSER_NAMES) {
+ Assert.assertTrue(StringUtils.isFromBrowser("awesome " + name + " is"));
+ }
+ }
+}