jpmobile 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +10 -8
- data/README.rdoc +1 -1
- data/Rakefile +13 -5
- data/VERSION.yml +1 -1
- data/lib/jpmobile/helpers.rb +1 -1
- data/lib/jpmobile/rack/filter.rb +2 -7
- data/lib/tasks/jpmobile_tasks.rake +1 -1
- data/spec/rack/jpmobile/emoticon_spec.rb +17 -9
- data/spec/rack/jpmobile/filter_spec.rb +92 -18
- data/spec/rack_helper.rb +2 -0
- data/spec/spec_helper.rb +0 -26
- data/test/rails/overrides/spec/helpers/helpers_spec.rb +1 -1
- data/test/rails/rails_root/app/controllers/application_controller.rb +5 -0
- data/test/rails/rails_root/app/controllers/docomo_guid_always_controller.rb +3 -0
- data/test/rails/rails_root/app/controllers/docomo_guid_base_controller.rb +5 -0
- data/test/rails/rails_root/app/controllers/docomo_guid_docomo_controller.rb +3 -0
- data/test/rails/rails_root/app/controllers/filter_controller.rb +3 -0
- data/test/rails/rails_root/app/controllers/filter_controller_base.rb +25 -0
- data/test/rails/rails_root/app/controllers/hankaku_filter_controller.rb +3 -0
- data/test/rails/rails_root/app/controllers/hankaku_input_filter_controller.rb +7 -0
- data/test/rails/rails_root/app/controllers/links_controller.rb +28 -0
- data/test/rails/rails_root/app/controllers/mobile_spec_controller.rb +5 -0
- data/test/rails/rails_root/app/controllers/template_path_controller.rb +9 -0
- data/test/rails/rails_root/app/controllers/trans_sid_always_and_session_off_controller.rb +4 -0
- data/test/rails/rails_root/app/controllers/trans_sid_always_controller.rb +3 -0
- data/test/rails/rails_root/app/controllers/trans_sid_base_controller.rb +40 -0
- data/test/rails/rails_root/app/controllers/trans_sid_metal_controller.rb +15 -0
- data/test/rails/rails_root/app/controllers/trans_sid_mobile_controller.rb +3 -0
- data/test/rails/rails_root/app/controllers/trans_sid_none_controller.rb +3 -0
- data/test/rails/rails_root/app/helpers/application_helper.rb +2 -0
- data/test/rails/rails_root/app/models/user.rb +2 -0
- data/test/rails/rails_root/autotest/discover.rb +2 -0
- data/test/rails/rails_root/config/application.rb +42 -0
- data/test/rails/rails_root/config/boot.rb +13 -0
- data/test/rails/rails_root/config/environment.rb +5 -0
- data/test/rails/rails_root/config/environments/development.rb +26 -0
- data/test/rails/rails_root/config/environments/production.rb +49 -0
- data/test/rails/rails_root/config/environments/test.rb +35 -0
- data/test/rails/rails_root/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails/rails_root/config/initializers/inflections.rb +10 -0
- data/test/rails/rails_root/config/initializers/jpmobile_generator.rb +2 -0
- data/test/rails/rails_root/config/initializers/mime_types.rb +5 -0
- data/test/rails/rails_root/config/initializers/secret_token.rb +7 -0
- data/test/rails/rails_root/config/initializers/session_store.rb +2 -0
- data/test/rails/rails_root/config/routes.rb +7 -0
- data/test/rails/rails_root/db/migrate/001_add_sessions_table.rb +16 -0
- data/test/rails/rails_root/db/migrate/20100824062306_create_users.rb +13 -0
- data/test/rails/rails_root/db/schema.rb +31 -0
- data/test/rails/rails_root/db/seeds.rb +7 -0
- data/test/rails/rails_root/spec/helpers/helpers_spec.rb +15 -0
- data/test/rails/rails_root/spec/requests/docomo_guid_spec.rb +102 -0
- data/test/rails/rails_root/spec/requests/docomo_spec.rb +33 -0
- data/test/rails/rails_root/spec/requests/emobile_spec.rb +53 -0
- data/test/rails/rails_root/spec/requests/filter_spec.rb +221 -0
- data/test/rails/rails_root/spec/requests/helpers_spec.rb +187 -0
- data/test/rails/rails_root/spec/requests/pc_spec.rb +22 -0
- data/test/rails/rails_root/spec/requests/softbank_emulator_spec.rb +21 -0
- data/test/rails/rails_root/spec/requests/template_path_spec.rb +234 -0
- data/test/rails/rails_root/spec/requests/trans_sid_spec.rb +207 -0
- data/test/rails/rails_root/spec/spec_helper.rb +32 -0
- data/test/rails/rails_root/test/performance/browsing_test.rb +9 -0
- data/test/rails/rails_root/test/test_helper.rb +13 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile-ipaddresses.rb +18 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/abstract_ip_addresses.rb +23 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/au.rb +40 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/docomo.rb +22 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/emobile.rb +15 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/softbank.rb +20 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/willcom.rb +158 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/lib/jpmobile-terminfo.rb +9 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/lib/jpmobile/mobile/terminfo.rb +62 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/lib/jpmobile/mobile/terminfo/docomo.rb +739 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/spec/spec_helper.rb +2 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/spec/terminfo_spec.rb +54 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/init.rb +3 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/install.rb +1 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile.rb +56 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/datum_conv.rb +72 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/docomo_guid.rb +43 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/email.rb +18 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon.rb +141 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/au.rb +1287 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/conversion_table.rb +3909 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/docomo.rb +255 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/softbank.rb +477 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/z_combine.rb +33 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/encoding.rb +29 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/filter.rb +113 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/helpers.rb +174 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_controller.rb +31 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_view.rb +87 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/abstract_mobile.rb +99 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/android.rb +10 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/au.rb +108 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/ddipocket.rb +12 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/docomo.rb +128 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/emobile.rb +16 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/iphone.rb +26 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/smart_phone.rb +21 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/softbank.rb +62 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/vodafone.rb +17 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/willcom.rb +28 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/windows_phone.rb +10 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/position.rb +68 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack.rb +49 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/filter.rb +50 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/mobile_carrier.rb +33 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/params_filter.rb +47 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rails.rb +23 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/request_with_mobile.rb +45 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/trans_sid.rb +133 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/util.rb +97 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/tmp/conversion-table.rb +2588 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/tmp/utf8_to_image.rb +1407 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/emoji/genregexp.rb +47 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_au_emoticon_table.rb +34 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_docomo_emoticon_table.rb +33 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_emoticon_conversion_table.rb +107 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_softbank_emoticon_table.rb +31 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/list_gps_unsupported_au.rb +23 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile-ipaddresses.rb +18 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/abstract_ip_addresses.rb +23 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/au.rb +40 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/docomo.rb +22 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/emobile.rb +15 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/softbank.rb +20 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/willcom.rb +158 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/lib/jpmobile-terminfo.rb +9 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/lib/jpmobile/mobile/terminfo.rb +62 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/lib/jpmobile/mobile/terminfo/docomo.rb +739 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/spec/spec_helper.rb +2 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/spec/terminfo_spec.rb +54 -0
- metadata +368 -75
- data/.rspec +0 -5
- data/jpmobile.gemspec +0 -237
- data/test/rails/.gitignore +0 -1
- data/test/rails/overrides/.rspec +0 -5
- data/test/rails/overrides/Gemfile +0 -33
- data/test/rails/overrides/app/views/filter/index.html.erb +0 -0
- data/test/rails/overrides/app/views/hankaku_filter/index.html.erb +0 -0
- data/test/rails/overrides/app/views/hankaku_input_filter/index.html.erb +0 -0
- data/test/rails/overrides/app/views/hankaku_input_filter/index_xhtml.html.erb +0 -1
- data/test/rails/overrides/app/views/layouts/xhtml.html.erb +0 -12
- data/test/rails/overrides/app/views/links/au_gps.html.erb +0 -1
- data/test/rails/overrides/app/views/links/au_location.html.erb +0 -1
- data/test/rails/overrides/app/views/links/docomo_foma_gps.html.erb +0 -1
- data/test/rails/overrides/app/views/links/docomo_openiarea.html.erb +0 -1
- data/test/rails/overrides/app/views/links/docomo_utn.html.erb +0 -1
- data/test/rails/overrides/app/views/links/link.html.erb +0 -1
- data/test/rails/overrides/app/views/links/show_all.html.erb +0 -1
- data/test/rails/overrides/app/views/links/softbank_location.html.erb +0 -1
- data/test/rails/overrides/app/views/links/willcom_location.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/_partial.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/_partial_mobile.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/_partial_mobile_docomo.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/_partial_smart_phone.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/_partial_smart_phone_iphone.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/index.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/index_mobile.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/index_mobile_docomo.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/index_smart_phone.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/index_smart_phone_iphone.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/partial.html.erb +0 -2
- data/test/rails/overrides/app/views/template_path/show_mobile.html.erb +0 -1
- data/test/rails/overrides/app/views/template_path/show_mobile_docomo.html.erb +0 -1
- data/test/rails/overrides/spec/rcov.opts +0 -2
@@ -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,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&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
|