@@ -50,7 +50,7 @@ def index_put():
50
50
assert sorted (rv .allow ) == ['GET' , 'HEAD' , 'OPTIONS' , 'POST' , 'PUT' ]
51
51
52
52
53
- def test_options_handling_disabled ():
53
+ def test_provide_automatic_options_attr ():
54
54
app = flask .Flask (__name__ )
55
55
56
56
def index ():
@@ -70,6 +70,54 @@ def index2():
70
70
assert sorted (rv .allow ) == ['OPTIONS' ]
71
71
72
72
73
+ def test_provide_automatic_options_kwarg ():
74
+ app = flask .Flask (__name__ )
75
+
76
+ def index ():
77
+ return flask .request .method
78
+
79
+ def more ():
80
+ return flask .request .method
81
+
82
+ app .add_url_rule ('/' , view_func = index , provide_automatic_options = False )
83
+ app .add_url_rule (
84
+ '/more' , view_func = more , methods = ['GET' , 'POST' ],
85
+ provide_automatic_options = False
86
+ )
87
+
88
+ c = app .test_client ()
89
+ assert c .get ('/' ).data == b'GET'
90
+
91
+ rv = c .post ('/' )
92
+ assert rv .status_code == 405
93
+ assert sorted (rv .allow ) == ['GET' , 'HEAD' ]
94
+
95
+ # Older versions of Werkzeug.test.Client don't have an options method
96
+ if hasattr (c , 'options' ):
97
+ rv = c .options ('/' )
98
+ else :
99
+ rv = c .open ('/' , method = 'OPTIONS' )
100
+
101
+ assert rv .status_code == 405
102
+
103
+ rv = c .head ('/' )
104
+ assert rv .status_code == 200
105
+ assert not rv .data # head truncates
106
+ assert c .post ('/more' ).data == b'POST'
107
+ assert c .get ('/more' ).data == b'GET'
108
+
109
+ rv = c .delete ('/more' )
110
+ assert rv .status_code == 405
111
+ assert sorted (rv .allow ) == ['GET' , 'HEAD' , 'POST' ]
112
+
113
+ if hasattr (c , 'options' ):
114
+ rv = c .options ('/more' )
115
+ else :
116
+ rv = c .open ('/more' , method = 'OPTIONS' )
117
+
118
+ assert rv .status_code == 405
119
+
120
+
73
121
def test_request_dispatching ():
74
122
app = flask .Flask (__name__ )
75
123
@@ -1751,44 +1799,3 @@ def run_simple_mock(hostname, port, *args, **kwargs):
1751
1799
app = flask .Flask (__name__ )
1752
1800
app .config ['SERVER_NAME' ] = 'pocoo.org:8080'
1753
1801
app .run (host , port )
1754
-
1755
-
1756
- def test_disable_automatic_options ():
1757
- # Issue 1488: Add support for a kwarg to add_url_rule to disable the auto OPTIONS response
1758
- app = flask .Flask (__name__ )
1759
-
1760
- def index ():
1761
- return flask .request .method
1762
-
1763
- def more ():
1764
- return flask .request .method
1765
-
1766
- app .add_url_rule ('/' , 'index' , index , provide_automatic_options = False )
1767
- app .add_url_rule ('/more' , 'more' , more , methods = ['GET' , 'POST' ], provide_automatic_options = False )
1768
-
1769
- c = app .test_client ()
1770
- assert c .get ('/' ).data == b'GET'
1771
- rv = c .post ('/' )
1772
- assert rv .status_code == 405
1773
- assert sorted (rv .allow ) == ['GET' , 'HEAD' ]
1774
- # Older versions of Werkzeug.test.Client don't have an options method
1775
- if hasattr (c , 'options' ):
1776
- rv = c .options ('/' )
1777
- else :
1778
- rv = c .open ('/' , method = 'OPTIONS' )
1779
- assert rv .status_code == 405
1780
-
1781
- rv = c .head ('/' )
1782
- assert rv .status_code == 200
1783
- assert not rv .data # head truncates
1784
- assert c .post ('/more' ).data == b'POST'
1785
- assert c .get ('/more' ).data == b'GET'
1786
- rv = c .delete ('/more' )
1787
- assert rv .status_code == 405
1788
- assert sorted (rv .allow ) == ['GET' , 'HEAD' , 'POST' ]
1789
- # Older versions of Werkzeug.test.Client don't have an options method
1790
- if hasattr (c , 'options' ):
1791
- rv = c .options ('/more' )
1792
- else :
1793
- rv = c .open ('/more' , method = 'OPTIONS' )
1794
- assert rv .status_code == 405
0 commit comments