77from odoo .tests .common import TransactionCase , tagged
88from odoo .tools import DotDict
99
10- from odoo .addons .website .tools import MockRequest
10+ from odoo .addons .http_routing .tests .common import MockRequest
11+
12+
13+ def _setup_demo_records (env ):
14+ """Create demo records for tests."""
15+ demo_user = env ["res.users" ].search ([("login" , "=" , "demo" )], limit = 1 )
16+ if not demo_user :
17+ demo_user = env ["res.users" ].create (
18+ {"login" : "demo" , "name" : "Marc Demo" , "group_ids" : [(6 , 0 , [])]}
19+ )
20+ endpoints = env ["endpoint.endpoint" ]
21+ endpoints += env ["endpoint.endpoint" ].create (
22+ {
23+ "name" : "Demo Endpoint 1" ,
24+ "route" : "/demo/one" ,
25+ "request_method" : "GET" ,
26+ "exec_mode" : "code" ,
27+ "code_snippet" : 'result = {"response": Response("ok")}' ,
28+ }
29+ )
30+ endpoints += env ["endpoint.endpoint" ].create (
31+ {
32+ "name" : "Demo Endpoint 2" ,
33+ "route" : "/demo/as_demo_user" ,
34+ "request_method" : "GET" ,
35+ "auth_type" : "public" ,
36+ "exec_as_user_id" : demo_user .id ,
37+ "exec_mode" : "code" ,
38+ "code_snippet" : (
39+ 'result = {"response": Response("My name is: " + user.name)}'
40+ ),
41+ }
42+ )
43+ endpoints += env ["endpoint.endpoint" ].create (
44+ {
45+ "name" : "Demo Endpoint 3" ,
46+ "route" : "/demo/json_data" ,
47+ "request_method" : "GET" ,
48+ "auth_type" : "public" ,
49+ "exec_as_user_id" : demo_user .id ,
50+ "exec_mode" : "code" ,
51+ "code_snippet" : 'result = {"payload": {"a": 1, "b": 2}}' ,
52+ }
53+ )
54+ endpoints += env ["endpoint.endpoint" ].create (
55+ {
56+ "name" : "Demo Endpoint 4" ,
57+ "route" : "/demo/raise_not_found" ,
58+ "request_method" : "GET" ,
59+ "auth_type" : "public" ,
60+ "exec_as_user_id" : demo_user .id ,
61+ "exec_mode" : "code" ,
62+ "code_snippet" : "raise werkzeug.exceptions.NotFound()" ,
63+ }
64+ )
65+ endpoints += env ["endpoint.endpoint" ].create (
66+ {
67+ "name" : "Demo Endpoint 5" ,
68+ "route" : "/demo/raise_validation_error" ,
69+ "request_method" : "GET" ,
70+ "auth_type" : "public" ,
71+ "exec_as_user_id" : demo_user .id ,
72+ "exec_mode" : "code" ,
73+ "code_snippet" : (
74+ 'raise exceptions.ValidationError("Sorry, you cannot do this!")'
75+ ),
76+ }
77+ )
78+ endpoints += env ["endpoint.endpoint" ].create (
79+ {
80+ "name" : "Demo Endpoint 6" ,
81+ "route" : "/demo/value_from_request" ,
82+ "request_method" : "GET" ,
83+ "auth_type" : "public" ,
84+ "exec_as_user_id" : demo_user .id ,
85+ "exec_mode" : "code" ,
86+ "code_snippet" : (
87+ 'result = {"response": Response(request.params.get("your_name", ""))}'
88+ ),
89+ }
90+ )
91+ endpoints += env ["endpoint.endpoint" ].create (
92+ {
93+ "name" : "Demo Endpoint 7" ,
94+ "route" : "/demo/bad_method" ,
95+ "request_method" : "GET" ,
96+ "auth_type" : "public" ,
97+ "exec_as_user_id" : demo_user .id ,
98+ "exec_mode" : "code" ,
99+ "code_snippet" : (
100+ 'result = {"payload": "Method used:" + request.httprequest.method}'
101+ ),
102+ }
103+ )
104+ return endpoints
11105
12106
13107@tagged ("-at_install" , "post_install" )
@@ -31,7 +125,7 @@ def _setup_context(cls):
31125
32126 @classmethod
33127 def _setup_records (cls ):
34- pass
128+ cls . endpoint = _setup_demo_records ( cls . env )[ 0 ]
35129
36130 @contextlib .contextmanager
37131 def _get_mocked_request (
0 commit comments