Skip to content

Commit ebc493c

Browse files
committed
Fix tests for redirection
Signed-off-by: Kirtan Gajjar <[email protected]>
1 parent 4d6d276 commit ebc493c

File tree

4 files changed

+142
-16
lines changed

4 files changed

+142
-16
lines changed

.travis.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ before_script:
1616
echo "xdebug.ini does not exist"
1717
fi
1818
- ./ci/prepare.sh
19+
- ./ci/add-test-certs.sh
1920

2021
script:
2122
- cd "$TRAVIS_BUILD_DIR/../easyengine"
@@ -27,4 +28,4 @@ after_script:
2728
notifications:
2829
email:
2930
on_success: never
30-
on_failure: change
31+
on_failure: change

ci/add-test-certs.sh

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
#!/usr/bin/env bash
2+
sudo mkdir -p /opt/easyengine/nginx/certs
3+
4+
cat <<EOF | sudo tee /opt/easyengine/nginx/certs/example2.test.crt
5+
-----BEGIN CERTIFICATE-----
6+
MIIDAzCCAeugAwIBAgIJAOfjYN/2twJzMA0GCSqGSIb3DQEBBQUAMBgxFjAUBgNV
7+
BAMMDWV4YW1wbGUyLnRlc3QwHhcNMTgwNzEzMDgyMzEwWhcNMjgwNzEwMDgyMzEw
8+
WjAYMRYwFAYDVQQDDA1leGFtcGxlMi50ZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOC
9+
AQ8AMIIBCgKCAQEA4nSZucxge7AoPQAT9x6q9wd99/Of/5Pg9wimq9F/hI41jKT/
10+
Go24Cjz4+qlBk1vhT9huGfGPvtU939mkEdbtuvYX1qft2LEDK/TAUFtJCXEz/qKP
11+
ndFWyFhOxcKaD8lsbBW9ZuE+qK1Zjc2x4LKESmi6dAk0fgcIKxy8o1C3hFVnW8Mi
12+
A1bzlrTZMJl9McFaLGjtEkIBAXdk0Z9xA7Vl29AWXBkRR16WpEDhxPIR5s4qKiqv
13+
1I32Xaeh7R8NVIm+glMfo4C+b03/hdt6FmDvmvoKjBuFOs8156NMShIeYrzOxv18
14+
wJTLrJXYVjiUDylcaTZhP0a1xp3feOPweS+7gwIDAQABo1AwTjAdBgNVHQ4EFgQU
15+
YhlFd4zw174kiNnDQM39QS5fkk0wHwYDVR0jBBgwFoAUYhlFd4zw174kiNnDQM39
16+
QS5fkk0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAk3b7fwUkG1P+
17+
9SzU+BGXBy/VjMeCqtraZSeKKHBnqZK1AsL7osXY+/k2k5VMZNfHyOjATCpwNc06
18+
rhK115aHKcMpzNfaogN1xwb4/TWzC7pp9QNFJkDsIKxPBa9aYuSBlvXfKK1BOS49
19+
XaNC5cOdqNV5kJOU3zSqYu0P5M65rRnUQwaOvOtqknxAgsVQcfzQVfl3vFSlGMcA
20+
qlKifxwYo77dUp2rucY418bh2sFUIzaIFiB2cxqfOkDa70RSye5aJStvG4mxImAF
21+
WlZrjFDu7AwkoQSD0rkwSoOwEmrwXAAjlfGueDIq/bBLPiTptPy3zIyutT0JHV2b
22+
lgkJtDRf0A==
23+
-----END CERTIFICATE-----
24+
EOF
25+
26+
cat <<EOF | sudo tee /opt/easyengine/nginx/certs/example2.test.key
27+
28+
-----BEGIN RSA PRIVATE KEY-----
29+
MIIEogIBAAKCAQEA4nSZucxge7AoPQAT9x6q9wd99/Of/5Pg9wimq9F/hI41jKT/
30+
Go24Cjz4+qlBk1vhT9huGfGPvtU939mkEdbtuvYX1qft2LEDK/TAUFtJCXEz/qKP
31+
ndFWyFhOxcKaD8lsbBW9ZuE+qK1Zjc2x4LKESmi6dAk0fgcIKxy8o1C3hFVnW8Mi
32+
A1bzlrTZMJl9McFaLGjtEkIBAXdk0Z9xA7Vl29AWXBkRR16WpEDhxPIR5s4qKiqv
33+
1I32Xaeh7R8NVIm+glMfo4C+b03/hdt6FmDvmvoKjBuFOs8156NMShIeYrzOxv18
34+
wJTLrJXYVjiUDylcaTZhP0a1xp3feOPweS+7gwIDAQABAoIBAFrDNxXj10vbx9Tj
35+
Ih1qukU2SIPHrnoGMCVy3zKATia3xLixLNncsUXROE1m5zSDn+ObsE1PpzhqSVld
36+
5seLqE7F8boEJm0yTT4h466RV82kBJ3rU7qCO9Eiq7fRjmQDbCRJ9la0sqNyjzEp
37+
n0Ca7DDSluCJC/PzJ4/3/ZdLc7Jis0a8Klpp2OzjXsApywSindKsC4GqLCWG/ZCA
38+
yncAjN8BiSoUU/cd96ckqnDTgXyx5tFZSWwVNG7hb77Y/Kes9Z4oaZNCGaLGxurI
39+
89WPfGeEvqN0GG+S3TjUxs+n9iZvTKa/6o3eT1TH6C1eWBQoEj9EoM8Mrx/K+zYB
40+
JAj6cMkCgYEA/KBCB8Oj+4XL3+21MsFUkgQKQm8FRCp29N5YxlTmcnSBgasvfHXR
41+
WTIEojPuABjHDyO5HKJANybFN/3pq1OgWVVg4n2ubi11HOGI5lsslXpGTuwF7fXn
42+
hyb07Q4Ohd/assrSB43RPKXJ1F6cbpOC/YpSQzD3Wra2Hv1m70u8dCUCgYEA5Xrd
43+
M7grFgSvg63072+ZnnsOhdva9QnidR7i4IWri2hWCO+pnhAwu4owJdKCj4vvlVN+
44+
vAJqR0TImaD/uc8m61a8slF1Ndi42lyrtWYgwMh1sBqB3uzsoDln3NjokmCLH/OC
45+
fLvucIBACHoaz8zpQQFiNhfEw9FnGA+Jk57tzIcCgYAT9a2B44k/RDD5flSEsBW4
46+
e6071n26BwjjC/ZDpU2X2XCqCBZ2ZPCndXY8QpIZW9vObGohwwgD04JdjCg8Kx1O
47+
MZq4CmoPtnO8Vm10lduN691GOwu042rpmMBdQnEPTsJ+wduaUTAo9IhfySHe8rS0
48+
x4r8WBATEMCO7kKFwZwgKQKBgG6lGeipAOVB5xp3kqSry4b1UGBMTDtfw7ey57NX
49+
4Al8ihcO71qN9eFG1MY3xMnPr/nw4ydlhrbMPGiOjx6Y+ev4y0yzJ++Jij+G9Sem
50+
kV5CiTQa48mHtOPgKer7DtAdCpeiQqU/u8y0mas8rJbK9yBnuWHZff7ohWu9ehka
51+
RRAbAoGAa+qjNQapv6XCNeAmunhDgMBzRZhTLZrLSvdNflenEuMpkgrkHbgJJnrG
52+
Yvr8i0kojvoKofYPoqvno/S5ZM2QLIVCP28HkXhVSv63doMm3pcibiAagHpNYLa9
53+
4uwN640uFpqt7JCSOlJP7w4zx5BKXU9D9FRwri7QivBpmBHpVLk=
54+
-----END RSA PRIVATE KEY-----
55+
EOF
56+
57+
cat <<EOF | sudo tee /opt/easyengine/nginx/certs/www.example3.test.crt
58+
-----BEGIN CERTIFICATE-----
59+
MIIDAzCCAeugAwIBAgIJAJo9QUktB2TOMA0GCSqGSIb3DQEBBQUAMBgxFjAUBgNV
60+
BAMMDWV4YW1wbGUzLnRlc3QwHhcNMTgwNzEzMDgyMjUxWhcNMjgwNzEwMDgyMjUx
61+
WjAYMRYwFAYDVQQDDA1leGFtcGxlMy50ZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOC
62+
AQ8AMIIBCgKCAQEAxjI414PGPUf9aRSmjVywFHMHLhJGF1+Lg3YimM9fKo1WqD4T
63+
2mepdV9zOztUCGrszMNcpaltjf8nTSuNwEWUp9TQYufABavN3TvzNWnmT3Q5NIA0
64+
2v6SZVQUEskWwoDOqhudH8D6/Dk4m449UMKrN2VD3A61T6TtlkbiX6lX2e/8UfSH
65+
ECFZP/xAh68l/XgcsI46tfvBPDdQdSDYhFxIhRqWevOT2FVQjR63yL6uZ96SeiIH
66+
sntxjBnqaYTYwgN5Bjv1vbJwHqOMhZNnquVfxh/+EOd/gBQKBWiavC5HmjnVbjyT
67+
6V9GiGBMsdRfjf/pNjIaqjXMYyIEtFm2/SSaIQIDAQABo1AwTjAdBgNVHQ4EFgQU
68+
nrOjZu9o7IznjL5JHADGu/VLB7UwHwYDVR0jBBgwFoAUnrOjZu9o7IznjL5JHADG
69+
u/VLB7UwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAqhW1cDx4Owrj
70+
EUJkyKBxT6aDtWUdSP7SAvfl4pRz3wdpTT6TWc6t0s3X81tRYSX3on4L4dzfpp2/
71+
/Hgz6LlBIQ9thznE7WnUDE7VR6A0+Grc4po2Vq20z52LGzff/yKWx3PSVjL0f/IL
72+
HZ2t5YpI36nHNcJFEJWlckPkcDa8tX5tsDFr50luCsvuZBGYu6pnLWEZumL/QdHC
73+
UVMAKtWZxf9Via6aIKqsUNdBwq7gHdiZFYyi8NSCX2yD06LtIjBzDTn9Qsch6hSD
74+
utaxR66cXq8laVwyHc+Z+HkG/Y7GytDdKGYUTPB/lIhqpMrJJDcJLJz10yR8zBub
75+
ZLuoQMvF5Q==
76+
-----END CERTIFICATE-----
77+
EOF
78+
cat <<EOF | sudo tee /opt/easyengine/nginx/certs/www.example3.test.key
79+
-----BEGIN RSA PRIVATE KEY-----
80+
MIIEogIBAAKCAQEAxjI414PGPUf9aRSmjVywFHMHLhJGF1+Lg3YimM9fKo1WqD4T
81+
2mepdV9zOztUCGrszMNcpaltjf8nTSuNwEWUp9TQYufABavN3TvzNWnmT3Q5NIA0
82+
2v6SZVQUEskWwoDOqhudH8D6/Dk4m449UMKrN2VD3A61T6TtlkbiX6lX2e/8UfSH
83+
ECFZP/xAh68l/XgcsI46tfvBPDdQdSDYhFxIhRqWevOT2FVQjR63yL6uZ96SeiIH
84+
sntxjBnqaYTYwgN5Bjv1vbJwHqOMhZNnquVfxh/+EOd/gBQKBWiavC5HmjnVbjyT
85+
6V9GiGBMsdRfjf/pNjIaqjXMYyIEtFm2/SSaIQIDAQABAoIBABCX/dhVaRCSaW4V
86+
04f8XaWop848q2+jiTu9dVIT8qTOZpX5dJIRocd48V3hLrzxrtfJ94TLNafw1+qH
87+
HfweFz8h+zx8qMAQzVCbh1ZOgoDeezehEEvRipI/Qtr7yRMJ08O8QiB5eMoLRGkJ
88+
tKqBUfJ2YQMYnCeJ6HZvgt59gCR35FVzstXhAFTUPJP/kOyF/eIRGZNaBc3LZ5ah
89+
anWBcl+7OhcPBkYt8QCyPUFU9VxGyDe/Ei5VOasQAyfGQ92YMAPEYGH/uoND59G5
90+
Z7d+xvmzCEzaLFp2AsmZmvN3s3I4qUdOwSm9f2ajArUPURSybpnYoCdXvdbIWDqm
91+
v2jtxi0CgYEA+8ZHD07LVijalFaSc+IyOkpqs2ON3C7laljtd/tw2L5vC4gxggwC
92+
TkXNrJWAt/4icbc/SXjBcHF8f4Wkz7TVuKuA14XJYO2QMeFzB/wjuHam2cF6NWf0
93+
Z6hSEfU+ez1VaFs3tLHSMz7sRLX/3A0AKA6TKEH9UFh/6uRCCNYlyXsCgYEAyYXA
94+
NcHPZoWKBcKIAe4pLBDOZgkO/V5CBJ8R38TIizOJWjnzCuIyG60bq/7uVegGeWHr
95+
8Ajzz4rKSkmoiCXzT1s50/i7u5W9OUC9QaQYjR1FcoK543f77lZZ7RVhmHw9bACu
96+
iXDQQMUeTv2OJnjDghAwa2ML92vm3u76zCrEEhMCgYATqm4cfPwW88P2+DgiQxXH
97+
Rc7Fyk3nV+ZlgyKxT3uGAoHr9axgSw3XDU6+X0MZnAkWtsiDtaHuZX7i+w5fhvF2
98+
pja/Ht0W7BdqPgDdK82id+oacilYiJEnk5ctfelueOD18MIOJCGWDSEpUMn2ZzGO
99+
72yBJX5iyzbaow+hXxC+hwKBgEQ4fSs1oyqHxoPQqQ5OO63pOpYcNvDa+epqlzhz
100+
e5h0J+ldeMOUc3YfEiEVukVmuNpape6qeS8nQvgHG4CLqGSS826o45TLSjWZjvgr
101+
vwv2fs4XJyq0MZsrrGGwPUvLs1dem7d3c2iZ0nrXJ0oq07SyGlIgQ6rM4mlR6aE4
102+
UQv1AoGAPgI7RDJcqXMwG7CyIboLTyPRWsFfhN1nlALP1URK61kAkxgBusg45GEa
103+
k8hTB9lhcWDTbL/GVHn5JWxn8ytLPZiDR2RbJtE/Z1bagROANrFYjqJib8lyFhvt
104+
HYXONl5W77CPrYjOLD+Q9ZXjYYvtAxnqFNXicRMPti7Sre9SkRo=
105+
-----END RSA PRIVATE KEY-----
106+
EOF

