-
Notifications
You must be signed in to change notification settings - Fork 0
/
authentication_controller_spec.rb
107 lines (91 loc) · 3.55 KB
/
authentication_controller_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
require 'spec_helper'
describe Remote::AuthenticationsController do
describe "create authentication" do
subject do
g = Group.where( :application_id => 3,
:name => 'root' )[0]
u = User.find_by_login( 'root' )
u.groups << g
u
end
before do
@pwd = subject.reset_password_and_save
end
it "should return ok" do
request.remote_addr = '127.0.0.1'
request.env['X-SERVICE-TOKEN'] = 'behappy'
post :create, :format => :json, :authentication => {:login => "root", :password => @pwd }
response.status.should == 201
body = JSON.parse(response.body)
# puts body.to_yaml
body.should have(1).items
user = body["user"]
user.should have(5).items
user['id'].should == 2
user['name'].should == 'Root'
user['login'].should == 'root'
user['groups'].should have(1).items
user['groups'].each do |group|
group.should have(6).items
group['id'].should_not be_nil
group['name'].should == 'root'
group['regions'].should be_nil
group['locales'].should be_nil
group['domains'].should be_nil
group['application'].should have(2).items
end
user['applications'].should have(2).items
user['applications'].each do |app|
app.should have(3).items
app['id'].should_not be_nil
app['name'].should_not be_nil
app['url'].should_not be_nil
end
end
it "should return not authorized" do
request.remote_addr = '127.0.0.1'
request.env['X-SERVICE-TOKEN'] = 'behappy'
post :create, :format => :json, :authentication => {:login => "root"}
response.status.should == 401
post :create, :format => :json, :authentication => {:login => "root", :password => 'bla'}
response.status.should == 401
post :create, :format => :json, :authentication => {:password => @pwd}
response.status.should == 401
end
it "should create error on wrong IP" do
request.remote_addr = '1.0.0.1'
request.env['X-SERVICE-TOKEN'] = 'behappy'
lambda { post :create, :format => :json, :authentication => {:login => "root", :password => @pwd } }.should raise_error
end
it "should create error on wrong token" do
request.remote_addr = '127.0.0.1'
request.env['X-SERVICE-TOKEN'] = 'something'
lambda { post :create, :format => :json, :authentication => {:login => "root", :password => @pwd } }.should raise_error
end
end
describe "reset password" do
it "should return ok" do
request.remote_addr = '127.0.0.1'
request.env['X-SERVICE-TOKEN'] = 'behappy'
get :reset_password, :format => :json, :authentication => {:login => "root"}
response.status.should == 200
response.body.should == 'password sent'
end
it "should return not found" do
request.remote_addr = '127.0.0.1'
request.env['X-SERVICE-TOKEN'] = 'behappy'
get :reset_password, :format => :json, :authentication => {:login => "notauser"}
response.status.should == 404
end
it "should create error on wrong IP" do
request.remote_addr = '1.0.0.1'
request.env['X-SERVICE-TOKEN'] = 'behappy'
lambda { get :reset_password, :format => :json, :authentication => {:login => "root"} }.should raise_error
end
it "should create error on wrong token" do
request.remote_addr = '127.0.0.1'
request.env['X-SERVICE-TOKEN'] = 'something'
lambda { get :reset_password, :format => :json, :authentication => {:login => "root"} }.should raise_error
end
end
end