OSDN Git Service

2107730a2fd7c7a3eaf89a2d5b27af93c00760f3
[pettanr/pettanr.git] / spec / controllers / panels_controller_spec.rb
1 # -*- encoding: utf-8 -*-\r
2 require 'spec_helper'\r
3 #コマ\r
4 describe PanelsController do\r
5   before do\r
6     SpeechBalloonTemplate.delete_all\r
7     @admin = FactoryGirl.create :admin\r
8     @sp = FactoryGirl.create :system_picture\r
9     @lg = FactoryGirl.create :license_group\r
10     @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id\r
11     @user = FactoryGirl.create :user_yas\r
12     @author = FactoryGirl.create :author, :user_id => @user.id\r
13   end\r
14   \r
15 if MagicNumber['run_mode'] == 1\r
16   describe '一覧表示に於いて' do\r
17     before do\r
18       @panel = FactoryGirl.create :panel, :author_id => @author.id\r
19       Panel.stub(:list).and_return([@panel, @panel, @panel])\r
20       sign_in @user\r
21     end\r
22     context '事前チェックする' do\r
23       it '与えられたpageがセットされている' do\r
24         get :index, :page => 5\r
25         assigns(:page).should eq 5\r
26       end\r
27       it '省略されると@pageに1値が入る' do\r
28         get :index\r
29         assigns(:page).should eq 1\r
30       end\r
31       it '与えられたpage_sizeがセットされている' do\r
32         get :index, :page_size => 15\r
33         assigns(:page_size).should eq 15\r
34       end\r
35       it '省略されると@page_sizeにデフォルト値が入る' do\r
36         get :index\r
37         assigns(:page_size).should eq Panel.default_page_size\r
38       end\r
39       it '最大を超えると@page_sizeにデフォルト最大値が入る' do\r
40         get :index, :page_size => 1500\r
41         assigns(:page_size).should eq Panel.max_page_size\r
42       end\r
43       it '不正な値が入ると@page_sizeにデフォルト最大値が入る' do\r
44         get :index, :page_size => 0\r
45         assigns(:page_size).should eq Panel.default_page_size\r
46       end\r
47     end\r
48     context 'つつがなく終わるとき' do\r
49       it 'コマモデルに一覧を問い合わせている' do\r
50         Panel.should_receive(:list).exactly(1)\r
51         get :index\r
52       end\r
53       it '@panelsにリストを取得している' do\r
54         get :index\r
55         assigns(:panels).should have_at_least(3).items\r
56       end\r
57       context 'html形式' do\r
58         it '@paginateにページ制御を取得している' do\r
59           get :index\r
60           assigns(:paginate).is_a?(Kaminari::PaginatableArray).should be_true\r
61         end\r
62         it 'ステータスコード200 OKを返す' do\r
63           get :index\r
64           response.should be_success \r
65         end\r
66         it 'indexテンプレートを描画する' do\r
67           get :index\r
68           response.should render_template("index")\r
69         end\r
70       end\r
71       context 'json形式' do\r
72         it 'ステータスコード200 OKを返す' do\r
73           get :index, :format => :json\r
74           response.should be_success \r
75         end\r
76         it 'jsonデータを返す' do\r
77           get :index, :format => :json\r
78           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
79         end\r
80         it 'コマモデルにコマリストのjson出力を問い合わせている' do\r
81           Panel.should_receive(:list_as_json_text).exactly(1)\r
82           get :index, :format => :json\r
83         end\r
84         it 'データがリスト構造になっている' do\r
85           get :index, :format => :json\r
86           json = JSON.parse response.body\r
87           json.should have_at_least(3).items\r
88         end\r
89         it 'リストの先頭くらいはコマっぽいものであって欲しい' do\r
90           get :index, :format => :json\r
91           json = JSON.parse response.body\r
92           json.first.has_key?("border").should be_true\r
93         end\r
94       end\r
95     end\r
96     context 'ユーザ権限がないとき' do\r
97       before do\r
98         sign_out @user\r
99       end\r
100       context 'html形式' do\r
101         it 'ステータスコード302 Foundを返す' do\r
102           get :index\r
103           response.status.should eq 302\r
104         end\r
105         it 'サインインページへ遷移する' do\r
106           get :index\r
107           response.should redirect_to '/users/sign_in'\r
108         end\r
109       end\r
110       context 'json形式' do\r
111         it 'ステータスコード401 Unauthorizedを返す' do\r
112           get :index, :format => :json\r
113           response.status.should eq 401\r
114         end\r
115         it '応答メッセージにUnauthorizedを返す' do\r
116           get :index, :format => :json\r
117           response.message.should match(/Unauthorized/)\r
118         end\r
119       end\r
120     end\r
121     context 'ユーザ権限はないが管理者権限があるとき' do\r
122       before do\r
123         sign_out @user\r
124         sign_in @admin\r
125       end\r
126       it 'ステータスコード200 OKを返す' do\r
127         get :index\r
128         response.should be_success \r
129       end\r
130     end\r
131     context 'ユーザだが作家登録していないとき' do\r
132       before do\r
133         @author.destroy\r
134       end\r
135       it 'ステータスコード200 OKを返す' do\r
136         get :index\r
137         response.should be_success \r
138       end\r
139     end\r
140   end\r
141   \r
142   describe '単体表示に於いて' do\r
143     before do\r
144       @panel = FactoryGirl.create :panel, :author_id => @user.author.id\r
145       Panel.stub(:show).with(@panel.id.to_s, [@user, nil]).and_return(@panel)\r
146       Panel.stub(:show).with(@panel.id.to_s, [nil, @admin]).and_return(@panel)\r
147       sign_in @user\r
148     end\r
149     context 'つつがなく終わるとき' do\r
150       it 'コマモデルに単体取得を問い合わせている' do\r
151         Panel.should_receive(:show).exactly(1)\r
152         get :show\r
153       end\r
154       it '@panelにアレを取得している' do\r
155         get :show, :id => @panel.id\r
156         assigns(:panel).id.should eq(@panel.id)\r
157       end\r
158       context 'html形式' do\r
159         it 'ステータスコード200 OKを返す' do\r
160           get :show, :id => @panel.id\r
161           response.should be_success\r
162         end\r
163         it 'showテンプレートを描画する' do\r
164           get :show, :id => @panel.id\r
165           response.should render_template("show")\r
166         end\r
167       end\r
168       context 'json形式' do\r
169         it 'ステータスコード200 OKを返す' do\r
170           get :show, :id => @panel.id, :format => :json\r
171           response.should be_success\r
172         end\r
173         it 'jsonデータを返す' do\r
174           get :show, :id => @panel.id, :format => :json\r
175           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
176         end\r
177         it 'コマモデルにコマのjson出力を問い合わせている' do\r
178           Panel.any_instance.should_receive(:panel_elements_as_json).exactly(1)\r
179           get :show, :id => @panel.id, :format => :json\r
180         end\r
181         it 'データがアレになっている' do\r
182           get :show, :id => @panel.id, :format => :json\r
183           json = JSON.parse response.body\r
184           json["width"].should eq 100\r
185         end\r
186       end\r
187     end\r
188     context 'ユーザ権限がないとき' do\r
189       before do\r
190         sign_out @user\r
191       end\r
192       context 'html形式' do\r
193         it 'ステータスコード302 Foundを返す' do\r
194           get :show, :id => @panel.id\r
195           response.status.should eq 302\r
196         end\r
197         it 'サインインページへ遷移する' do\r
198           get :show, :id => @panel.id\r
199           response.body.should redirect_to '/users/sign_in'\r
200         end\r
201       end\r
202       context 'json形式' do\r
203         it 'ステータスコード401 Unauthorizedを返す' do\r
204           get :show, :id => @panel.id, :format => :json\r
205           response.status.should eq 401\r
206         end\r
207         it '応答メッセージにUnauthorizedを返す' do\r
208           get :show, :id => @panel.id, :format => :json\r
209           response.message.should match(/Unauthorized/)\r
210         end\r
211       end\r
212     end\r
213     context 'ユーザ権限はないが管理者権限があるとき' do\r
214       before do\r
215         sign_out @user\r
216         sign_in @admin\r
217       end\r
218       it 'ステータスコード200 OKを返す' do\r
219           get :show, :id => @panel.id\r
220         response.should be_success \r
221       end\r
222     end\r
223     context 'ユーザだが作家登録していないとき' do\r
224       before do\r
225         @author.destroy\r
226       end\r
227       it 'ステータスコード200 OKを返す' do\r
228           get :show, :id => @panel.id\r
229         response.should be_success \r
230       end\r
231     end\r
232 =begin\r
233     context '対象コマがないとき' do\r
234       context 'html形式' do\r
235         it '例外404 not_foundを返す' do\r
236           lambda{\r
237             get :show, :id => 0\r
238           }.should raise_error(ActiveRecord::RecordNotFound)\r
239         end\r
240       end\r
241       context 'json形式' do\r
242         it '例外404 not_foundを返す' do\r
243           lambda{ \r
244             get :show, :id => 0, :format => :json\r
245           }.should raise_error(ActiveRecord::RecordNotFound)\r
246         end\r
247       end\r
248     end\r
249     context '非公開コマを見ようとしたとき' do\r
250       context 'html形式' do\r
251         it '例外403 forbiddenを返す' do\r
252           Panel.any_instance.stub(:visible?).with(any_args()).and_return(false)\r
253           hidden = FactoryGirl.create :hidden_panel, :author_id => @author.id\r
254           lambda{\r
255             get :show, :id => hidden\r
256           }.should raise_error(ActiveRecord::Forbidden)\r
257         end\r
258       end\r
259       context 'json形式' do\r
260         it '例外403 forbiddenを返す' do\r
261           Panel.any_instance.stub(:visible?).with(any_args()).and_return(false)\r
262           hidden = FactoryGirl.create :hidden_panel, :author_id => @author.id\r
263           lambda{\r
264             get :show, :id => hidden, :format => :json\r
265           }.should raise_error(ActiveRecord::Forbidden)\r
266         end\r
267       end\r
268     end\r
269 =end\r
270   end\r
271   \r
272   describe 'コマ数取得に於いて' do\r
273     before do\r
274       Panel.should_receive(:visible_count).and_return(3)\r
275 #      sign_in @user\r
276     end\r
277     context 'つつがなく終わるとき' do\r
278       it 'ステータスコード200 OKを返す' do\r
279         get :count, :format => :json\r
280         response.should be_success \r
281       end\r
282       context 'json形式' do\r
283         it 'jsonデータを返す' do\r
284           get :count, :format => :json\r
285           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
286         end\r
287         it 'データがHash構造になっていてコマ数が1である' do\r
288           get :count, :format => :json\r
289           json = JSON.parse response.body\r
290           json["count"].should == 3\r
291         end\r
292       end\r
293     end\r
294   end\r
295   \r
296   describe '新規作成フォーム表示に於いて' do\r
297     before do\r
298       sign_in @user\r
299     end\r
300     context 'つつがなく終わるとき' do\r
301       it '@panelに新規データを用意している' do\r
302         get :new\r
303         assigns(:panel).should be_a_new(Panel)\r
304       end\r
305       it 'コマモデルにデフォルト値補充を依頼している' do\r
306         Panel.any_instance.should_receive(:supply_default).exactly(1)\r
307         get :new\r
308       end\r
309       context 'html形式' do\r
310         it 'ステータスコード200 OKを返す' do\r
311           get :new\r
312           response.should be_success \r
313         end\r
314         it 'newテンプレートを描画する' do\r
315           get :new\r
316           response.should render_template("new")\r
317         end\r
318       end\r
319       context 'js形式' do\r
320         it 'new.jsテンプレートを描画する' do\r
321           get :new, :format => :js\r
322           response.should render_template("new")\r
323         end\r
324       end\r
325       context 'json形式' do\r
326         it 'jsonデータを返す' do\r
327           get :new, :format => :json\r
328           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
329         end\r
330         it 'コマモデルにコマのjson出力を問い合わせている' do\r
331           Panel.any_instance.should_receive(:panel_elements_as_json).exactly(1)\r
332           get :new, :format => :json\r
333         end\r
334       end\r
335     end\r
336     context 'ユーザ権限がないとき' do\r
337       before do\r
338         sign_out @user\r
339       end\r
340       context 'html形式' do\r
341         it 'ステータスコード302 Foundを返す' do\r
342           get :new\r
343           response.status.should eq 302\r
344         end\r
345         it 'サインインページへ遷移する' do\r
346           get :new\r
347           response.body.should redirect_to '/users/sign_in'\r
348         end\r
349       end\r
350       context 'js形式' do\r
351         it 'ステータスコード401 Unauthorizedを返す' do\r
352           get :new, :format => :js\r
353           response.status.should eq 401\r
354         end\r
355         it '応答メッセージにUnauthorizedを返す' do\r
356           get :new, :format => :js\r
357           response.message.should match(/Unauthorized/)\r
358         end\r
359       end\r
360     end\r
361     context 'ユーザ権限はないが管理者権限があるとき' do\r
362       before do\r
363         sign_out @user\r
364         sign_in @admin\r
365       end\r
366       context 'html形式' do\r
367         it 'ステータスコード302 Foundを返す' do\r
368           get :new\r
369           response.status.should eq 302\r
370         end\r
371         it 'サインインページへ遷移する' do\r
372           get :new\r
373           response.body.should redirect_to '/users/sign_in'\r
374         end\r
375       end\r
376     end\r
377     context 'ユーザだが作家登録していないとき' do\r
378       before do\r
379         @author.destroy\r
380       end\r
381       context 'html形式' do\r
382         it 'ステータスコード302 Foundを返す' do\r
383           get :new\r
384           response.status.should eq 302\r
385         end\r
386         it '作家登録ページへ遷移する' do\r
387           get :new\r
388           response.body.should redirect_to new_author_path\r
389         end\r
390       end\r
391     end\r
392   end\r
393   \r
394   describe '新規作成に於いて' do\r
395     before do\r
396       @panel = FactoryGirl.build :panel, :author_id => @author.id\r
397       @attr = FactoryGirl.attributes_for(:panel, :author_id => @author.id)\r
398       sign_in @user\r
399     end\r
400     context '事前チェックする' do\r
401       before do\r
402         Panel.stub(:count).and_return(10)\r
403       end\r
404       it 'panelがパラメータにあれば、展開する' do\r
405         post :create, :panel => @attr\r
406         assigns(:prm)['border'].to_i.should eq @panel.border\r
407       end\r
408       it 'jsonがパラメータにあれば、展開する' do\r
409         post :create, :json => FactoryGirl.attributes_for(:panel, :border => 4).to_json\r
410         assigns(:prm)['border'].to_i.should eq 4\r
411       end\r
412       it 'panel・json両パラメータがあれば、panelを優先して展開する' do\r
413         post :create, {\r
414           :panel => FactoryGirl.attributes_for(:panel), \r
415           :json => FactoryGirl.attributes_for(:panel, :border => 4).to_json\r
416         }\r
417         assigns(:prm)['border'].to_i.should eq @panel.border\r
418       end\r
419       it 'コマモデルにデフォルト値補充を依頼している' do\r
420         Panel.any_instance.should_receive(:supply_default).exactly(1)\r
421         post :create, :panel => @attr\r
422       end\r
423       it 'モデルに保存依頼する' do\r
424         Panel.any_instance.should_receive(:store).exactly(1)\r
425         post :create, :panel => @attr\r
426       end\r
427     end\r
428     context 'つつがなく終わるとき' do\r
429       it "@panelに作成されたコマを保持していて、それがDBにある" do\r
430         post :create, :panel => @attr\r
431         assigns(:panel).should be_a(Panel)\r
432         assigns(:panel).should be_persisted\r
433       end\r
434       context 'html形式' do\r
435         it 'ステータスコード302 Foundを返す' do\r
436           Panel.any_instance.stub(:store).and_return(true)\r
437           post :create, :panel => @attr\r
438           response.status.should eq 302\r
439         end\r
440         it '作成されたコマの表示ページへ遷移する' do\r
441 #          Panel.any_instance.stub(:store).and_return(true)\r
442           post :create, :panel => @attr\r
443           response.should redirect_to(Panel.last)\r
444         end\r
445       end\r
446       context 'json形式' do\r
447         it 'ステータスコード200 OKを返す' do\r
448 #          Panel.any_instance.stub(:store).and_return(true)\r
449           post :create, :panel => @attr, :format => :json\r
450           response.should be_success \r
451         end\r
452         it '作成されたコマをjsonデータで返す' do\r
453           post :create, :panel => @attr, :format => :json\r
454           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
455         end\r
456         it 'コマモデルにコマのjson出力を問い合わせている' do\r
457           Panel.any_instance.should_receive(:panel_elements_as_json).exactly(1)\r
458           post :create, :panel => @attr, :format => :json\r
459         end\r
460         it 'データがアレになっている' do\r
461           post :create, :panel => @attr, :format => :json\r
462           json = JSON.parse response.body\r
463           json["width"].should eq @panel.width\r
464         end\r
465       end\r
466     end\r
467     context 'ユーザ権限がないとき' do\r
468       before do\r
469         sign_out @user\r
470       end\r
471       context 'html形式' do\r
472         it 'ステータスコード302 Foundを返す' do\r
473           post :create, :panel => @attr\r
474           response.status.should eq 302\r
475         end\r
476         it 'サインインページへ遷移する' do\r
477           post :create, :panel => @attr\r
478           response.body.should redirect_to '/users/sign_in'\r
479         end\r
480       end\r
481       context 'json形式' do\r
482         it 'ステータスコード401 Unauthorizedを返す' do\r
483           post :create, :panel => @attr, :format => :json\r
484           response.status.should eq 401\r
485         end\r
486         it '応答メッセージにUnauthorizedを返す' do\r
487           post :create, :panel => @attr, :format => :json\r
488           response.message.should match(/Unauthorized/)\r
489         end\r
490       end\r
491     end\r
492     context 'ユーザ権限はないが管理者権限があるとき' do\r
493       before do\r
494         sign_out @user\r
495         sign_in @admin\r
496       end\r
497       context 'html形式' do\r
498         it 'ステータスコード302 Foundを返す' do\r
499           post :create, :panel => @attr\r
500           response.status.should eq 302\r
501         end\r
502         it 'サインインページへ遷移する' do\r
503           post :create, :panel => @attr\r
504           response.body.should redirect_to '/users/sign_in'\r
505         end\r
506       end\r
507     end\r
508     context 'ユーザだが作家登録していないとき' do\r
509       before do\r
510         @author.destroy\r
511       end\r
512       context 'html形式' do\r
513         it 'ステータスコード302 Foundを返す' do\r
514           post :create, :panel => @attr\r
515           response.status.should eq 302\r
516         end\r
517         it '作家登録ページへ遷移する' do\r
518           post :create, :panel => @attr\r
519           response.body.should redirect_to new_author_path\r
520         end\r
521       end\r
522     end\r
523     context '検証、保存に失敗した' do\r
524       before do\r
525         Panel.any_instance.stub(:store).and_return(false)\r
526       end\r
527       it "未保存のコマを保持している" do\r
528         post :create, :panel => @attr\r
529         assigns(:panel).should be_a_new(Panel)\r
530       end\r
531       context 'html形式' do\r
532         it 'ステータスコード200 OKを返す' do\r
533           post :create, :panel => @attr\r
534           response.status.should eq 200\r
535         end\r
536         it '新規ページを描画する' do\r
537           post :create, :panel => @attr\r
538           response.should render_template("new")\r
539         end\r
540       end\r
541       context 'json形式' do\r
542         it 'ステータスコード422 unprocessable_entity を返す' do\r
543           post :create, :panel => @attr, :format => :json\r
544           response.status.should eq 422\r
545         end\r
546         it '応答メッセージUnprocessable Entityを返す' do\r
547           post :create, :panel => @attr, :format => :json\r
548           response.message.should match(/Unprocessable/)\r
549         end\r
550       end\r
551     end\r
552   end\r
553 \r
554   describe '編集フォーム表示に於いて' do\r
555     before do\r
556       @panel = FactoryGirl.create :panel, :author_id => @author.id\r
557       sign_in @user\r
558       Panel.stub(:show).and_return(@panel)\r
559     end\r
560     context 'つつがなく終わるとき' do\r
561       it 'コマモデルに編集取得を問い合わせている' do\r
562         Panel.should_receive(:edit).exactly(1)\r
563         get :edit, :id => @panel.id\r
564       end\r
565       it '@panelにデータを用意している' do\r
566         get :edit, :id => @panel.id\r
567         assigns(:panel).should eq @panel\r
568       end\r
569       context 'html形式' do\r
570         it 'ステータスコード200 OKを返す' do\r
571           get :edit, :id => @panel.id\r
572           response.should be_success \r
573         end\r
574         it 'editテンプレートを描画する' do\r
575           get :edit, :id => @panel.id\r
576           response.should render_template("edit")\r
577         end\r
578       end\r
579       context 'js形式' do\r
580         it 'ステータスコード200 OKを返す' do\r
581           get :edit, :id => @panel.id, :format => :js\r
582           response.should be_success \r
583         end\r
584         it 'edit.jsテンプレートを描画する' do\r
585           get :edit, :id => @panel.id, :format => :js\r
586           response.should render_template("edit")\r
587         end\r
588       end\r
589     end\r
590     context 'ユーザ権限がないとき' do\r
591       before do\r
592         sign_out @user\r
593       end\r
594       context 'html形式' do\r
595         it 'ステータスコード302 Foundを返す' do\r
596           get :edit, :id => @panel.id\r
597           response.status.should eq 302\r
598         end\r
599         it 'サインインページへ遷移する' do\r
600           get :edit, :id => @panel.id\r
601           response.body.should redirect_to '/users/sign_in'\r
602         end\r
603       end\r
604       context 'js形式' do\r
605         it 'ステータスコード401 Unauthorizedを返す' do\r
606           get :edit, :id => @panel.id, :format => :js\r
607           response.status.should eq 401\r
608         end\r
609         it '応答メッセージにUnauthorizedを返す' do\r
610           get :edit, :id => @panel.id, :format => :js\r
611           response.message.should match(/Unauthorized/)\r
612         end\r
613       end\r
614     end\r
615     context 'ユーザ権限はないが管理者権限があるとき' do\r
616       before do\r
617         sign_out @user\r
618         sign_in @admin\r
619       end\r
620       context 'html形式' do\r
621         it 'ステータスコード302 Foundを返す' do\r
622           get :edit, :id => @panel.id\r
623           response.status.should eq 302\r
624         end\r
625         it 'サインインページへ遷移する' do\r
626           get :edit, :id => @panel.id\r
627           response.body.should redirect_to '/users/sign_in'\r
628         end\r
629       end\r
630     end\r
631     context 'ユーザだが作家登録していないとき' do\r
632       before do\r
633         @author.destroy\r
634       end\r
635       context 'html形式' do\r
636         it 'ステータスコード302 Foundを返す' do\r
637           get :edit, :id => @panel.id\r
638           response.status.should eq 302\r
639         end\r
640         it '作家登録ページへ遷移する' do\r
641           get :edit, :id => @panel.id\r
642           response.body.should redirect_to new_author_path\r
643         end\r
644       end\r
645     end\r
646   end\r
647 \r
648   describe '更新に於いて' do\r
649     before do\r
650       @panel = FactoryGirl.create :panel, :author_id => @user.author.id\r
651       @attr = FactoryGirl.attributes_for(:panel, :author_id => @author.id)\r
652       sign_in @user\r
653     end\r
654     context '事前チェックする' do\r
655       before do\r
656         controller\r
657         Panel.stub(:count).and_return(10)\r
658       end\r
659       it 'panelがパラメータにあれば、展開する' do\r
660         put :update, :id => @panel.id, :panel => @attr\r
661         assigns(:prm)['border'].to_i.should eq @panel.border\r
662       end\r
663       it 'jsonがパラメータにあれば、展開する' do\r
664         put :update, :id => @panel.id, :json => FactoryGirl.attributes_for(:panel, :border => 4).to_json\r
665         assigns(:prm)['border'].to_i.should eq 4\r
666       end\r
667       it 'panel・json両パラメータがあれば、panelを優先して展開する' do\r
668         put :update, {\r
669           :id => @panel.id, \r
670           :panel => FactoryGirl.attributes_for(:panel), \r
671           :json => FactoryGirl.attributes_for(:panel, :border => 4).to_json\r
672         }\r
673         assigns(:prm)['border'].to_i.should eq @panel.border\r
674       end\r
675     end\r
676     context 'つつがなく終わるとき' do\r
677       it 'モデルに編集取得依頼する' do\r
678         Panel.stub(:edit).with(any_args).and_return(@panel)\r
679         Panel.should_receive(:edit).exactly(1)\r
680         put :update, :id => @panel.id, :panel => @attr\r
681       end\r
682       it 'モデルに保存依頼する' do\r
683         Panel.any_instance.should_receive(:store).exactly(1)\r
684         put :update, :id => @panel.id, :panel => @attr\r
685       end\r
686       it "@panelに作成されたコマを保持していて、それがDBにある" do\r
687         put :update, :id => @panel.id, :panel => @attr\r
688         assigns(:panel).should be_a(Panel)\r
689         assigns(:panel).should be_persisted\r
690       end\r
691       context 'html形式' do\r
692         it 'ステータスコード302 Foundを返す' do\r
693           Panel.any_instance.stub(:store).and_return(true)\r
694           put :update, :id => @panel.id, :panel => @attr\r
695           response.status.should eq 302\r
696         end\r
697         it '作成されたコマの表示ページへ遷移する' do\r
698 #          Panel.any_instance.stub(:store).and_return(true)\r
699           put :update, :id => @panel.id, :panel => @attr\r
700           response.should redirect_to(Panel.last)\r
701         end\r
702       end\r
703       context 'json形式' do\r
704         it 'ステータスコード200 OKを返す' do\r
705 #          Panel.any_instance.stub(:store).and_return(true)\r
706           put :update, :id => @panel.id, :panel => @attr, :format => :json\r
707           response.should be_success \r
708         end\r
709         it 'ページ本体は特に返さない' do\r
710           Panel.any_instance.stub(:save).with(any_args()).and_return(true)\r
711           put :update, :id => @panel.id, :panel => @attr, :format => :json\r
712           response.body.should match /./\r
713         end\r
714       end\r
715     end\r
716     context 'ユーザ権限がないとき' do\r
717       before do\r
718         sign_out @user\r
719       end\r
720       context 'html形式' do\r
721         it 'ステータスコード302 Foundを返す' do\r
722           put :update, :id => @panel.id, :panel => @attr\r
723           response.status.should eq 302\r
724         end\r
725         it 'サインインページへ遷移する' do\r
726           put :update, :id => @panel.id, :panel => @attr\r
727           response.body.should redirect_to '/users/sign_in'\r
728         end\r
729       end\r
730       context 'json形式' do\r
731         it 'ステータスコード401 Unauthorizedを返す' do\r
732           put :update, :id => @panel.id, :panel => @attr, :format => :json\r
733           response.status.should eq 401\r
734         end\r
735         it '応答メッセージにUnauthorizedを返す' do\r
736           put :update, :id => @panel.id, :panel => @attr, :format => :json\r
737           response.message.should match(/Unauthorized/)\r
738         end\r
739       end\r
740     end\r
741     context 'ユーザ権限はないが管理者権限があるとき' do\r
742       before do\r
743         sign_out @user\r
744         sign_in @admin\r
745       end\r
746       context 'html形式' do\r
747         it 'ステータスコード302 Foundを返す' do\r
748           put :update, :id => @panel.id, :panel => @attr\r
749           response.status.should eq 302\r
750         end\r
751         it 'サインインページへ遷移する' do\r
752           put :update, :id => @panel.id, :panel => @attr\r
753           response.body.should redirect_to '/users/sign_in'\r
754         end\r
755       end\r
756     end\r
757     context 'ユーザだが作家登録していないとき' do\r
758       before do\r
759         @author.destroy\r
760       end\r
761       context 'html形式' do\r
762         it 'ステータスコード302 Foundを返す' do\r
763           put :update, :id => @panel.id, :panel => @attr\r
764           response.status.should eq 302\r
765         end\r
766         it '作家登録ページへ遷移する' do\r
767           put :update, :id => @panel.id, :panel => @attr\r
768           response.body.should redirect_to new_author_path\r
769         end\r
770       end\r
771     end\r
772     context '検証、保存に失敗した' do\r
773       before do\r
774         Panel.any_instance.stub(:store).and_return(false)\r
775       end\r
776       it "指定のコマを保持している" do\r
777         put :update, :id => @panel.id, :panel => @attr\r
778         assigns(:panel).should eq @panel\r
779       end\r
780       context 'html形式' do\r
781         it 'ステータスコード200 OKを返す' do\r
782           put :update, :id => @panel.id, :panel => @attr\r
783           response.status.should eq 200\r
784         end\r
785         it '編集ページを描画する' do\r
786           put :update, :id => @panel.id, :panel => @attr\r
787           response.should render_template("edit")\r
788         end\r
789       end\r
790       context 'json形式' do\r
791         it 'ステータスコード422 unprocessable_entity を返す' do\r
792           put :update, :id => @panel.id, :panel => @attr, :format => :json\r
793           response.status.should eq 422\r
794         end\r
795         it '応答メッセージUnprocessable Entityを返す' do\r
796           put :update, :id => @panel.id, :panel => @attr, :format => :json\r
797           response.message.should match(/Unprocessable/)\r
798         end\r
799       end\r
800     end\r
801   end\r
802 \r
803   describe '削除に於いて' do\r
804     before do\r
805       @panel = FactoryGirl.create :panel, :author_id => @user.author.id\r
806       Panel.stub(:edit).and_return(@panel)\r
807       sign_in @user\r
808     end\r
809     context 'つつがなく終わるとき' do\r
810       it 'コマモデルに編集取得を問い合わせている' do\r
811         Panel.should_receive(:edit).exactly(1)\r
812         delete :destroy, :id => @panel.id\r
813       end\r
814       it '@panelにアレを取得している' do\r
815         delete :destroy, :id => @panel.id\r
816         assigns(:panel).id.should eq(@panel.id)\r
817       end\r
818       it 'そのコマを削除する' do\r
819         lambda {\r
820           delete :destroy, :id => @panel.id\r
821         }.should change(Panel, :count)\r
822       end\r
823       context 'html形式' do\r
824         it 'ステータスコード302 Foundを返す' do\r
825           delete :destroy, :id => @panel.id\r
826           response.status.should eq 302\r
827         end\r
828         it 'マイコマ一覧ページへ遷移する' do\r
829           delete :destroy, :id => @panel.id\r
830           response.should redirect_to('/home/panels')\r
831         end\r
832       end\r
833       context 'json形式' do\r
834         it 'ステータスコード200 OKを返す' do\r
835           delete :destroy, :id => @panel.id, :format => :json\r
836           response.should be_success\r
837         end\r
838       end\r
839     end\r
840     context 'ユーザ権限がないとき' do\r
841       before do\r
842         sign_out @user\r
843       end\r
844       context 'html形式' do\r
845         it 'ステータスコード302 Foundを返す' do\r
846           delete :destroy, :id => @panel.id\r
847           response.status.should eq 302\r
848         end\r
849         it 'サインインページへ遷移する' do\r
850           delete :destroy, :id => @panel.id\r
851           response.body.should redirect_to '/users/sign_in'\r
852         end\r
853       end\r
854       context 'json形式' do\r
855         it 'ステータスコード401 Unauthorizedを返す' do\r
856           delete :destroy, :id => @panel.id, :format => :json\r
857           response.status.should eq 401\r
858         end\r
859         it '応答メッセージにUnauthorizedを返す' do\r
860           delete :destroy, :id => @panel.id, :format => :json\r
861           response.message.should match(/Unauthorized/)\r
862         end\r
863       end\r
864     end\r
865     context 'ユーザ権限はないが管理者権限があるとき' do\r
866       before do\r
867         sign_out @user\r
868         sign_in @admin\r
869       end\r
870       context 'html形式' do\r
871         it 'ステータスコード302 Foundを返す' do\r
872           delete :destroy, :id => @panel.id\r
873           response.status.should eq 302\r
874         end\r
875         it 'サインインページへ遷移する' do\r
876           delete :destroy, :id => @panel.id\r
877           response.body.should redirect_to '/users/sign_in'\r
878         end\r
879       end\r
880     end\r
881     context 'ユーザだが作家登録していないとき' do\r
882       before do\r
883         @author.destroy\r
884       end\r
885       context 'html形式' do\r
886         it 'ステータスコード302 Foundを返す' do\r
887           delete :destroy, :id => @panel.id\r
888           response.status.should eq 302\r
889         end\r
890         it '作家登録ページへ遷移する' do\r
891           delete :destroy, :id => @panel.id\r
892           response.body.should redirect_to new_author_path\r
893         end\r
894       end\r
895     end\r
896     context '削除に失敗したとき' do\r
897       before do\r
898         Panel.any_instance.stub(:destroy_with_elements).and_return(false)\r
899       end\r
900       context 'html形式' do\r
901         it 'ステータスコード302 Foundを返す' do\r
902           delete :destroy, :id => @panel.id\r
903           response.status.should eq 302\r
904         end\r
905         it 'そのコマの詳細ページへ遷移する' do\r
906           delete :destroy, :id => @panel.id\r
907           response.should redirect_to(panel_path(@panel))\r
908         end\r
909       end\r
910       context 'json形式' do\r
911         it 'ステータスコード422 unprocessable_entity を返す' do\r
912           delete :destroy, :id => @panel.id, :format => :json\r
913           response.status.should eq 422\r
914         end\r
915         it '応答メッセージUnprocessable Entityを返す' do\r
916           delete :destroy, :id => @panel.id, :format => :json\r
917           response.message.should match(/Unprocessable/)\r
918         end\r
919       end\r
920     end\r
921 =begin\r
922     context '対象コマがないとき' do\r
923     end\r
924     context '他人のコマだったとき' do\r
925     end\r
926 =end\r
927   end\r
928   \r
929 else\r
930   describe '一覧表示に於いて' do\r
931     before do\r
932       @panel = FactoryGirl.create :panel, :author_id => @author.id\r
933       Panel.stub(:list).and_return([@panel, @panel, @panel])\r
934       sign_in @user\r
935     end\r
936     context 'つつがなく終わるとき' do\r
937       context 'html形式' do\r
938         it 'ステータスコード200 OKを返す' do\r
939           get :index\r
940           response.should be_success \r
941         end\r
942         it 'indexテンプレートを描画する' do\r
943           get :index\r
944           response.should render_template("index")\r
945         end\r
946       end\r
947       context 'json形式' do\r
948         it 'ステータスコード200 OKを返す' do\r
949           get :index, :format => :json\r
950           response.should be_success \r
951         end\r
952         it 'jsonデータを返す' do\r
953           get :index, :format => :json\r
954           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
955         end\r
956       end\r
957     end\r
958     context 'ユーザ権限がないとき' do\r
959       before do\r
960         sign_out @user\r
961       end\r
962       context 'html形式' do\r
963         it 'ステータスコード200 OKを返す' do\r
964           get :index\r
965           response.should be_success \r
966         end\r
967         it 'indexテンプレートを描画する' do\r
968           get :index\r
969           response.should render_template("index")\r
970         end\r
971       end\r
972       context 'json形式' do\r
973         it 'ステータスコード200 OKを返す' do\r
974           get :index, :format => :json\r
975           response.should be_success \r
976         end\r
977         it 'jsonデータを返す' do\r
978           get :index, :format => :json\r
979           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
980         end\r
981       end\r
982     end\r
983   end\r
984   \r
985   describe '単体表示に於いて' do\r
986     before do\r
987       @panel = FactoryGirl.create :panel, :author_id => @user.author.id\r
988       Panel.stub(:show).with(@panel.id.to_s, [nil, nil]).and_return(@panel)\r
989       Panel.stub(:show).with(@panel.id.to_s, [@user, nil]).and_return(@panel)\r
990       Panel.stub(:show).with(@panel.id.to_s, [nil, @admin]).and_return(@panel)\r
991       sign_in @user\r
992     end\r
993     context 'つつがなく終わるとき' do\r
994       context 'html形式' do\r
995         it 'ステータスコード200 OKを返す' do\r
996           get :show, :id => @panel.id\r
997           response.should be_success\r
998         end\r
999         it 'showテンプレートを描画する' do\r
1000           get :show, :id => @panel.id\r
1001           response.should render_template("show")\r
1002         end\r
1003       end\r
1004       context 'json形式' do\r
1005         it 'ステータスコード200 OKを返す' do\r
1006           get :show, :id => @panel.id, :format => :json\r
1007           response.should be_success\r
1008         end\r
1009         it 'jsonデータを返す' do\r
1010           get :show, :id => @panel.id, :format => :json\r
1011           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
1012         end\r
1013       end\r
1014     end\r
1015     context 'ユーザ権限がないとき' do\r
1016       before do\r
1017         sign_out @user\r
1018       end\r
1019       context 'html形式' do\r
1020         it 'ステータスコード200 OKを返す' do\r
1021           get :show, :id => @panel.id\r
1022           response.should be_success\r
1023         end\r
1024         it 'showテンプレートを描画する' do\r
1025           get :show, :id => @panel.id\r
1026           response.should render_template("show")\r
1027         end\r
1028       end\r
1029       context 'json形式' do\r
1030         it 'ステータスコード200 OKを返す' do\r
1031           get :show, :id => @panel.id, :format => :json\r
1032           response.should be_success\r
1033         end\r
1034         it 'jsonデータを返す' do\r
1035           get :show, :id => @panel.id, :format => :json\r
1036           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
1037         end\r
1038       end\r
1039     end\r
1040   end\r
1041   \r
1042   describe 'コマ数取得に於いて' do\r
1043     before do\r
1044       Panel.should_receive(:visible_count).and_return(3)\r
1045 #      sign_in @user\r
1046     end\r
1047     context 'つつがなく終わるとき' do\r
1048       it 'ステータスコード200 OKを返す' do\r
1049         get :count, :format => :json\r
1050         response.should be_success \r
1051       end\r
1052       context 'json形式' do\r
1053         it 'jsonデータを返す' do\r
1054           get :count, :format => :json\r
1055           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
1056         end\r
1057       end\r
1058     end\r
1059   end\r
1060   \r
1061   describe '新規作成フォーム表示に於いて' do\r
1062     before do\r
1063       sign_in @user\r
1064     end\r
1065     context 'つつがなく終わるとき' do\r
1066       context 'html形式' do\r
1067         it 'ステータスコード200 OKを返す' do\r
1068           get :new\r
1069           response.should be_success \r
1070         end\r
1071         it 'newテンプレートを描画する' do\r
1072           get :new\r
1073           response.should render_template("new")\r
1074         end\r
1075       end\r
1076       context 'js形式' do\r
1077         it 'new.jsテンプレートを描画する' do\r
1078           get :new, :format => :js\r
1079           response.should render_template("new")\r
1080         end\r
1081       end\r
1082       context 'json形式' do\r
1083         it 'jsonデータを返す' do\r
1084           get :new, :format => :json\r
1085           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
1086         end\r
1087       end\r
1088     end\r
1089     context 'ユーザ権限がないとき' do\r
1090       before do\r
1091         sign_out @user\r
1092       end\r
1093       context 'html形式' do\r
1094         it 'ステータスコード302 Foundを返す' do\r
1095           get :new\r
1096           response.status.should eq 302\r
1097         end\r
1098         it 'サインインページへ遷移する' do\r
1099           get :new\r
1100           response.body.should redirect_to '/users/sign_in'\r
1101         end\r
1102       end\r
1103       context 'js形式' do\r
1104         it 'ステータスコード401 Unauthorizedを返す' do\r
1105           get :new, :format => :js\r
1106           response.status.should eq 401\r
1107         end\r
1108         it '応答メッセージにUnauthorizedを返す' do\r
1109           get :new, :format => :js\r
1110           response.message.should match(/Unauthorized/)\r
1111         end\r
1112       end\r
1113     end\r
1114   end\r
1115   \r
1116   describe '新規作成に於いて' do\r
1117     before do\r
1118       @panel = FactoryGirl.build :panel, :author_id => @author.id\r
1119       @attr = FactoryGirl.attributes_for(:panel, :author_id => @author.id)\r
1120       sign_in @user\r
1121     end\r
1122     context 'つつがなく終わるとき' do\r
1123       context 'html形式' do\r
1124         it 'ステータスコード302 Foundを返す' do\r
1125           Panel.any_instance.stub(:store).and_return(true)\r
1126           post :create, :panel => @attr\r
1127           response.status.should eq 302\r
1128         end\r
1129         it '作成されたコマの表示ページへ遷移する' do\r
1130 #          Panel.any_instance.stub(:store).and_return(true)\r
1131           post :create, :panel => @attr\r
1132           response.should redirect_to(Panel.last)\r
1133         end\r
1134       end\r
1135       context 'json形式' do\r
1136         it 'ステータスコード200 OKを返す' do\r
1137 #          Panel.any_instance.stub(:store).and_return(true)\r
1138           post :create, :panel => @attr, :format => :json\r
1139           response.should be_success \r
1140         end\r
1141         it '作成されたコマをjsonデータで返す' do\r
1142           post :create, :panel => @attr, :format => :json\r
1143           lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError)\r
1144         end\r
1145       end\r
1146     end\r
1147     context 'ユーザ権限がないとき' do\r
1148       before do\r
1149         sign_out @user\r
1150       end\r
1151       context 'html形式' do\r
1152         it 'ステータスコード302 Foundを返す' do\r
1153           post :create, :panel => @attr\r
1154           response.status.should eq 302\r
1155         end\r
1156         it 'サインインページへ遷移する' do\r
1157           post :create, :panel => @attr\r
1158           response.body.should redirect_to '/users/sign_in'\r
1159         end\r
1160       end\r
1161       context 'json形式' do\r
1162         it 'ステータスコード401 Unauthorizedを返す' do\r
1163           post :create, :panel => @attr, :format => :json\r
1164           response.status.should eq 401\r
1165         end\r
1166         it '応答メッセージにUnauthorizedを返す' do\r
1167           post :create, :panel => @attr, :format => :json\r
1168           response.message.should match(/Unauthorized/)\r
1169         end\r
1170       end\r
1171     end\r
1172   end\r
1173 \r
1174   describe '編集フォーム表示に於いて' do\r
1175     before do\r
1176       @panel = FactoryGirl.create :panel, :author_id => @author.id\r
1177       sign_in @user\r
1178       Panel.stub(:show).and_return(@panel)\r
1179     end\r
1180     context 'つつがなく終わるとき' do\r
1181       context 'html形式' do\r
1182         it 'ステータスコード200 OKを返す' do\r
1183           get :edit, :id => @panel.id\r
1184           response.should be_success \r
1185         end\r
1186         it 'editテンプレートを描画する' do\r
1187           get :edit, :id => @panel.id\r
1188           response.should render_template("edit")\r
1189         end\r
1190       end\r
1191       context 'js形式' do\r
1192         it 'ステータスコード200 OKを返す' do\r
1193           get :edit, :id => @panel.id, :format => :js\r
1194           response.should be_success \r
1195         end\r
1196         it 'edit.jsテンプレートを描画する' do\r
1197           get :edit, :id => @panel.id, :format => :js\r
1198           response.should render_template("edit")\r
1199         end\r
1200       end\r
1201     end\r
1202     context 'ユーザ権限がないとき' do\r
1203       before do\r
1204         sign_out @user\r
1205       end\r
1206       context 'html形式' do\r
1207         it 'ステータスコード302 Foundを返す' do\r
1208           get :edit, :id => @panel.id\r
1209           response.status.should eq 302\r
1210         end\r
1211         it 'サインインページへ遷移する' do\r
1212           get :edit, :id => @panel.id\r
1213           response.body.should redirect_to '/users/sign_in'\r
1214         end\r
1215       end\r
1216       context 'js形式' do\r
1217         it 'ステータスコード401 Unauthorizedを返す' do\r
1218           get :edit, :id => @panel.id, :format => :js\r
1219           response.status.should eq 401\r
1220         end\r
1221         it '応答メッセージにUnauthorizedを返す' do\r
1222           get :edit, :id => @panel.id, :format => :js\r
1223           response.message.should match(/Unauthorized/)\r
1224         end\r
1225       end\r
1226     end\r
1227   end\r
1228 \r
1229   describe '更新に於いて' do\r
1230     before do\r
1231       @panel = FactoryGirl.create :panel, :author_id => @user.author.id\r
1232       @attr = FactoryGirl.attributes_for(:panel, :author_id => @author.id)\r
1233       sign_in @user\r
1234     end\r
1235     context 'つつがなく終わるとき' do\r
1236       context 'html形式' do\r
1237         it 'ステータスコード302 Foundを返す' do\r
1238           Panel.any_instance.stub(:store).and_return(true)\r
1239           put :update, :id => @panel.id, :panel => @attr\r
1240           response.status.should eq 302\r
1241         end\r
1242         it '作成されたコマの表示ページへ遷移する' do\r
1243 #          Panel.any_instance.stub(:store).and_return(true)\r
1244           put :update, :id => @panel.id, :panel => @attr\r
1245           response.should redirect_to(Panel.last)\r
1246         end\r
1247       end\r
1248       context 'json形式' do\r
1249         it 'ステータスコード200 OKを返す' do\r
1250 #          Panel.any_instance.stub(:store).and_return(true)\r
1251           put :update, :id => @panel.id, :panel => @attr, :format => :json\r
1252           response.should be_success \r
1253         end\r
1254         it 'ページ本体は特に返さない' do\r
1255           Panel.any_instance.stub(:save).with(any_args()).and_return(true)\r
1256           put :update, :id => @panel.id, :panel => @attr, :format => :json\r
1257           response.body.should match /./\r
1258         end\r
1259       end\r
1260     end\r
1261     context 'ユーザ権限がないとき' do\r
1262       before do\r
1263         sign_out @user\r
1264       end\r
1265       context 'html形式' do\r
1266         it 'ステータスコード302 Foundを返す' do\r
1267           put :update, :id => @panel.id, :panel => @attr\r
1268           response.status.should eq 302\r
1269         end\r
1270         it 'サインインページへ遷移する' do\r
1271           put :update, :id => @panel.id, :panel => @attr\r
1272           response.body.should redirect_to '/users/sign_in'\r
1273         end\r
1274       end\r
1275       context 'json形式' do\r
1276         it 'ステータスコード401 Unauthorizedを返す' do\r
1277           put :update, :id => @panel.id, :panel => @attr, :format => :json\r
1278           response.status.should eq 401\r
1279         end\r
1280         it '応答メッセージにUnauthorizedを返す' do\r
1281           put :update, :id => @panel.id, :panel => @attr, :format => :json\r
1282           response.message.should match(/Unauthorized/)\r
1283         end\r
1284       end\r
1285     end\r
1286   end\r
1287 \r
1288   describe '削除に於いて' do\r
1289     before do\r
1290       @panel = FactoryGirl.create :panel, :author_id => @user.author.id\r
1291       Panel.stub(:edit).and_return(@panel)\r
1292       sign_in @user\r
1293     end\r
1294     context 'つつがなく終わるとき' do\r
1295       context 'html形式' do\r
1296         it 'ステータスコード302 Foundを返す' do\r
1297           delete :destroy, :id => @panel.id\r
1298           response.status.should eq 302\r
1299         end\r
1300         it 'マイコマ一覧ページへ遷移する' do\r
1301           delete :destroy, :id => @panel.id\r
1302           response.should redirect_to('/home/panel')\r
1303         end\r
1304       end\r
1305       context 'json形式' do\r
1306         it 'ステータスコード200 OKを返す' do\r
1307           delete :destroy, :id => @panel.id, :format => :json\r
1308           response.should be_success\r
1309         end\r
1310       end\r
1311     end\r
1312     context 'ユーザ権限がないとき' do\r
1313       before do\r
1314         sign_out @user\r
1315       end\r
1316       context 'html形式' do\r
1317         it 'ステータスコード302 Foundを返す' do\r
1318           delete :destroy, :id => @panel.id\r
1319           response.status.should eq 302\r
1320         end\r
1321         it 'サインインページへ遷移する' do\r
1322           delete :destroy, :id => @panel.id\r
1323           response.body.should redirect_to '/users/sign_in'\r
1324         end\r
1325       end\r
1326       context 'json形式' do\r
1327         it 'ステータスコード401 Unauthorizedを返す' do\r
1328           delete :destroy, :id => @panel.id, :format => :json\r
1329           response.status.should eq 401\r
1330         end\r
1331         it '応答メッセージにUnauthorizedを返す' do\r
1332           delete :destroy, :id => @panel.id, :format => :json\r
1333           response.message.should match(/Unauthorized/)\r
1334         end\r
1335       end\r
1336     end\r
1337   end\r
1338   \r
1339 end\r
1340 end\r
1341 \r