@@ -33,6 +33,8 @@ def setUpClass(self):
33
33
34
34
box.schema.user.create('test', {password = 'test', if_not_exists = true})
35
35
box.schema.user.grant('test', 'read,write,execute,create', 'universe')
36
+
37
+ box.schema.user.create('no_grants', {if_not_exists = true})
36
38
""" )
37
39
38
40
self .conn_encoding_utf8 = tarantool .Connection (
@@ -45,11 +47,16 @@ def setUpClass(self):
45
47
encoding = None )
46
48
47
49
if self .adm .tnt_version >= pkg_resources .parse_version ('2.10.0' ):
50
+ self .conn_encoding_utf8 .eval (r"""
51
+ local err = box.error.new(box.error.UNKNOWN)
52
+ rawset(_G, 'simple_error', err)
53
+ """ )
54
+
48
55
# https://github.com/tarantool/tarantool/blob/125c13c81abb302708771ba04d59382d44a4a512/test/box-tap/extended_error.test.lua
49
56
self .conn_encoding_utf8 .eval (r"""
50
57
local user = box.session.user()
51
58
box.schema.func.create('forbidden_function', {body = 'function() end'})
52
- box.session.su('guest ')
59
+ box.session.su('no_grants ')
53
60
_, access_denied_error = pcall(function() box.func.forbidden_function:call() end)
54
61
box.session.su(user)
55
62
rawset(_G, 'access_denied_error', access_denied_error)
@@ -86,44 +93,34 @@ def setUp(self):
86
93
'str_type' : str ,
87
94
'python' : tarantool .BoxError (
88
95
type = 'ClientError' ,
89
- file = '[string " local err = box.error.ne..."] ' ,
96
+ file = 'eval ' ,
90
97
line = 1 ,
91
98
message = 'Unknown error' ,
92
99
errno = 0 ,
93
100
errcode = 0 ,
94
101
),
95
102
'msgpack' : (b'\x81 \x00 \x91 \x86 \x00 \xab \x43 \x6c \x69 \x65 \x6e \x74 ' +
96
- b'\x45 \x72 \x72 \x6f \x72 \x01 \xd9 \x3b \x5b \x73 \x74 \x72 ' +
97
- b'\x69 \x6e \x67 \x20 \x22 \x20 \x20 \x20 \x20 \x20 \x20 \x20 ' +
98
- b'\x20 \x20 \x20 \x20 \x20 \x20 \x20 \x20 \x20 \x20 \x20 \x20 ' +
99
- b'\x20 \x20 \x6c \x6f \x63 \x61 \x6c \x20 \x65 \x72 \x72 \x20 ' +
100
- b'\x3d \x20 \x62 \x6f \x78 \x2e \x65 \x72 \x72 \x6f \x72 \x2e ' +
101
- b'\x6e \x65 \x2e \x2e \x2e \x22 \x5d \x02 \x01 \x03 \xad \x55 ' +
102
- b'\x6e \x6b \x6e \x6f \x77 \x6e \x20 \x65 \x72 \x72 \x6f \x72 ' +
103
- b'\x04 \x00 \x05 \x00 ' ),
104
- 'tarantool' : "box.error.new(box.error.UNKNOWN)" ,
103
+ b'\x45 \x72 \x72 \x6f \x72 \x01 \xa4 \x65 \x76 \x61 \x6c \x02 ' +
104
+ b'\x01 \x03 \xad \x55 \x6e \x6b \x6e \x6f \x77 \x6e \x20 \x65 ' +
105
+ b'\x72 \x72 \x6f \x72 \x04 \x00 \x05 \x00 ' ),
106
+ 'tarantool' : "simple_error" ,
105
107
},
106
108
'simple_error_for_encoding_none' : {
107
109
'conn' : 'conn_encoding_none' ,
108
110
'str_type' : lambda obj : bytes (obj , encoding = 'utf8' ),
109
111
'python' : tarantool .BoxError (
110
112
type = b'ClientError' ,
111
- file = b'[string " local err = box.error.ne..."] ' ,
113
+ file = b'eval ' ,
112
114
line = 1 ,
113
115
message = b'Unknown error' ,
114
116
errno = 0 ,
115
117
errcode = 0 ,
116
118
),
117
119
'msgpack' : (b'\x81 \x00 \x91 \x86 \x00 \xab \x43 \x6c \x69 \x65 \x6e \x74 ' +
118
- b'\x45 \x72 \x72 \x6f \x72 \x01 \xda \x00 \x3b \x5b \x73 \x74 ' +
119
- b'\x72 \x69 \x6e \x67 \x20 \x22 \x20 \x20 \x20 \x20 \x20 \x20 ' +
120
- b'\x20 \x20 \x20 \x20 \x20 \x20 \x20 \x20 \x20 \x20 \x20 \x20 ' +
121
- b'\x20 \x20 \x20 \x6c \x6f \x63 \x61 \x6c \x20 \x65 \x72 \x72 ' +
122
- b'\x20 \x3d \x20 \x62 \x6f \x78 \x2e \x65 \x72 \x72 \x6f \x72 ' +
123
- b'\x2e \x6e \x65 \x2e \x2e \x2e \x22 \x5d \x02 \x01 \x03 \xad ' +
124
- b'\x55 \x6e \x6b \x6e \x6f \x77 \x6e \x20 \x65 \x72 \x72 \x6f ' +
125
- b'\x72 \x04 \x00 \x05 \x00 ' ),
126
- 'tarantool' : "box.error.new(box.error.UNKNOWN)" ,
120
+ b'\x45 \x72 \x72 \x6f \x72 \x01 \xa4 \x65 \x76 \x61 \x6c \x02 ' +
121
+ b'\x01 \x03 \xad \x55 \x6e \x6b \x6e \x6f \x77 \x6e \x20 \x65 ' +
122
+ b'\x72 \x72 \x6f \x72 \x04 \x00 \x05 \x00 ' ),
123
+ 'tarantool' : "simple_error" ,
127
124
},
128
125
'error_with_fields_for_encoding_utf8' : {
129
126
'conn' : 'conn_encoding_utf8' ,
@@ -132,7 +129,7 @@ def setUp(self):
132
129
type = 'AccessDeniedError' ,
133
130
file = '/__w/sdk/sdk/tarantool-2.10/tarantool/src/box/func.c' ,
134
131
line = 535 ,
135
- message = "Execute access to function 'forbidden_function' is denied for user 'guest '" ,
132
+ message = "Execute access to function 'forbidden_function' is denied for user 'no_grants '" ,
136
133
errno = 0 ,
137
134
errcode = 42 ,
138
135
fields = {
@@ -148,19 +145,20 @@ def setUp(self):
148
145
b'\x2d \x32 \x2e \x31 \x30 \x2f \x74 \x61 \x72 \x61 \x6e \x74 ' +
149
146
b'\x6f \x6f \x6c \x2f \x73 \x72 \x63 \x2f \x62 \x6f \x78 \x2f ' +
150
147
b'\x66 \x75 \x6e \x63 \x2e \x63 \x02 \xcd \x02 \x17 \x03 \xd9 ' +
151
- b'\x4a \x45 \x78 \x65 \x63 \x75 \x74 \x65 \x20 \x61 \x63 \x63 ' +
148
+ b'\x4e \x45 \x78 \x65 \x63 \x75 \x74 \x65 \x20 \x61 \x63 \x63 ' +
152
149
b'\x65 \x73 \x73 \x20 \x74 \x6f \x20 \x66 \x75 \x6e \x63 \x74 ' +
153
150
b'\x69 \x6f \x6e \x20 \x27 \x66 \x6f \x72 \x62 \x69 \x64 \x64 ' +
154
151
b'\x65 \x6e \x5f \x66 \x75 \x6e \x63 \x74 \x69 \x6f \x6e \x27 ' +
155
152
b'\x20 \x69 \x73 \x20 \x64 \x65 \x6e \x69 \x65 \x64 \x20 \x66 ' +
156
- b'\x6f \x72 \x20 \x75 \x73 \x65 \x72 \x20 \x27 \x67 \x75 \x65 ' +
157
- b'\x73 \x74 \x27 \x04 \x00 \x05 \x2a \x06 \x83 \xab \x6f \x62 ' +
158
- b'\x6a \x65 \x63 \x74 \x5f \x74 \x79 \x70 \x65 \xa8 \x66 \x75 ' +
159
- b'\x6e \x63 \x74 \x69 \x6f \x6e \xab \x6f \x62 \x6a \x65 \x63 ' +
160
- b'\x74 \x5f \x6e \x61 \x6d \x65 \xb2 \x66 \x6f \x72 \x62 \x69 ' +
161
- b'\x64 \x64 \x65 \x6e \x5f \x66 \x75 \x6e \x63 \x74 \x69 \x6f ' +
162
- b'\x6e \xab \x61 \x63 \x63 \x65 \x73 \x73 \x5f \x74 \x79 \x70 ' +
163
- b'\x65 \xa7 \x45 \x78 \x65 \x63 \x75 \x74 \x65 ' ),
153
+ b'\x6f \x72 \x20 \x75 \x73 \x65 \x72 \x20 \x27 \x6e \x6f \x5f ' +
154
+ b'\x67 \x72 \x61 \x6e \x74 \x73 \x27 \x04 \x00 \x05 \x2a \x06 ' +
155
+ b'\x83 \xab \x6f \x62 \x6a \x65 \x63 \x74 \x5f \x74 \x79 \x70 ' +
156
+ b'\x65 \xa8 \x66 \x75 \x6e \x63 \x74 \x69 \x6f \x6e \xab \x6f ' +
157
+ b'\x62 \x6a \x65 \x63 \x74 \x5f \x6e \x61 \x6d \x65 \xb2 \x66 ' +
158
+ b'\x6f \x72 \x62 \x69 \x64 \x64 \x65 \x6e \x5f \x66 \x75 \x6e ' +
159
+ b'\x63 \x74 \x69 \x6f \x6e \xab \x61 \x63 \x63 \x65 \x73 \x73 ' +
160
+ b'\x5f \x74 \x79 \x70 \x65 \xa7 \x45 \x78 \x65 \x63 \x75 \x74 ' +
161
+ b'\x65 ' ),
164
162
'tarantool' : "access_denied_error" ,
165
163
'ignore_file_info' : True ,
166
164
},
@@ -171,7 +169,7 @@ def setUp(self):
171
169
type = b'AccessDeniedError' ,
172
170
file = b'/__w/sdk/sdk/tarantool-2.10/tarantool/src/box/func.c' ,
173
171
line = 535 ,
174
- message = b"Execute access to function 'forbidden_function' is denied for user 'guest '" ,
172
+ message = b"Execute access to function 'forbidden_function' is denied for user 'no_grants '" ,
175
173
errno = 0 ,
176
174
errcode = 42 ,
177
175
fields = {
@@ -187,19 +185,20 @@ def setUp(self):
187
185
b'\x6c \x2d \x32 \x2e \x31 \x30 \x2f \x74 \x61 \x72 \x61 \x6e ' +
188
186
b'\x74 \x6f \x6f \x6c \x2f \x73 \x72 \x63 \x2f \x62 \x6f \x78 ' +
189
187
b'\x2f \x66 \x75 \x6e \x63 \x2e \x63 \x02 \xcd \x02 \x17 \x03 ' +
190
- b'\xda \x00 \x4a \x45 \x78 \x65 \x63 \x75 \x74 \x65 \x20 \x61 ' +
188
+ b'\xda \x00 \x4e \x45 \x78 \x65 \x63 \x75 \x74 \x65 \x20 \x61 ' +
191
189
b'\x63 \x63 \x65 \x73 \x73 \x20 \x74 \x6f \x20 \x66 \x75 \x6e ' +
192
190
b'\x63 \x74 \x69 \x6f \x6e \x20 \x27 \x66 \x6f \x72 \x62 \x69 ' +
193
191
b'\x64 \x64 \x65 \x6e \x5f \x66 \x75 \x6e \x63 \x74 \x69 \x6f ' +
194
192
b'\x6e \x27 \x20 \x69 \x73 \x20 \x64 \x65 \x6e \x69 \x65 \x64 ' +
195
- b'\x20 \x66 \x6f \x72 \x20 \x75 \x73 \x65 \x72 \x20 \x27 \x67 ' +
196
- b'\x75 \x65 \x73 \x74 \x27 \x04 \x00 \x05 \x2a \x06 \x83 \xab ' +
197
- b'\x6f \x62 \x6a \x65 \x63 \x74 \x5f \x74 \x79 \x70 \x65 \xa8 ' +
198
- b'\x66 \x75 \x6e \x63 \x74 \x69 \x6f \x6e \xab \x6f \x62 \x6a ' +
199
- b'\x65 \x63 \x74 \x5f \x6e \x61 \x6d \x65 \xb2 \x66 \x6f \x72 ' +
200
- b'\x62 \x69 \x64 \x64 \x65 \x6e \x5f \x66 \x75 \x6e \x63 \x74 ' +
201
- b'\x69 \x6f \x6e \xab \x61 \x63 \x63 \x65 \x73 \x73 \x5f \x74 ' +
202
- b'\x79 \x70 \x65 \xa7 \x45 \x78 \x65 \x63 \x75 \x74 \x65 ' ),
193
+ b'\x20 \x66 \x6f \x72 \x20 \x75 \x73 \x65 \x72 \x20 \x27 \x6e ' +
194
+ b'\x6f \x5f \x67 \x72 \x61 \x6e \x74 \x73 \x27 \x04 \x00 \x05 ' +
195
+ b'\x2a \x06 \x83 \xab \x6f \x62 \x6a \x65 \x63 \x74 \x5f \x74 ' +
196
+ b'\x79 \x70 \x65 \xa8 \x66 \x75 \x6e \x63 \x74 \x69 \x6f \x6e ' +
197
+ b'\xab \x6f \x62 \x6a \x65 \x63 \x74 \x5f \x6e \x61 \x6d \x65 ' +
198
+ b'\xb2 \x66 \x6f \x72 \x62 \x69 \x64 \x64 \x65 \x6e \x5f \x66 ' +
199
+ b'\x75 \x6e \x63 \x74 \x69 \x6f \x6e \xab \x61 \x63 \x63 \x65 ' +
200
+ b'\x73 \x73 \x5f \x74 \x79 \x70 \x65 \xa7 \x45 \x78 \x65 \x63 ' +
201
+ b'\x75 \x74 \x65 ' ),
203
202
'tarantool' : "access_denied_error" ,
204
203
'ignore_file_info' : True ,
205
204
},
@@ -286,7 +285,7 @@ def test_tarantool_decode(self):
286
285
conn = getattr (self , case ['conn' ])
287
286
288
287
self .adm (f"""
289
- local err = { case ['tarantool' ]}
288
+ local err = rawget(_G, ' { case ['tarantool' ]} ')
290
289
box.space['test']:replace{{'{ name } ', err, 'payload'}}
291
290
""" )
292
291
@@ -346,12 +345,11 @@ def test_tarantool_encode(self):
346
345
[case ['str_type' ](name ), case ['python' ], case ['str_type' ]('payload' )])
347
346
348
347
lua_eval = f"""
349
- local err = { case ['tarantool' ]}
348
+ local err = rawget(_G, ' { case ['tarantool' ]} ')
350
349
351
350
local tuple = box.space['test']:get('{ name } ')
352
351
assert(tuple ~= nil)
353
352
354
-
355
353
local tuple_err = tuple[2]
356
354
357
355
local fields = {{'type', 'message', 'errno', 'errcode', 'fields'}}
0 commit comments