Skip to content

Commit 4752dd1

Browse files
wanghongjuanrogerwang
authored andcommitted
[test] Add test for issue5781
- Add test for issue nwjs#5781 - This case is passed on v0.21.2 and v0.27.4 after adding "nwfaketop"
1 parent 44fe510 commit 4752dd1

File tree

4 files changed

+77
-0
lines changed

4 files changed

+77
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import SocketServer
2+
import BaseHTTPServer
3+
import sys
4+
5+
PORT = int(sys.argv[1])
6+
7+
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
8+
9+
def _set_headers(s):
10+
s.send_response(200)
11+
s.send_header('Content-type', 'text/html')
12+
s.send_header("X-Frame-Options", "DENY")
13+
s.end_headers()
14+
15+
def do_GET(s):
16+
"""Respond to a GET request."""
17+
s._set_headers()
18+
s.wfile.write("<script type='text/javascript'> document.write('<h1 id=\"res2\">Node is ' + (typeof nw === 'undefined' ? 'DISABLED': 'ENABLED') + '</h1>');")
19+
s.wfile.write("</script>")
20+
21+
if __name__ == "__main__":
22+
httpd = SocketServer.TCPServer(("", PORT), MyHandler)
23+
httpd.serve_forever()
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<html>
2+
<body>
3+
<iframe src="http://localhost:{port}" nwfaketop ></iframe>
4+
<script>
5+
document.write('<h1 id="res1">Node is ' + (typeof nw === 'undefined' ? 'DISABLED': 'ENABLED') + '</h1>');
6+
</script>
7+
</body>
8+
</html>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"name":"issue5781-X-Frame-Options",
3+
"main":"index.html"
4+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import time
2+
import os
3+
import sys
4+
import subprocess
5+
6+
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
7+
from nw_util import *
8+
9+
from selenium import webdriver
10+
from selenium.webdriver.chrome.options import Options
11+
from selenium.webdriver.common import utils
12+
13+
chrome_options = Options()
14+
testdir = os.path.dirname(os.path.abspath(__file__))
15+
chrome_options.add_argument("nwapp=" + testdir)
16+
os.chdir(testdir)
17+
18+
port = str(utils.free_port())
19+
server = subprocess.Popen(['python', 'http-server.py', port])
20+
21+
tpl = open('index.tpl', 'r')
22+
content = tpl.read().replace('{port}', port)
23+
tpl.close()
24+
25+
html = open('index.html', 'w')
26+
html.write(content)
27+
html.close()
28+
29+
driver = webdriver.Chrome(executable_path=os.environ['CHROMEDRIVER'], chrome_options=chrome_options)
30+
driver.implicitly_wait(5)
31+
try:
32+
print driver.current_url
33+
print 'loading http server in iframe element'
34+
wait_for_element_tag(driver, "iframe")
35+
assert(driver.find_element_by_tag_name("iframe") is not None)
36+
driver.switch_to_frame(driver.find_element_by_tag_name("iframe"))
37+
res2 = wait_for_element_id(driver, 'res2')
38+
assert( "Node is DISABLED" in res2)
39+
print 'page iframe is loaded'
40+
finally:
41+
server.terminate()
42+
driver.quit()

0 commit comments

Comments
 (0)