diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/util/ua/UserAgentUtil.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/ua/UserAgentUtil.java index c9bea4101..94f4d0f6a 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/util/ua/UserAgentUtil.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/util/ua/UserAgentUtil.java @@ -5,7 +5,6 @@ package org.whispersystems.textsecuregcm.util.ua; -import com.google.common.annotations.VisibleForTesting; import com.vdurmont.semver4j.Semver; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -21,10 +20,10 @@ public class UserAgentUtil { } try { - final UserAgent standardUserAgent = parseStandardUserAgentString(userAgentString); + final Matcher matcher = STANDARD_UA_PATTERN.matcher(userAgentString); - if (standardUserAgent != null) { - return standardUserAgent; + if (matcher.matches()) { + return new UserAgent(ClientPlatform.valueOf(matcher.group(1).toUpperCase()), new Semver(matcher.group(2)), StringUtils.stripToNull(matcher.group(4))); } } catch (final Exception e) { throw new UnrecognizedUserAgentException(e); @@ -32,15 +31,4 @@ public class UserAgentUtil { throw new UnrecognizedUserAgentException(); } - - @VisibleForTesting - static UserAgent parseStandardUserAgentString(final String userAgentString) { - final Matcher matcher = STANDARD_UA_PATTERN.matcher(userAgentString); - - if (matcher.matches()) { - return new UserAgent(ClientPlatform.valueOf(matcher.group(1).toUpperCase()), new Semver(matcher.group(2)), StringUtils.stripToNull(matcher.group(4))); - } - - return null; - } } diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/util/ua/UserAgentUtilTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/util/ua/UserAgentUtilTest.java index dddc61a94..b0a9b853f 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/util/ua/UserAgentUtilTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/util/ua/UserAgentUtilTest.java @@ -13,28 +13,20 @@ import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; +import javax.annotation.Nullable; class UserAgentUtilTest { - @ParameterizedTest - @MethodSource - void testParseBogusUserAgentString(final String userAgentString) { - assertThrows(UnrecognizedUserAgentException.class, () -> UserAgentUtil.parseUserAgentString(userAgentString)); - } - - @SuppressWarnings("unused") - private static Stream testParseBogusUserAgentString() { - return Stream.of( - null, - "This is obviously not a reasonable User-Agent string.", - "Signal-Android/4.6-8.3.unreasonableversionstring-17" - ); - } - @ParameterizedTest @MethodSource("argumentsForTestParseStandardUserAgentString") - void testParseStandardUserAgentString(final String userAgentString, final UserAgent expectedUserAgent) { - assertEquals(expectedUserAgent, UserAgentUtil.parseStandardUserAgentString(userAgentString)); + void testParseStandardUserAgentString(final String userAgentString, @Nullable final UserAgent expectedUserAgent) + throws UnrecognizedUserAgentException { + + if (expectedUserAgent != null) { + assertEquals(expectedUserAgent, UserAgentUtil.parseUserAgentString(userAgentString)); + } else { + assertThrows(UnrecognizedUserAgentException.class, () -> UserAgentUtil.parseUserAgentString(userAgentString)); + } } private static Stream argumentsForTestParseStandardUserAgentString() {