Skip to content

Commit

Permalink
Add more version parsing edge case tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mneudert committed Jun 10, 2024
1 parent 5ffc085 commit 0053c6e
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lib/ua_inspector/util/version.ex
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ defmodule UAInspector.Util.Version do
iex> compare("1.0.0.0", "1.0.0.1")
:lt
iex> compare("1.2.3", "1.02.03")
:eq
iex> compare("1.2.3", "1.020.3")
:lt
"""
@spec compare(binary, binary) :: :eq | :gt | :lt
def compare(version1, version2) do
Expand Down
46 changes: 46 additions & 0 deletions test/ua_inspector/parser/client_test.exs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
defmodule UAInspector.Parser.ClientTest do
use ExUnit.Case, async: true

alias UAInspector.ClientHints
alias UAInspector.Result

test "#1" do
Expand Down Expand Up @@ -51,4 +52,49 @@ defmodule UAInspector.Parser.ClientTest do

assert ^result = parsed.client
end

test "engine version with client hint version leading zero in fourth place (x.y.z.0[0-9]+)" do
agent =
"Mozilla/5.0 (Linux; arm_64; Android 10; Mi Note 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/1.0.123.01 Mobile Safari/537.36"

client_hints =
ClientHints.new([
{"sec-ch-ua-full-version-list", ~s(" Not A;Brand";v="1.0.0.0", "Chrome";v="1.0.123.02")}
])

parsed = UAInspector.parse(agent, client_hints)

result = %UAInspector.Result.Client{
engine: "WebKit",
engine_version: "537.36",
name: "Chrome Mobile",
type: "browser",
version: "1.0.123.02"
}

assert ^result = parsed.client
end

test "engine version with many parts in client hint version" do
agent =
"Mozilla/5.0 (Linux; arm_64; Android 10; Mi Note 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/1.0.123.02 Mobile Safari/537.36"

client_hints =
ClientHints.new([
{"sec-ch-ua-full-version-list",
~s(" Not A;Brand";v="1.0.0.0", "Chrome";v="1.0.123.02.3.4.5")}
])

parsed = UAInspector.parse(agent, client_hints)

result = %UAInspector.Result.Client{
engine: "WebKit",
engine_version: "537.36",
name: "Chrome Mobile",
type: "browser",
version: "1.0.123.02.3.4.5"
}

assert ^result = parsed.client
end
end

0 comments on commit 0053c6e

Please sign in to comment.