OSDN Git Service

2.0開発:他店舗対応
[elecoma/elecoma.git] / spec / models / admin_user_spec.rb
1 # -*- coding: utf-8 -*-
2 require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
3
4 describe AdminUser do
5   fixtures :admin_users, :authorities, :retailers
6   before(:each) do
7     @admin_user = admin_users(:login_admin_user)
8   end
9
10   describe "validateチェック" do
11     before do
12       @admin_user.password = "hoge"
13     end
14
15     it "ログイン名" do
16       #ログイン名は必須
17       @admin_user.login_id = "hoge"
18       @admin_user.should be_valid
19       @admin_user.login_id = nil
20       @admin_user.should_not be_valid
21
22
23       #16文字以上は失敗
24       @admin_user.login_id = "a" * 15
25       @admin_user.should be_valid
26       @admin_user.login_id = "a" * 16
27       @admin_user.should_not be_valid
28       
29       #2重登録は失敗
30       AdminUser.new({:login_id=>"new", :password=>@admin_user.password,:authority_id => authorities(:auth01).id  }).should_not be_valid
31
32       #半角英数字以外は失敗
33       @admin_user.login_id = "abc102"
34       @admin_user.should be_valid
35       @admin_user.login_id = "abc//102"
36       @admin_user.should_not be_valid
37       @admin_user.login_id = "ABC1ー"
38       @admin_user.should_not be_valid
39     end
40
41     it "パスワード" do
42       #16文字以上は失敗
43       @admin_user.password = "a" * 15
44       @admin_user.should be_valid
45       @admin_user.password = "a" * 16
46       @admin_user.should_not be_valid
47       
48       #半角英数字以外は失敗
49       @admin_user.password = "abc102"
50       @admin_user.should be_valid
51       @admin_user.password = "abc//102"
52       @admin_user.should_not be_valid
53       @admin_user.password = "ABC1ー"
54       @admin_user.should_not be_valid
55     end
56   end
57
58   describe "パスワードの暗号化" do
59     it "パスワードが暗号化できている" do
60       AdminUser.encode_password("hoge").should_not == "hoge"
61     end
62
63     it "入力されたパスワードを暗号化(新規作成の場合)" do
64       admin_user = AdminUser.new({:name=>"zak", :login_id=>"gundam", :password=>"zak", :authority_id => authorities(:auth01).id, :retailer_id => 1 })
65       admin_user.save
66       AdminUser.find(:first, :conditions=>["login_id=?","gundam"]).password.should == AdminUser.encode_password("zak")
67     end
68
69     it "入力されたパスワードを暗号化(変更なし)" do
70       password = @admin_user.password
71       @admin_user.password = ""
72       @admin_user.save.should == true
73       AdminUser.find(@admin_user.id).password.should == password
74     end
75
76     it "入力されたパスワードを暗号化(変更あり)" do
77       password = @admin_user.password
78       @admin_user.password = "hyakushiki"
79       @admin_user.save.should == true
80       AdminUser.find(@admin_user.id).password.should == AdminUser.encode_password("hyakushiki")
81     end
82   end
83
84   describe "ログインしたい管理者の特定" do
85     it "管理者を取得できる" do
86       AdminUser.find_by_login_id_and_password(@admin_user.login_id, "hoge").should == @admin_user
87     end
88
89     it "管理者を取得できない" do
90       #ログインIDが存在しない
91       AdminUser.find_by_login_id_and_password("gundam", @admin_user.password).should be_nil
92
93       #passwordが存在しない
94       AdminUser.find_by_login_id_and_password(@admin_user.login_id, "gundam").should be_nil
95
96       #非稼働な管理ユーザー
97       activity_false = admin_users(:load_by_admin_user_activity_false)
98       AdminUser.find_by_login_id_and_password(activity_false.login_id, activity_false.password).should be_nil
99     end
100   end
101
102   describe "販売元IDを追加" do
103     it "販売元IDがないとvalidateに失敗する" do
104       @admin_user.retailer_id = nil
105       @admin_user.should_not be_valid
106     end
107
108     it "マスターショップかどうか判定" do 
109       @admin_user.should be_master_shop
110       not_master_retailer = admin_users(:admin17_retailer_id_is_fails)
111       not_master_retailer.should_not be_master_shop
112     end
113   end
114 end