useragent_parser 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe UseragentParser::ReferrerParser do
6
+ YAML.load_file(File.expand_path(File.dirname(__FILE__)) + "/../fixtures/test_referrers.yaml")['test_cases'].each do |testcase|
7
+ it "should correctly parse the referrer string '#{testcase['referrer_string']}'" do
8
+ result = UseragentParser.parse_referrer(testcase['referrer_string'])
9
+ result['family'].should == testcase['family']
10
+ end
11
+ end
12
+ end
@@ -17,6 +17,20 @@ describe UseragentParser::UserAgentParser do
17
17
  end
18
18
  end
19
19
 
20
+ YAML.load_file(File.expand_path(File.dirname(__FILE__)) + "/../fixtures/test_user_agent_parser_email.yaml")['test_cases'].each do |testcase|
21
+ it "should correctly parse the useragent header '#{testcase['user_agent_string']}'" do
22
+ if testcase['js_ua']
23
+ js_ua = eval(testcase['js_ua'].gsub("': '", "' => '"))
24
+ js_ua = [ js_ua['js_user_agent_string'], js_ua['js_user_agent_family'], js_ua['js_user_agent_v1'], js_ua['js_user_agent_v2'], js_ua['js_user_agent_v3'] ]
25
+ end
26
+ result = UseragentParser.parse_user_agent(testcase['user_agent_string'], *js_ua)
27
+ result['family'].should == testcase['family']
28
+ result['major'].should == testcase['major']
29
+ result['minor'].should == testcase['minor']
30
+ result['patch'].should == testcase['patch']
31
+ end
32
+ end
33
+
20
34
  YAML.load_file(File.expand_path(File.dirname(__FILE__)) + "/../fixtures/firefox_user_agent_strings.yaml")['test_cases'].each do |testcase|
21
35
  it "should correctly parse the useragent header '#{testcase['user_agent_string']}'" do
22
36
  js_ua = {}
@@ -58,6 +58,112 @@ describe UseragentParser::UserAgent do
58
58
  end
59
59
  end
60
60
 
61
+ describe "for email client" do
62
+ it "should detect Mozilla Thunderbird" do
63
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; de; rv:1.9.2.15) Gecko/20110303 Lightning/1.0b2 Thunderbird/3.1.9').email.should == 'Thunderbird'
64
+ end
65
+
66
+ it "should detect Windows Live Mail" do
67
+ UseragentParser.parse_with_referrer('Outlook-Express/7.0 (MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; TmstmpExt)').email.should == 'Windows Live Mail'
68
+ end
69
+
70
+ it "should detect Eudora" do
71
+ UseragentParser.parse_with_referrer('Eudora/6.2.3b9 (MacOS)').email.should == 'Eudora'
72
+ end
73
+
74
+ it "should detect T-Online eMail" do
75
+ UseragentParser.parse_with_referrer('Kopernikus T-Online eMail 3.x').email.should == 'T-Online eMail'
76
+ end
77
+
78
+ it "should detect old Apple Mail" do
79
+ UseragentParser.parse_with_referrer('Mail/1082 CFNetwork/454.11.5 Darwin/10.5.0 (i386) (MacBookPro6%2C2)').email.should == 'Apple Mail'
80
+ end
81
+
82
+ it "should detect newer Apple Mail" do
83
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; de-de) AppleWebKit/533.18.1 (KHTML, like Gecko)').email.should == 'Apple Mail'
84
+ end
85
+
86
+ it "should detect Lotus Notes" do
87
+ UseragentParser.parse_with_referrer('Mozilla/4.0 (compatible; Lotus-Notes/6.0; Macintosh PPC)').email.should == 'Lotus Notes'
88
+ end
89
+
90
+ it "should detect Microsoft Outlook" do
91
+ UseragentParser.parse_with_referrer('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; ms-office; MSOffice 14)').email.should == 'Microsoft Outlook'
92
+ end
93
+
94
+ it "should detect Sparrow" do
95
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8) AppleWebKit/536.25 (KHTML, like Gecko) Sparrow/1164').email.should == 'Sparrow'
96
+ end
97
+
98
+ describe "Outlook" do
99
+ it "should should recognize Outlook 2000/2003/Express" do
100
+ UseragentParser.parse_with_referrer('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)').email_version.should == 'Outlook 2000/2003/Express'
101
+ end
102
+
103
+ it "should not mistake IE7 as Outlook" do
104
+ # TODO
105
+ end
106
+
107
+ it "should should recognize Outlook 2007" do
108
+ UseragentParser.parse_with_referrer('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; MSOffice 12)').email_version.should == 'Outlook 2007'
109
+ end
110
+
111
+ it "should should recognize Outlook 2010" do
112
+ UseragentParser.parse_with_referrer('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.3; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; ms-office; MSOffice 14)').email_version.should == 'Outlook 2010'
113
+ end
114
+ end
115
+
116
+ describe "Apple Mail" do
117
+ it "should recognize Version 2" do
118
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; de-de) AppleWebKit/533.19.4 (KHTML, like Gecko)').email_version.should == 'Apple Mail 2'
119
+ end
120
+
121
+ it "should recognize Version 3" do
122
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; de-de) AppleWebKit/533.18.1 (KHTML, like Gecko)').email_version.should == 'Apple Mail 3'
123
+ end
124
+
125
+ it "should recognize Version 4" do
126
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; de-de) AppleWebKit/533.19.4 (KHTML, like Gecko)').email_version.should == 'Apple Mail 4'
127
+ end
128
+
129
+ it "should recognize Version 5" do
130
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko)').email_version.should == 'Apple Mail 5'
131
+ end
132
+
133
+ it "should recognize Version 6" do
134
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_1) AppleWebKit/536.25 (KHTML, like Gecko)').email_version.should == 'Apple Mail 6'
135
+ end
136
+
137
+ it "should not mistake Safari for Apple Mail" do
138
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_1) AppleWebKit/536.25 (KHTML, like Gecko)', 'something').email_version.should be_nil
139
+ end
140
+ end
141
+
142
+ describe "Apple Mobile Mail" do
143
+ it "should recognize an iPad" do
144
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (iPad; U; CPU OS 3_2_2 like Mac OS X; de-de) AppleWebKit/531.21.10 (KHTML, like Gecko)').email_version.should == 'iPad'
145
+ end
146
+
147
+ it "should recognize an iPod" do
148
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (iPod; U; CPU iPhone OS 4_0 like Mac OS X; de-de) AppleWebKit/532.9 (KHTML, like Gecko)').email_version.should == 'iPod'
149
+ end
150
+
151
+ it "should recognize an iPhone" do
152
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_1 like Mac OS X; de-de) AppleWebKit/532.9 (KHTML, like Gecko)').email_version.should == 'iPhone'
153
+ end
154
+
155
+ it "should not mistake Mobile Safari for Apple Mail" do
156
+ # TODO
157
+ end
158
+ end
159
+
160
+ describe "AOL" do
161
+ it "should recognize the Webmail interface" do
162
+ UseragentParser.parse_with_referrer('Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 AskTbFXTV5/3.9.1.14019 Firefox/3.6.13', 'http://mail.aol.com/33222-111/aol-1/de-de/Lite/MsgRead.aspx?folder=Spam&uid=1.28305313&seq=0&searchIn=none&searchQuery=&start=0&sort=received').email_version.should == 'AOL Webmail'
163
+ end
164
+ end
165
+ end
166
+
61
167
  describe "for operating system details" do
