Skip to content

Commit 6476ecd

Browse files
committed
fix: use /anything/v1/messages in tests to avoid /v1/ control API conflict
The APISIX test framework maps 'location /v1/' to http_control(), which intercepts all requests starting with /v1/ before they reach the APISIX router. This caused 404 for test requests to /v1/messages. Changed test URIs to /anything/v1/messages which avoids the conflict while still matching the Anthropic protocol detection (URI suffix check).
1 parent 81b3b70 commit 6476ecd

1 file changed

Lines changed: 23 additions & 23 deletions

File tree

t/plugin/ai-proxy-protocol-conversion.t

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ __DATA__
164164
local code, body = t('/apisix/admin/routes/1',
165165
ngx.HTTP_PUT,
166166
[[{
167-
"uri": "/v1/messages",
167+
"uri": "/anything/v1/messages",
168168
"plugins": {
169169
"ai-proxy": {
170170
"provider": "openai",
@@ -194,7 +194,7 @@ passed
194194
195195
=== TEST 2: Send Anthropic request to /v1/messages and verify protocol conversion
196196
--- request
197-
POST /v1/messages
197+
POST /anything/v1/messages
198198
{ "model": "claude-3-5-sonnet-20241022", "messages": [ { "role": "user","content": "hello" } ] }
199199
--- more_headers
200200
Authorization: Bearer token
@@ -206,7 +206,7 @@ qr/"text":"1 \+ 1 = 2\."/
206206
207207
=== TEST 3: Missing messages field returns 400
208208
--- request
209-
POST /v1/messages
209+
POST /anything/v1/messages
210210
{ "model": "claude-3-5-sonnet-20241022" }
211211
--- more_headers
212212
Authorization: Bearer token
@@ -218,7 +218,7 @@ Authorization: Bearer token
218218
219219
=== TEST 4: Malformed JSON body returns 400
220220
--- request
221-
POST /v1/messages
221+
POST /anything/v1/messages
222222
this is not valid json
223223
--- more_headers
224224
Authorization: Bearer token
@@ -229,7 +229,7 @@ Content-Type: application/json
229229
230230
=== TEST 5: messages field is wrong type (non-array)
231231
--- request
232-
POST /v1/messages
232+
POST /anything/v1/messages
233233
{ "model": "claude-3-5-sonnet-20241022", "messages": "hello" }
234234
--- more_headers
235235
Authorization: Bearer token
@@ -241,7 +241,7 @@ Authorization: Bearer token
241241
242242
=== TEST 6: messages is an empty array
243243
--- request
244-
POST /v1/messages
244+
POST /anything/v1/messages
245245
{ "model": "claude-3-5-sonnet-20241022", "messages": [] }
246246
--- more_headers
247247
Authorization: Bearer token
@@ -259,7 +259,7 @@ Authorization: Bearer token
259259
local code, body = t('/apisix/admin/routes/1',
260260
ngx.HTTP_PUT,
261261
[[{
262-
"uri": "/v1/messages",
262+
"uri": "/anything/v1/messages",
263263
"plugins": {
264264
"ai-proxy": {
265265
"provider": "openai",
@@ -356,7 +356,7 @@ passed
356356
357357
local res, err = httpc:request({
358358
method = "POST",
359-
path = "/v1/messages",
359+
path = "/anything/v1/messages",
360360
headers = { ["Content-Type"] = "application/json", ["Connection"] = "close" },
361361
body = [[{
362362
"model": "claude-3-5-sonnet-20241022",
@@ -389,7 +389,7 @@ qr/event: message_start\ndata:.*?"type":"message_start".*?event: content_block_s
389389
local code, body = t('/apisix/admin/routes/1',
390390
ngx.HTTP_PUT,
391391
[[{
392-
"uri": "/v1/messages",
392+
"uri": "/anything/v1/messages",
393393
"plugins": {
394394
"ai-proxy": {
395395
"provider": "openai",
@@ -487,7 +487,7 @@ passed
487487
488488
local res, err = httpc:request({
489489
method = "POST",
490-
path = "/v1/messages",
490+
path = "/anything/v1/messages",
491491
headers = { ["Content-Type"] = "application/json", ["Connection"] = "close" },
492492
body = [[{
493493
"model": "claude-3-5-sonnet-20241022",
@@ -515,7 +515,7 @@ qr/"text":"system prompt ok"/
515515
local code, body = t('/apisix/admin/routes/1',
516516
ngx.HTTP_PUT,
517517
[[{
518-
"uri": "/v1/messages",
518+
"uri": "/anything/v1/messages",
519519
"plugins": {
520520
"ai-proxy": {
521521
"provider": "openai",
@@ -545,7 +545,7 @@ passed
545545
546546
=== TEST 12: Tool calling request/response conversion (Anthropic <-> OpenAI)
547547
--- request
548-
POST /v1/messages
548+
POST /anything/v1/messages
549549
{"model":"claude-3-5-sonnet-20241022","messages":[{"role":"user","content":"What is the weather in Paris?"}],"tools":[{"name":"get_weather","description":"Get weather","input_schema":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]}}]}
550550
--- more_headers
551551
Authorization: Bearer token
@@ -564,7 +564,7 @@ qr/(?=.*"stop_reason":"tool_use")(?=.*"type":"tool_use")(?=.*"name":"get_weather
564564
local code, body = t('/apisix/admin/routes/1',
565565
ngx.HTTP_PUT,
566566
[[{
567-
"uri": "/v1/messages",
567+
"uri": "/anything/v1/messages",
568568
"plugins": {
569569
"ai-proxy": {
570570
"provider": "openai",
@@ -638,7 +638,7 @@ passed
638638
639639
local res, err = httpc:request({
640640
method = "POST",
641-
path = "/v1/messages",
641+
path = "/anything/v1/messages",
642642
headers = { ["Content-Type"] = "application/json", ["Connection"] = "close" },
643643
body = [[{
644644
"model": "gpt-4o",
@@ -691,7 +691,7 @@ OK: message_stop appeared exactly once
691691
local code, body = t('/apisix/admin/routes/1',
692692
ngx.HTTP_PUT,
693693
[[{
694-
"uri": "/v1/messages",
694+
"uri": "/anything/v1/messages",
695695
"plugins": {
696696
"ai-proxy": {
697697
"provider": "openai",
@@ -769,7 +769,7 @@ passed
769769
770770
local res, err = httpc:request({
771771
method = "POST",
772-
path = "/v1/messages",
772+
path = "/anything/v1/messages",
773773
headers = { ["Content-Type"] = "application/json", ["Connection"] = "close" },
774774
body = [[{
775775
"model": "gpt-4o",
@@ -836,7 +836,7 @@ OK: two finish_reason chunks handled correctly
836836
local code, body = t('/apisix/admin/routes/1',
837837
ngx.HTTP_PUT,
838838
[[{
839-
"uri": "/v1/messages",
839+
"uri": "/anything/v1/messages",
840840
"plugins": {
841841
"ai-proxy": {
842842
"provider": "openai",
@@ -914,7 +914,7 @@ passed
914914
915915
local res, err = httpc:request({
916916
method = "POST",
917-
path = "/v1/messages",
917+
path = "/anything/v1/messages",
918918
headers = { ["Content-Type"] = "application/json", ["Connection"] = "close" },
919919
body = [[{
920920
"model": "deepseek-chat",
@@ -968,7 +968,7 @@ OK: DeepSeek usage:null chunks handled correctly
968968
local code, body = t('/apisix/admin/routes/1',
969969
ngx.HTTP_PUT,
970970
[[{
971-
"uri": "/v1/messages",
971+
"uri": "/anything/v1/messages",
972972
"plugins": {
973973
"ai-proxy": {
974974
"provider": "openai",
@@ -1042,7 +1042,7 @@ passed
10421042
10431043
local res, err = httpc:request({
10441044
method = "POST",
1045-
path = "/v1/messages",
1045+
path = "/anything/v1/messages",
10461046
headers = { ["Content-Type"] = "application/json", ["Connection"] = "close" },
10471047
body = [[{
10481048
"model": "gpt-4o",
@@ -1156,7 +1156,7 @@ OK: sse.encode output ends with \n\n
11561156
11571157
local res, err = httpc:request({
11581158
method = "POST",
1159-
path = "/v1/messages",
1159+
path = "/anything/v1/messages",
11601160
headers = { ["Content-Type"] = "application/json", ["Connection"] = "close" },
11611161
body = [[{
11621162
"model": "gpt-4o",
@@ -1246,7 +1246,7 @@ OK: sse.encode edge cases passed
12461246
local code, body = t('/apisix/admin/routes/1',
12471247
ngx.HTTP_PUT,
12481248
[[{
1249-
"uri": "/v1/messages",
1249+
"uri": "/anything/v1/messages",
12501250
"plugins": {
12511251
"ai-proxy": {
12521252
"provider": "openai",
@@ -1320,7 +1320,7 @@ passed
13201320
13211321
local res, err = httpc:request({
13221322
method = "POST",
1323-
path = "/v1/messages",
1323+
path = "/anything/v1/messages",
13241324
headers = { ["Content-Type"] = "application/json", ["Connection"] = "close" },
13251325
body = [[{
13261326
"model": "gpt-4o",

0 commit comments

Comments
 (0)