Fix optional tests to run the live tests in the aggregate dir
[catagits/Catalyst-Runtime.git] / t / aggregate / live_component_controller_action_go.t
CommitLineData
2f381252 1#!perl
2
3use strict;
4use warnings;
5
6use FindBin;
42da66a9 7use lib "$FindBin::Bin/../lib";
2f381252 8
9our $iters;
10
11BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; }
12
ae0e35ee 13use Test::More tests => 54 * $iters;
2f381252 14use Catalyst::Test 'TestApp';
15
16if ( $ENV{CAT_BENCHMARK} ) {
17 require Benchmark;
18 Benchmark::timethis( $iters, \&run_tests );
19}
20else {
21 for ( 1 .. $iters ) {
22 run_tests();
23 }
24}
25
26sub run_tests {
27 {
28 # Test go to global private action
29 ok( my $response = request('http://localhost/action/go/global'),
30 'Request' );
31 ok( $response->is_success, 'Response Successful 2xx' );
32 is( $response->content_type, 'text/plain', 'Response Content-Type' );
33 is( $response->header('X-Catalyst-Action'),
34 'action/go/global', 'Main Class Action' );
35 }
36
37 {
38 my @expected = qw[
39 TestApp::Controller::Action::Go->one
40 TestApp::Controller::Action::Go->two
41 TestApp::Controller::Action::Go->three
42 TestApp::Controller::Action::Go->four
43 TestApp::Controller::Action::Go->five
44 TestApp::View::Dump::Request->process
45 TestApp->end
46 ];
47
48 @expected = map { /Action/ ? (_begin($_), $_) : ($_) } @expected;
49 my $expected = join( ", ", @expected );
50
51 # Test go to chain of actions.
52 ok( my $response = request('http://localhost/action/go/one'),
53 'Request' );
54 ok( $response->is_success, 'Response Successful 2xx' );
55 is( $response->content_type, 'text/plain', 'Response Content-Type' );
56 is( $response->header('X-Catalyst-Action'),
57 'action/go/one', 'Test Action' );
58 is(
59 $response->header('X-Test-Class'),
60 'TestApp::Controller::Action::Go',
61 'Test Class'
62 );
63 is( $response->header('X-Catalyst-Executed'),
64 $expected, 'Executed actions' );
65 like(
66 $response->content,
67 qr/^bless\( .* 'Catalyst::Request' \)$/s,
68 'Content is a serialized Catalyst::Request'
69 );
70 }
71
72 {
73 my @expected = qw[
74 TestApp::Controller::Action::Go->go_die
75 TestApp::Controller::Action::Go->args
76 TestApp->end
77 ];
78
79 @expected = map { /Action/ ? (_begin($_), $_) : ($_) } @expected;
80 my $expected = join( ", ", @expected );
81
82 ok( my $response = request('http://localhost/action/go/go_die'),
83 'Request' );
84 ok( $response->is_success, 'Response Successful 2xx' );
85 is( $response->content_type, 'text/plain', 'Response Content-Type' );
86 is( $response->header('X-Catalyst-Action'),
87 'action/go/go_die', 'Test Action'
88 );
89 is(
90 $response->header('X-Test-Class'),
91 'TestApp::Controller::Action::Go',
92 'Test Class'
93 );
94 is( $response->header('X-Catalyst-Executed'),
95 $expected, 'Executed actions' );
96 is( $response->content, $Catalyst::GO, "Go died as expected" );
97 }
ae0e35ee 98 {
99 ok(
100 my $response = request('http://localhost/action/go/model'),
101 'Request with args'
102 );
103 is( $response->content,
104 q[FATAL ERROR: Couldn't go("Model::Foo"): Action cannot _DISPATCH. Did you try to go() a non-controller action?],
105 q[go('Model::...') test]
106 );
107 }
108 {
109 ok(
110 my $response = request('http://localhost/action/go/view'),
111 'Request with args'
112 );
113 is( $response->content,
114 q[FATAL ERROR: Couldn't go("View::Dump"): Action cannot _DISPATCH. Did you try to go() a non-controller action?],
115 q[go('View::...') test]
116 );
117 }
2f381252 118 {
119 ok(
120 my $response =
121 request('http://localhost/action/go/with_args/old'),
122 'Request with args'
123 );
124 ok( $response->is_success, 'Response Successful 2xx' );
ae0e35ee 125 is( $response->content, 'old', 'go() with args (old)' );
2f381252 126 }
127
128 {
129 ok(
130 my $response = request(
131 'http://localhost/action/go/with_method_and_args/new'),
132 'Request with args and method'
133 );
134 ok( $response->is_success, 'Response Successful 2xx' );
ae0e35ee 135 is( $response->content, 'new', 'go() with args (new)' );
2f381252 136 }
137
138 # test go with embedded args
139 {
140 ok(
141 my $response =
142 request('http://localhost/action/go/args_embed_relative'),
143 'Request'
144 );
145 ok( $response->is_success, 'Response Successful 2xx' );
ae0e35ee 146 is( $response->content, 'ok', 'go() with args_embed_relative' );
2f381252 147 }
148
149 {
150 ok(
151 my $response =
152 request('http://localhost/action/go/args_embed_absolute'),
153 'Request'
154 );
155 ok( $response->is_success, 'Response Successful 2xx' );
ae0e35ee 156 is( $response->content, 'ok', 'go() with args_embed_absolute' );
2f381252 157 }
158 {
159 my @expected = qw[
160 TestApp::Controller::Action::TestRelative->relative_go
161 TestApp::Controller::Action::Go->one
162 TestApp::Controller::Action::Go->two
163 TestApp::Controller::Action::Go->three
164 TestApp::Controller::Action::Go->four
165 TestApp::Controller::Action::Go->five
166 TestApp::View::Dump::Request->process
167 TestApp->end
168 ];
169
170 @expected = map { /Action/ ? (_begin($_), $_) : ($_) } @expected;
171 my $expected = join( ", ", @expected );
172
173 # Test go to chain of actions.
174 ok( my $response = request('http://localhost/action/relative/relative_go'),
175 'Request' );
176 ok( $response->is_success, 'Response Successful 2xx' );
177 is( $response->content_type, 'text/plain', 'Response Content-Type' );
178 is( $response->header('X-Catalyst-Action'),
179 'action/relative/relative_go', 'Test Action' );
180 is(
181 $response->header('X-Test-Class'),
182 'TestApp::Controller::Action::Go',
183 'Test Class'
184 );
185 is( $response->header('X-Catalyst-Executed'),
186 $expected, 'Executed actions' );
187 like(
188 $response->content,
189 qr/^bless\( .* 'Catalyst::Request' \)$/s,
190 'Content is a serialized Catalyst::Request'
191 );
192 }
193 {
194 my @expected = qw[
195 TestApp::Controller::Action::TestRelative->relative_go_two
196 TestApp::Controller::Action::Go->one
197 TestApp::Controller::Action::Go->two
198 TestApp::Controller::Action::Go->three
199 TestApp::Controller::Action::Go->four
200 TestApp::Controller::Action::Go->five
201 TestApp::View::Dump::Request->process
202 TestApp->end
203 ];
204
205 @expected = map { /Action/ ? (_begin($_), $_) : ($_) } @expected;
206 my $expected = join( ", ", @expected );
207
208 # Test go to chain of actions.
209 ok(
210 my $response =
211 request('http://localhost/action/relative/relative_go_two'),
212 'Request'
213 );
214 ok( $response->is_success, 'Response Successful 2xx' );
215 is( $response->content_type, 'text/plain', 'Response Content-Type' );
216 is(
217 $response->header('X-Catalyst-Action'),
218 'action/relative/relative_go_two',
219 'Test Action'
220 );
221 is(
222 $response->header('X-Test-Class'),
223 'TestApp::Controller::Action::Go',
224 'Test Class'
225 );
226 is( $response->header('X-Catalyst-Executed'),
227 $expected, 'Executed actions' );
228 like(
229 $response->content,
230 qr/^bless\( .* 'Catalyst::Request' \)$/s,
231 'Content is a serialized Catalyst::Request'
232 );
233 }
234
235 # test class go -- MUST FAIL!
236 {
237 ok(
238 my $response = request(
239 'http://localhost/action/go/class_go_test_action'),
240 'Request'
241 );
242 ok( !$response->is_success, 'Response Fails' );
ae0e35ee 243 is( $response->content,
244 q(FATAL ERROR: Couldn't go("TestApp"): Action has no namespace: cannot go() to a plain method or component, must be a :Action or some sort.),
245 'Error message'
246 );
2f381252 247 }
248
249 {
250 my @expected = qw[
251 TestApp::Controller::Action::Go->begin
252 TestApp::Controller::Action::Go->go_chained
253 TestApp::Controller::Action::Chained->begin
254 TestApp::Controller::Action::Chained->foo
255 TestApp::Controller::Action::Chained::Foo->spoon
256 TestApp::Controller::Action::Chained->end
257 ];
258
259 my $expected = join( ", ", @expected );
260
261 ok( my $response = request('http://localhost/action/go/go_chained'), 'go to chained + subcontroller endpoint' );
262 is( $response->header('X-Catalyst-Executed'),
263 $expected, 'Executed actions' );
264 is( $response->content, '; 1', 'Content OK' );
265 }
266
267}
268
269
270
271sub _begin {
272 local $_ = shift;
273 s/->(.*)$/->begin/;
274 return $_;
275}
276