jpmobile 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. data/Gemfile +10 -8
  2. data/README.rdoc +1 -1
  3. data/Rakefile +13 -5
  4. data/VERSION.yml +1 -1
  5. data/lib/jpmobile/helpers.rb +1 -1
  6. data/lib/jpmobile/rack/filter.rb +2 -7
  7. data/lib/tasks/jpmobile_tasks.rake +1 -1
  8. data/spec/rack/jpmobile/emoticon_spec.rb +17 -9
  9. data/spec/rack/jpmobile/filter_spec.rb +92 -18
  10. data/spec/rack_helper.rb +2 -0
  11. data/spec/spec_helper.rb +0 -26
  12. data/test/rails/overrides/spec/helpers/helpers_spec.rb +1 -1
  13. data/test/rails/rails_root/app/controllers/application_controller.rb +5 -0
  14. data/test/rails/rails_root/app/controllers/docomo_guid_always_controller.rb +3 -0
  15. data/test/rails/rails_root/app/controllers/docomo_guid_base_controller.rb +5 -0
  16. data/test/rails/rails_root/app/controllers/docomo_guid_docomo_controller.rb +3 -0
  17. data/test/rails/rails_root/app/controllers/filter_controller.rb +3 -0
  18. data/test/rails/rails_root/app/controllers/filter_controller_base.rb +25 -0
  19. data/test/rails/rails_root/app/controllers/hankaku_filter_controller.rb +3 -0
  20. data/test/rails/rails_root/app/controllers/hankaku_input_filter_controller.rb +7 -0
  21. data/test/rails/rails_root/app/controllers/links_controller.rb +28 -0
  22. data/test/rails/rails_root/app/controllers/mobile_spec_controller.rb +5 -0
  23. data/test/rails/rails_root/app/controllers/template_path_controller.rb +9 -0
  24. data/test/rails/rails_root/app/controllers/trans_sid_always_and_session_off_controller.rb +4 -0
  25. data/test/rails/rails_root/app/controllers/trans_sid_always_controller.rb +3 -0
  26. data/test/rails/rails_root/app/controllers/trans_sid_base_controller.rb +40 -0
  27. data/test/rails/rails_root/app/controllers/trans_sid_metal_controller.rb +15 -0
  28. data/test/rails/rails_root/app/controllers/trans_sid_mobile_controller.rb +3 -0
  29. data/test/rails/rails_root/app/controllers/trans_sid_none_controller.rb +3 -0
  30. data/test/rails/rails_root/app/helpers/application_helper.rb +2 -0
  31. data/test/rails/rails_root/app/models/user.rb +2 -0
  32. data/test/rails/rails_root/autotest/discover.rb +2 -0
  33. data/test/rails/rails_root/config/application.rb +42 -0
  34. data/test/rails/rails_root/config/boot.rb +13 -0
  35. data/test/rails/rails_root/config/environment.rb +5 -0
  36. data/test/rails/rails_root/config/environments/development.rb +26 -0
  37. data/test/rails/rails_root/config/environments/production.rb +49 -0
  38. data/test/rails/rails_root/config/environments/test.rb +35 -0
  39. data/test/rails/rails_root/config/initializers/backtrace_silencers.rb +7 -0
  40. data/test/rails/rails_root/config/initializers/inflections.rb +10 -0
  41. data/test/rails/rails_root/config/initializers/jpmobile_generator.rb +2 -0
  42. data/test/rails/rails_root/config/initializers/mime_types.rb +5 -0
  43. data/test/rails/rails_root/config/initializers/secret_token.rb +7 -0
  44. data/test/rails/rails_root/config/initializers/session_store.rb +2 -0
  45. data/test/rails/rails_root/config/routes.rb +7 -0
  46. data/test/rails/rails_root/db/migrate/001_add_sessions_table.rb +16 -0
  47. data/test/rails/rails_root/db/migrate/20100824062306_create_users.rb +13 -0
  48. data/test/rails/rails_root/db/schema.rb +31 -0
  49. data/test/rails/rails_root/db/seeds.rb +7 -0
  50. data/test/rails/rails_root/spec/helpers/helpers_spec.rb +15 -0
  51. data/test/rails/rails_root/spec/requests/docomo_guid_spec.rb +102 -0
  52. data/test/rails/rails_root/spec/requests/docomo_spec.rb +33 -0
  53. data/test/rails/rails_root/spec/requests/emobile_spec.rb +53 -0
  54. data/test/rails/rails_root/spec/requests/filter_spec.rb +221 -0
  55. data/test/rails/rails_root/spec/requests/helpers_spec.rb +187 -0
  56. data/test/rails/rails_root/spec/requests/pc_spec.rb +22 -0
  57. data/test/rails/rails_root/spec/requests/softbank_emulator_spec.rb +21 -0
  58. data/test/rails/rails_root/spec/requests/template_path_spec.rb +234 -0
  59. data/test/rails/rails_root/spec/requests/trans_sid_spec.rb +207 -0
  60. data/test/rails/rails_root/spec/spec_helper.rb +32 -0
  61. data/test/rails/rails_root/test/performance/browsing_test.rb +9 -0
  62. data/test/rails/rails_root/test/test_helper.rb +13 -0
  63. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile-ipaddresses.rb +18 -0
  64. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/abstract_ip_addresses.rb +23 -0
  65. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/au.rb +40 -0
  66. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/docomo.rb +22 -0
  67. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/emobile.rb +15 -0
  68. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/softbank.rb +20 -0
  69. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/willcom.rb +158 -0
  70. data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/lib/jpmobile-terminfo.rb +9 -0
  71. data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/lib/jpmobile/mobile/terminfo.rb +62 -0
  72. data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/lib/jpmobile/mobile/terminfo/docomo.rb +739 -0
  73. data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/spec/spec_helper.rb +2 -0
  74. data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/spec/terminfo_spec.rb +54 -0
  75. data/test/rails/rails_root/vendor/plugins/jpmobile/init.rb +3 -0
  76. data/test/rails/rails_root/vendor/plugins/jpmobile/install.rb +1 -0
  77. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile.rb +56 -0
  78. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/datum_conv.rb +72 -0
  79. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/docomo_guid.rb +43 -0
  80. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/email.rb +18 -0
  81. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon.rb +141 -0
  82. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/au.rb +1287 -0
  83. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/conversion_table.rb +3909 -0
  84. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/docomo.rb +255 -0
  85. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/softbank.rb +477 -0
  86. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/z_combine.rb +33 -0
  87. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/encoding.rb +29 -0
  88. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/filter.rb +113 -0
  89. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/helpers.rb +174 -0
  90. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_controller.rb +31 -0
  91. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_view.rb +87 -0
  92. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/abstract_mobile.rb +99 -0
  93. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/android.rb +10 -0
  94. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/au.rb +108 -0
  95. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/ddipocket.rb +12 -0
  96. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/docomo.rb +128 -0
  97. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/emobile.rb +16 -0
  98. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/iphone.rb +26 -0
  99. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/smart_phone.rb +21 -0
  100. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/softbank.rb +62 -0
  101. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/vodafone.rb +17 -0
  102. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/willcom.rb +28 -0
  103. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/windows_phone.rb +10 -0
  104. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/position.rb +68 -0
  105. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack.rb +49 -0
  106. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/filter.rb +50 -0
  107. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/mobile_carrier.rb +33 -0
  108. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/params_filter.rb +47 -0
  109. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rails.rb +23 -0
  110. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/request_with_mobile.rb +45 -0
  111. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/trans_sid.rb +133 -0
  112. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/util.rb +97 -0
  113. data/test/rails/rails_root/vendor/plugins/jpmobile/tmp/conversion-table.rb +2588 -0
  114. data/test/rails/rails_root/vendor/plugins/jpmobile/tmp/utf8_to_image.rb +1407 -0
  115. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/emoji/genregexp.rb +47 -0
  116. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_au_emoticon_table.rb +34 -0
  117. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_docomo_emoticon_table.rb +33 -0
  118. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_emoticon_conversion_table.rb +107 -0
  119. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_softbank_emoticon_table.rb +31 -0
  120. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/list_gps_unsupported_au.rb +23 -0
  121. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile-ipaddresses.rb +18 -0
  122. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/abstract_ip_addresses.rb +23 -0
  123. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/au.rb +40 -0
  124. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/docomo.rb +22 -0
  125. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/emobile.rb +15 -0
  126. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/softbank.rb +20 -0
  127. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/willcom.rb +158 -0
  128. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/lib/jpmobile-terminfo.rb +9 -0
  129. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/lib/jpmobile/mobile/terminfo.rb +62 -0
  130. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/lib/jpmobile/mobile/terminfo/docomo.rb +739 -0
  131. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/spec/spec_helper.rb +2 -0
  132. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/spec/terminfo_spec.rb +54 -0
  133. metadata +368 -75
  134. data/.rspec +0 -5
  135. data/jpmobile.gemspec +0 -237
  136. data/test/rails/.gitignore +0 -1
  137. data/test/rails/overrides/.rspec +0 -5
  138. data/test/rails/overrides/Gemfile +0 -33
  139. data/test/rails/overrides/app/views/filter/index.html.erb +0 -0
  140. data/test/rails/overrides/app/views/hankaku_filter/index.html.erb +0 -0
  141. data/test/rails/overrides/app/views/hankaku_input_filter/index.html.erb +0 -0
  142. data/test/rails/overrides/app/views/hankaku_input_filter/index_xhtml.html.erb +0 -1
  143. data/test/rails/overrides/app/views/layouts/xhtml.html.erb +0 -12
  144. data/test/rails/overrides/app/views/links/au_gps.html.erb +0 -1
  145. data/test/rails/overrides/app/views/links/au_location.html.erb +0 -1
  146. data/test/rails/overrides/app/views/links/docomo_foma_gps.html.erb +0 -1
  147. data/test/rails/overrides/app/views/links/docomo_openiarea.html.erb +0 -1
  148. data/test/rails/overrides/app/views/links/docomo_utn.html.erb +0 -1
  149. data/test/rails/overrides/app/views/links/link.html.erb +0 -1
  150. data/test/rails/overrides/app/views/links/show_all.html.erb +0 -1
  151. data/test/rails/overrides/app/views/links/softbank_location.html.erb +0 -1
  152. data/test/rails/overrides/app/views/links/willcom_location.html.erb +0 -1
  153. data/test/rails/overrides/app/views/template_path/_partial.html.erb +0 -1
  154. data/test/rails/overrides/app/views/template_path/_partial_mobile.html.erb +0 -1
  155. data/test/rails/overrides/app/views/template_path/_partial_mobile_docomo.html.erb +0 -1
  156. data/test/rails/overrides/app/views/template_path/_partial_smart_phone.html.erb +0 -1
  157. data/test/rails/overrides/app/views/template_path/_partial_smart_phone_iphone.html.erb +0 -1
  158. data/test/rails/overrides/app/views/template_path/index.html.erb +0 -1
  159. data/test/rails/overrides/app/views/template_path/index_mobile.html.erb +0 -1
  160. data/test/rails/overrides/app/views/template_path/index_mobile_docomo.html.erb +0 -1
  161. data/test/rails/overrides/app/views/template_path/index_smart_phone.html.erb +0 -1
  162. data/test/rails/overrides/app/views/template_path/index_smart_phone_iphone.html.erb +0 -1
  163. data/test/rails/overrides/app/views/template_path/partial.html.erb +0 -2
  164. data/test/rails/overrides/app/views/template_path/show_mobile.html.erb +0 -1
  165. data/test/rails/overrides/app/views/template_path/show_mobile_docomo.html.erb +0 -1
  166. data/test/rails/overrides/spec/rcov.opts +0 -2