features/bootstrap/FeatureContext.php

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public function stdoutShouldReturnSomethingLike($output_stream, PyStringNode $ex
102102
throw new Exception("Actual output is:\n" . $command_output);
103103
}
104104
}
105+
105106
/**
106107
* @Then The :site db entry should be removed
107108
*/
@@ -176,7 +177,9 @@ public function requestOnShouldContainFollowingHeaders($site, TableNode $table)
176177
curl_setopt($ch, CURLOPT_HEADER, true);
177178
curl_setopt($ch, CURLOPT_NOBODY, true);
178179
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
180+
curl_setopt($ch, CURLOPT_VERBOSE, true);
179181
$headers = curl_exec($ch);
182+
180183
curl_close($ch);
181184

182185
$rows = $table->getHash();
@@ -200,7 +203,9 @@ public function requestOnWithHeaderShouldContainFollowingHeaders($host, $header,
200203
curl_setopt($ch, CURLOPT_HTTPHEADER, [ $header ]);
201204
curl_setopt($ch, CURLOPT_NOBODY, true);
202205
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
206+
curl_setopt($ch, CURLOPT_VERBOSE, true);
203207
$headers = curl_exec($ch);
208+
204209
curl_close($ch);
205210

206211
$rows = $table->getHash();
@@ -213,15 +218,30 @@ public function requestOnWithHeaderShouldContainFollowingHeaders($host, $header,
213218
}
214219

215220
/**
216-
* @When Site :site has certs
221+
* @Then Request on :host with resolve option :resolve should contain following headers:
217222
*/
218-
public function siteHasCerts( $site )
223+
public function requestOnWithResolveOptionShouldContainFollowingHeaders($host, $resolve, TableNode $table)
219224
{
220-
$certs_dir = EE_CONF_ROOT . '/nginx/certs/';
221225

222-
touch( $certs_dir . $site . '.crt' );
223-
touch( $certs_dir . $site . '.key' );
224-
exec('docker exec ee-nginx-proxy sh -c "/app/docker-entrypoint.sh /usr/local/bin/docker-gen /app/nginx.tmpl /etc/nginx/conf.d/default.conf; /usr/sbin/nginx -s reload"');
226+
$ch = curl_init();
227+
curl_setopt($ch, CURLOPT_URL, $host);
228+
curl_setopt($ch, CURLOPT_HEADER, true);
229+
curl_setopt($ch, CURLOPT_NOBODY, true);
230+
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
231+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
232+
curl_setopt($ch, CURLOPT_RESOLVE, [ $resolve ]);
233+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
234+
curl_setopt($ch, CURLOPT_VERBOSE, true);
235+
$headers = curl_exec($ch);
236+
curl_close($ch);
237+
238+
$rows = $table->getHash();
239+
240+
foreach ($rows as $row) {
241+
if (strpos($headers, $row['header']) === false) {
242+
throw new Exception("Unable to find " . $row['header'] . "\nActual output is : " . $headers);
243+
}
244+
}
225245
}
226246

227247
/**
@@ -235,6 +255,7 @@ public static function cleanup(AfterFeatureScope $scope)
235255
exec("sudo bin/ee site delete example2.test --yes");
236256
exec("sudo bin/ee site delete www.example3.test --yes");
237257

258+
238259
if(file_exists('ee.phar')) {
239260
unlink('ee.phar');
240261
}

features/redirect.feature

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,37 @@
11
Feature: Site Redirection
22

33
Scenario: no_www-no_ssl redirection works properly
4-
When I run 'bin/ee site create example.test'
4+
When I run 'sudo bin/ee site create example.test'
55
Then Request on 'localhost' with header 'Host: www.example.test' should contain following headers:
66
| header |
77
| HTTP/1.1 301 Moved Permanently |
88
| Location: http://example.test/ |
99

1010
Scenario: www-no_ssl redirection works properly
11-
When I run 'bin/ee site create www.example1.test'
11+
When I run 'sudo bin/ee site create www.example1.test'
1212
Then Request on 'localhost' with header 'Host: example1.test' should contain following headers:
1313
| header |
1414
| HTTP/1.1 301 Moved Permanently |
1515
| Location: http://www.example1.test/ |
1616

1717
Scenario: no_www-ssl redirection works properly
18-
When I run 'bin/ee site create example2.test --le [email protected] --skip-status-check'
19-
And Site 'example2.test' has certs
18+
When I run 'sudo bin/ee site create example2.test --le [email protected] --skip-status-check'
2019
Then Request on 'localhost' with header 'Host: www.example2.test' should contain following headers:
2120
| header |
2221
| HTTP/1.1 301 Moved Permanently |
2322
| Location: https://example2.test/ |
24-
And Request on 'localhost:443' with header 'Host: www.example2.test' should contain following headers:
23+
And Request on 'https://www.example2.test' with resolve option 'www.example2.test:443:127.0.0.1' should contain following headers:
2524
| header |
2625
| HTTP/1.1 301 Moved Permanently |
2726
| Location: https://example2.test/ |
2827

2928
Scenario: www-ssl redirection works properly
30-
When I run 'bin/ee site create www.example3.test'
31-
And Site 'www.example3.test' has certs
32-
Then Request on 'localhost' with header 'Host: www.example3.test' should contain following headers:
29+
When I run 'sudo bin/ee site create www.example3.test --le [email protected] --skip-status-check'
30+
Then Request on 'localhost' with header 'Host: example3.test' should contain following headers:
3331
| header |
3432
| HTTP/1.1 301 Moved Permanently |
3533
| Location: https://www.example3.test/ |
36-
And Request on 'localhost:443' with header 'Host: example3.test' should contain following headers:
34+
And Request on 'https://example3.test/' with resolve option 'example3.test:443:127.0.0.1' should contain following headers:
3735
| header |
3836
| HTTP/1.1 301 Moved Permanently |
3937
| Location: https://www.example3.test/ |

0 commit comments

Comments
 (0)