62
168
  it "should report the os family" do
63
169
  UseragentParser::UserAgent.new({ 'os' => { 'family' => 'Windows NT', 'major' => '3', 'minor' => '1' } }).os_family.should == 'Windows NT'
@@ -6,7 +6,7 @@ describe UseragentParser do
6
6
  let(:user_agent_string) { 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; fr; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5,gzip(gfe),gzip(gfe)' }
7
7
 
8
8
  describe "should return user agent information" do
9
- subject { UseragentParser.parse_all(user_agent_string)['user_agent'] }
9
+ subject { UseragentParser.parse_browser(user_agent_string)['user_agent'] }
10
10
 
11
11
  its(['family']) { should == 'Firefox' }
12
12
  its(['major']) { should == '3' }
@@ -15,7 +15,7 @@ describe UseragentParser do
15
15
  end
16
16
 
17
17
  describe "should return the operating system information" do
18
- subject { UseragentParser.parse_all(user_agent_string)['os'] }
18
+ subject { UseragentParser.parse_browser(user_agent_string)['os'] }
19
19
 
20
20
  its(['family']) { should == 'Mac OS X' }
21
21
  its(['major']) { should == '10' }
@@ -25,7 +25,7 @@ describe UseragentParser do
25
25
  end
26
26
 
27
27
  describe "should return the device information" do
28
- subject { UseragentParser.parse_all(user_agent_string)['device'] }
28
+ subject { UseragentParser.parse_browser(user_agent_string)['device'] }
29
29
 
30
30
  its(['family']) { should be_nil }
31
31
  its(['is_spider']) { should be_false }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: useragent_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-13 00:00:00.000000000 Z
12
+ date: 2012-09-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -77,6 +77,7 @@ files:
77
77
  - lib/useragent_parser.rb
78
78
  - lib/useragent_parser/parsers/device_parser.rb
79
79
  - lib/useragent_parser/parsers/os_parser.rb
80
+ - lib/useragent_parser/parsers/referrer_parser.rb
80
81
  - lib/useragent_parser/parsers/user_agent_parser.rb
81
82
  - lib/useragent_parser/user_agent.rb
82
83
  - lib/useragent_parser/version.rb
@@ -84,10 +85,13 @@ files:
84
85
  - spec/fixtures/firefox_user_agent_strings.yaml
85
86
  - spec/fixtures/pgts_browser_list.yaml
86
87
  - spec/fixtures/test_device.yaml
88
+ - spec/fixtures/test_referrers.yaml
87
89
  - spec/fixtures/test_user_agent_parser.yaml
90
+ - spec/fixtures/test_user_agent_parser_email.yaml
88
91
  - spec/fixtures/test_user_agent_parser_os.yaml
89
92
  - spec/parsers/device_parser_spec.rb
90
93
  - spec/parsers/os_parser_spec.rb
94
+ - spec/parsers/referrer_parser_spec.rb
91
95
  - spec/parsers/useragent_parser_spec.rb
92
96
  - spec/spec_helper.rb
93
97
  - spec/user_agent_spec.rb
@@ -122,10 +126,13 @@ test_files:
122
126
  - spec/fixtures/firefox_user_agent_strings.yaml
123
127
  - spec/fixtures/pgts_browser_list.yaml
124
128
  - spec/fixtures/test_device.yaml
129
+ - spec/fixtures/test_referrers.yaml
125
130
  - spec/fixtures/test_user_agent_parser.yaml
131
+ - spec/fixtures/test_user_agent_parser_email.yaml
126
132
  - spec/fixtures/test_user_agent_parser_os.yaml
127
133
  - spec/parsers/device_parser_spec.rb
128
134
  - spec/parsers/os_parser_spec.rb
135
+ - spec/parsers/referrer_parser_spec.rb
129
136
  - spec/parsers/useragent_parser_spec.rb
130
137
  - spec/spec_helper.rb
131
138
  - spec/user_agent_spec.rb