@@ -0,0 +1,2 @@
1
+ Rails.application.config.session_store :active_record_store, :key => '_session_id'
2
+ Rails.application.config.session_options = {:cookie_only => false}
@@ -0,0 +1,7 @@
1
+ RailsRoot::Application.routes.draw do
2
+ resources :users
3
+ namespace :admin do
4
+ resources :users
5
+ end
6
+ match ':controller(/:action(/:id(.:format)))'
7
+ end
@@ -0,0 +1,16 @@
1
+ class AddSessionsTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :sessions do |t|
4
+ t.string :session_id, :null => false
5
+ t.text :data
6
+ t.timestamps
7
+ end
8
+
9
+ add_index :sessions, :session_id
10
+ add_index :sessions, :updated_at
11
+ end
12
+
13
+ def self.down
14
+ drop_table :sessions
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :name
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :users
12
+ end
13
+ end
@@ -0,0 +1,31 @@
1
+ # This file is auto-generated from the current state of the database. Instead
2
+ # of editing this file, please use the migrations feature of Active Record to
3
+ # incrementally modify your database, and then regenerate this schema definition.
4
+ #
5
+ # Note that this schema.rb definition is the authoritative source for your
6
+ # database schema. If you need to create the application database on another
7
+ # system, you should be using db:schema:load, not running all the migrations
8
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
9
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
10
+ #
11
+ # It's strongly recommended to check this file into your version control system.
12
+
13
+ ActiveRecord::Schema.define(:version => 20100824062306) do
14
+
15
+ create_table "sessions", :force => true do |t|
16
+ t.string "session_id", :null => false
17
+ t.text "data"
18
+ t.datetime "created_at"
19
+ t.datetime "updated_at"
20
+ end
21
+
22
+ add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
23
+ add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
24
+
25
+ create_table "users", :force => true do |t|
26
+ t.string "name"
27
+ t.datetime "created_at"
28
+ t.datetime "updated_at"
29
+ end
30
+
31
+ end
@@ -0,0 +1,7 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3
+ #
4
+ # Examples:
5
+ #
6
+ # cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
7
+ # Mayor.create(:name => 'Daley', :city => cities.first)
@@ -0,0 +1,15 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe Jpmobile::Helpers do
6
+ include Jpmobile::Helpers
7
+ it "docomo_guid_link_to が guid=ON を付けたリンクを生成すること" do
8
+ docomo_guid_link_to("STRING", :controller => "filter", :action => "rawdata").should == %{<a href="/filter/rawdata?guid=ON">STRING</a>}
9
+ end
10
+
11
+ it "softbank_location_link_to がリンク先にパラメータを含んでいても正常に動作すること" do
12
+ # http://d.hatena.ne.jp/mizincogrammer/20090123/1232702067
13
+ softbank_location_link_to("STRING", :controller => "filter", :action => "rawdata", :p => "param").should == %{<a href="location:auto?url=http://test.host/filter/rawdata&amp;p=param">STRING</a>}
14
+ end
15
+ end
@@ -0,0 +1,102 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ shared_examples_for "docomo_guid が起動しないとき" do
6
+ it "で link_to の自動書き換えが行われない" do
7
+ get "/#{@controller}/link", {}, {"HTTP_USER_AGENT" => @user_agent}
8
+
9
+ response.should have_tag('a') do |a|
10
+ a.first['href'].should match(/^\/.+?\/link$/)
11
+ end
12
+ end
13
+ end
14
+
15
+ shared_examples_for "docomo_guid が起動するとき" do
16
+ it "で link_to の自動書き換えが行われる" do
17
+ get "/#{@controller}/link", {}, {"HTTP_USER_AGENT" => @user_agent}
18
+
19
+ response.should have_tag('a') do |a|
20
+ a.first['href'].should match(/^\/.+?\/link\?guid=ON$/)
21
+ end
22
+ end
23
+ end
24
+
25
+ describe DocomoGuidBaseController, "という docomo_guid が有効になっていないコントローラ" do
26
+ before(:each) do
27
+ @controller = "docomo_guid_base"
28
+ @user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"
29
+ end
30
+
31
+ it "の docomo_guid_mode は nil" do
32
+ get "/#{@controller}/link", {}, {"HTTP_USER_AGENT" => @user_agent}
33
+
34
+ controller.docomo_guid_mode.should be_nil
35
+ end
36
+ it_should_behave_like "docomo_guid が起動しないとき"
37
+ end
38
+
39
+ describe DocomoGuidAlwaysController, "という docomo_guid :always が指定されているコントローラ" do
40
+ before(:each) do
41
+ @controller = "docomo_guid_always"
42
+ @user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"
43
+ end
44
+
45
+ it "の docomo_guid_always は :always" do
46
+ get "/#{@controller}/link", {}, {"HTTP_USER_AGENT" => @user_agent}
47
+
48
+ controller.docomo_guid_mode.should == :always
49
+ end
50
+ it_should_behave_like "docomo_guid が起動するとき"
51
+ end
52
+
53
+ describe DocomoGuidDocomoController, "という docomo_guid :docomo が指定されているコントローラ" do
54
+ before(:each) do
55
+ @controller = "docomo_guid_docomo"
56
+ @user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"
57
+ end
58
+
59
+ it "の docomo_guid_mode は :docomo" do
60
+ get "/#{@controller}/link", {}, {"HTTP_USER_AGENT" => @user_agent}
61
+
62
+ controller.docomo_guid_mode.should == :docomo
63
+ end
64
+ end
65
+
66
+ def describe_mobile_with_ua(user_agent, &block)
67
+ describe("docomo_guid :docomo が指定されているコントローラに #{user_agent} からアクセスしたとき") do
68
+ before do
69
+ @controller = "docomo_guid_docomo"
70
+ @user_agent = user_agent
71
+ end
72
+ instance_eval(&block)
73
+ end
74
+ end
75
+
76
+ describe_mobile_with_ua "DoCoMo/2.0 SH902i(c100;TB;W24H12)" do
77
+ it_should_behave_like "docomo_guid が起動するとき"
78
+ end
79
+
80
+ describe_mobile_with_ua "J-PHONE/3.0/V301D" do
81
+ it_should_behave_like "docomo_guid が起動しないとき"
82
+ end
83
+
84
+ describe_mobile_with_ua "KDDI-CA32 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0" do
85
+ it_should_behave_like "docomo_guid が起動しないとき"
86
+ end
87
+
88
+ describe_mobile_with_ua "SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1" do
89
+ it_should_behave_like "docomo_guid が起動しないとき"
90
+ end
91
+
92
+ describe_mobile_with_ua "Vodafone/1.0/V903T/TJ001 Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0" do
93
+ it_should_behave_like "docomo_guid が起動しないとき"
94
+ end
95
+
96
+ describe_mobile_with_ua "DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)" do
97
+ it_should_behave_like "docomo_guid が起動しないとき"
98
+ end
99
+
100
+ describe_mobile_with_ua "DoCoMo/2.0/SO502i (compatible; Y!J-SRD/1.0; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-27.html)" do
101
+ it_should_behave_like "docomo_guid が起動しないとき"
102
+ end
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe "DoCoMo SH902i からのアクセス" do
6
+ it "request.mobile は Docomo のインスタンスであるべき" do
7
+ get "/mobile_spec/index", {}, {"HTTP_USER_AGENT" => "DoCoMo/2.0 SH902i(c100;TB;W24H12)"}
8
+
9
+ request.mobile.should be_an_instance_of(Jpmobile::Mobile::Docomo)
10
+ end
11
+ it "request.mobile? は true であるべき" do
12
+ get "/mobile_spec/index", {}, {"HTTP_USER_AGENT" => "DoCoMo/2.0 SH902i(c100;TB;W24H12)"}
13
+
14
+ request.mobile?.should be_true
15
+ end
16
+ end
17
+
18
+ describe "DoCoMo SH902i からguid付きのアクセス" do
19
+ before(:each) do
20
+ @headers = {"HTTP_USER_AGENT" => "DoCoMo/2.0 SH902i(c100;TB;W24H12)", 'HTTP_X_DCMGUID' => "000000a"}
21
+ end
22
+
23
+ it "guidを正しく取得できること" do
24
+ get "/mobile_spec/index", {}, @headers
25
+
26
+ request.mobile.guid.should == "000000a"
27
+ end
28
+ it "ident_subscriberでも正しく取得できること" do
29
+ get "/mobile_spec/index", {}, @headers
30
+
31
+ request.mobile.ident_subscriber.should == "000000a"
32
+ end
33
+ end
@@ -0,0 +1,53 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe "H11T モバイルブラウザからのアクセス" do
6
+ before do
7
+ @headers = {
8
+ "HTTP_USER_AGENT" => "emobile/1.0.0 (H11T; like Gecko; Wireless) NetFront/3.4",
9
+ "HTTP_X_EM_UID" => "u00000000000000000",
10
+ "REMOTE_ADDR" => "117.55.1.232",
11
+ }
12
+ end
13
+
14
+ it "request.mobile は Emobile のインスタンスであること" do
15
+ get "/mobile_spec/index", {}, @headers
16
+
17
+ request.mobile.should be_an_instance_of(Jpmobile::Mobile::Emobile)
18
+ end
19
+ it "request.mobile? は true であること" do
20
+ get "/mobile_spec/index", {}, @headers
21
+
22
+ request.mobile?.should be_true
23
+ end
24
+ it "のsubscribe番号を取得できること" do
25
+ get "/mobile_spec/index", {}, @headers
26
+
27
+ request.mobile.ident_subscriber.should == "u00000000000000000"
28
+ end
29
+ it "のIPアドレス空間を正しく検証できること" do
30
+ get "/mobile_spec/index", {}, @headers
31
+
32
+ request.mobile.valid_ip?.should be_true
33
+ end
34
+ end
35
+
36
+ describe "S11HT からのアクセス" do
37
+ before do
38
+ @headers = {
39
+ "HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.7) S11HT",
40
+ }
41
+ end
42
+
43
+ it "request.mobile は Emobile のインスタンスであること" do
44
+ get "/mobile_spec/index", {}, @headers
45
+
46
+ request.mobile.should be_an_instance_of(Jpmobile::Mobile::Emobile)
47
+ end
48
+ it "request.mobile? は true であること" do
49
+ get "/mobile_spec/index", {}, @headers
50
+
51
+ request.mobile?.should be_true
52
+ end
53
+ end
@@ -0,0 +1,221 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+
4
+ describe "jpmobile integration spec" do
5
+ include Jpmobile::Util
6
+
7
+ shared_examples_for "hankaku_filter :input => true のとき" do
8
+ it "はtextareaの中では半角に変換されないこと" do
9
+ get "/#{@controller}/textarea", {}, {"HTTP_USER_AGENT" => @user_agent}
10
+ body.should == send(@conversion_method, '<textarea hoge="fuu">アブラカダブラ</textarea>')
11
+ end
12
+ it "はinputのvalueの中では半角に変換されないこと" do
13
+ get "/#{@controller}/input_tag", {}, {"HTTP_USER_AGENT" => @user_agent}
14
+ body.should == send(@conversion_method, '<input hoge="fuu" value="アブラカダブラ">')
15
+ end
16
+ end
17
+
18
+ shared_examples_for "hankaku_filter :input => false のとき" do
19
+ it "はtextareaの中でも半角に変換されること" do
20
+ get "/#{@controller}/textarea", {}, {"HTTP_USER_AGENT" => @user_agent}
21
+ body.should == send(@conversion_method, '<textarea hoge="fuu">アブラカダブラ</textarea>')
22
+ end
23
+ it "はinputのvalueの中も半角に変換されること" do
24
+ get "/#{@controller}/input_tag", {}, {"HTTP_USER_AGENT" => @user_agent}
25
+ body.should == send(@conversion_method, '<input hoge="fuu" value="アブラカダブラ" />')
26
+ end
27
+ end
28
+
29
+ shared_examples_for "文字コードフィルタが動作しているとき" do
30
+ it "はhtml以外は変換しないこと" do
31
+ get "/#{@controller}/rawdata", {}, {"HTTP_USER_AGENT" => @user_agent}
32
+ body.should == "アブラカダブラ"
33
+ headers['Content-Type'].should_not =~ /charset/i
34
+ end
35
+ it "response.bodyが空のときは文字コードを変更しないこと" do
36
+ get "/#{@controller}/empty", {}, {"HTTP_USER_AGENT" => @user_agent}
37
+ headers['Content-Type'].should =~ /utf-8/i
38
+ end
39
+ end
40
+
41
+ shared_examples_for "Shift_JISで通信する端末との通信" do
42
+ it "はShift_JISで携帯に送出されること" do
43
+ get "/#{@controller}/abracadabra_utf8", {}, {"HTTP_USER_AGENT" => @user_agent}
44
+ body.should == utf8_to_sjis("アブラカダブラ")
45
+ headers['Content-Type'].should =~ /Shift_JIS/i
46
+ end
47
+ it "はxhtmlでもShift_JISで携帯に送出されること" do
48
+ get "/#{@controller}/abracadabra_xhtml_utf8", {}, {"HTTP_USER_AGENT" => @user_agent}
49
+
50
+ body.should == utf8_to_sjis("アブラカダブラ")
51
+ headers['Content-Type'].should =~ /Shift_JIS/i
52
+ end
53
+ it "はShift_JISで渡されたパラメタがparamsにUTF-8に変換されて格納されること" do
54
+ get "/#{@controller}", {:q => utf8_to_sjis("アブラカダブラ")}, {"HTTP_USER_AGENT" => @user_agent}
55
+ assigns(:q).should == utf8("アブラカダブラ")
56
+ end
57
+ it "は半角カナのparamsを変換しないこと" do
58
+ # アブラカダブラ半角,SJIS
59
+ get "/#{@controller}", {:q => sjis("\261\314\336\327\266\300\336\314\336\327")}, {"HTTP_USER_AGENT" => @user_agent}
60
+ assigns(:q).should == utf8("アブラカダブラ")
61
+ end
62
+ it_should_behave_like "文字コードフィルタが動作しているとき"
63
+ end
64
+
65
+ shared_examples_for "UTF-8で通信する端末との通信" do
66
+ it "はUTF-8で携帯に送出されること" do
67
+ get "/#{@controller}/abracadabra_utf8", {}, {"HTTP_USER_AGENT" => @user_agent}
68
+ body.should == "アブラカダブラ"
69
+ headers['Content-Type'].should =~ /utf-8/i
70
+ end
71
+ it "はxhtmlでもUTF-8で携帯に送出されること" do
72
+ get "/#{@controller}/abracadabra_xhtml_utf8", {}, {"HTTP_USER_AGENT" => @user_agent}
73
+ body.should == "アブラカダブラ"
74
+ headers['Content-Type'].should =~ /utf-8/i
75
+ end
76
+ it "はparamsにUTF-8のまま格納されること" do
77
+ get "/#{@controller}/index", {:q => "アブラカダブラ"}, {"HTTP_USER_AGENT" => @user_agent}
78
+ assigns(:q).should == utf8("アブラカダブラ")
79
+ end
80
+ it "は半角カナのparamsを変換しないこと" do
81
+ get "/#{@controller}/index", {:q => "アブラカダブラ"}, {"HTTP_USER_AGENT" => @user_agent}
82
+ assigns(:q).should == utf8("アブラカダブラ")
83
+ end
84
+ it_should_behave_like "文字コードフィルタが動作しているとき"
85
+ end
86
+
87
+ shared_examples_for "Shift_JISで通信する端末との通信(半角変換付き)" do
88
+ it "は半角に変換されShift_JISで携帯に送出されること" do
89
+ get "/#{@controller}/abracadabra_utf8", {}, {"HTTP_USER_AGENT" => @user_agent}
90
+ body.should == sjis("\261\314\336\327\266\300\336\314\336\327") # アブラカダブラ半角,SJIS
91
+ headers['Content-Type'].should =~ /Shift_JIS/
92
+ end
93
+ it "はShift_JISで渡されたパラメタがparamsにUTF-8に変換されて格納されること" do
94
+ get "/#{@controller}/index", {:q => utf8_to_sjis("アブラカダブラ")}, {"HTTP_USER_AGENT" => @user_agent}
95
+ assigns(:q).should == utf8("アブラカダブラ")
96
+ end
97
+ it "は半角Shift_JISで渡されたパラメタがparamsに全角UTF-8に変換されて格納されること" do
98
+ # アブラカダブラ半角,SJIS
99
+ get "/#{@controller}/index", {:q => sjis("\261\314\336\327\266\300\336\314\336\327")}, {"HTTP_USER_AGENT" => @user_agent}
100
+ assigns(:q).should == utf8("アブラカダブラ")
101
+ end
102
+ it_should_behave_like "文字コードフィルタが動作しているとき"
103
+ end
104
+
105
+ shared_examples_for "UTF-8で通信する端末との通信(半角変換付き)" do
106
+ it "はUTF-8半角で携帯に送出されること" do
107
+ get "/#{@controller}/abracadabra_utf8", {}, {"HTTP_USER_AGENT" => @user_agent}
108
+ body.should == "アブラカダブラ"
109
+ headers['Content-Type'].should =~ /utf-8/i
110
+ end
111
+ it "はparamsにUTF-8のまま格納されること" do
112
+ get "/#{@controller}/index", {:q => "アブラカダブラ"}, {"HTTP_USER_AGENT" => @user_agent}
113
+ assigns(:q).should == utf8("アブラカダブラ")
114
+ end
115
+ it "は半角で渡されたparamsを全角に変換して格納すること" do
116
+ get "/#{@controller}/index", {:q => "アブラカダブラ"}, {"HTTP_USER_AGENT" => @user_agent}
117
+ assigns(:q).should == utf8("アブラカダブラ")
118
+ end
119
+ it_should_behave_like "文字コードフィルタが動作しているとき"
120
+ end
121
+
122
+ #
123
+ # PCからのアクセス
124
+ #
125
+ describe FilterController, "PCからのアクセス" do
126
+ before(:each) do
127
+ @user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"
128
+ @controller = "filter"
129
+ end
130
+ it_should_behave_like "UTF-8で通信する端末との通信"
131
+ end
132
+
133
+ describe HankakuFilterController, "PCからのアクセス" do
134
+ before(:each) do
135
+ @user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"
136
+ @controller = "hankaku_filter"
137
+ end
138
+ it_should_behave_like "UTF-8で通信する端末との通信"
139
+ end
140
+
141
+ #
142
+ # 携帯からのアクセス
143
+ #
144
+ describe FilterController, "DoCoMo SH902i からのアクセス" do
145
+ before do
146
+ @user_agent = "DoCoMo/2.0 SH902i(c100;TB;W24H12)"
147
+ @controller = "filter"
148
+ end
149
+ it_should_behave_like "Shift_JISで通信する端末との通信"
150
+ end
151
+
152
+ describe FilterController, "au CA32 からのアクセス" do
153
+ before do
154
+ @user_agent = "KDDI-CA32 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0"
155
+ @controller = "filter"
156
+ end
157
+ it_should_behave_like "Shift_JISで通信する端末との通信"
158
+ end
159
+
160
+ describe FilterController, "Vodafone V903T からのアクセス" do
161
+ before do
162
+ @user_agent = "Vodafone/1.0/V903T/TJ001 Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0"
163
+ @controller = "filter"
164
+ end
165
+ it_should_behave_like "UTF-8で通信する端末との通信"
166
+ end
167
+
168
+ describe FilterController, "SoftBank 910T からのアクセス" do
169
+ before do
170
+ @user_agent = "SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1"
171
+ @controller = "filter"
172
+ end
173
+ it_should_behave_like "UTF-8で通信する端末との通信"
174
+ end
175
+
176
+ #
177
+ # 半角フィルタ
178
+ #
179
+ describe HankakuFilterController, "DoCoMo SH902i からのアクセス" do
180
+ before do
181
+ @user_agent = "DoCoMo/2.0 SH902i(c100;TB;W24H12)"
182
+ @controller = "hankaku_filter"
183
+ @conversion_method = :utf8_to_sjis
184
+ end
185
+ it_should_behave_like "Shift_JISで通信する端末との通信(半角変換付き)"
186
+ it_should_behave_like "hankaku_filter :input => false のとき"
187
+ end
188
+
189
+ describe HankakuFilterController, "SoftBank 910T からのアクセス" do
190
+ before do
191
+ @user_agent = "SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1"
192
+ @controller = "hankaku_filter"
193
+ @conversion_method = :utf8
194
+ end
195
+ it_should_behave_like "UTF-8で通信する端末との通信(半角変換付き)"
196
+ it_should_behave_like "hankaku_filter :input => false のとき"
197
+ end
198
+
199
+ #
200
+ # 半角フィルタ(input付き)
201
+ #
202
+ describe HankakuInputFilterController, "DoCoMo SH902i からのアクセス" do
203
+ before do
204
+ @user_agent = "DoCoMo/2.0 SH902i(c100;TB;W24H12)"
205
+ @controller = "hankaku_input_filter"
206
+ @conversion_method = :utf8_to_sjis
207
+ end
208
+ it_should_behave_like "Shift_JISで通信する端末との通信(半角変換付き)"
209
+ it_should_behave_like "hankaku_filter :input => true のとき"
210
+ end
211
+
212
+ describe HankakuInputFilterController, "SoftBank 910T からのアクセス" do
213
+ before do
214
+ @user_agent = "SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1"
215
+ @controller = "hankaku_input_filter"
216
+ @conversion_method = :utf8
217
+ end
218
+ it_should_behave_like "UTF-8で通信する端末との通信(半角変換付き)"
219
+ it_should_behave_like "hankaku_filter :input => true のとき"
220
+ end
221
+ end