(t *testing.T)
| 406 | } |
| 407 | |
| 408 | func TestExtractSessionID(t *testing.T) { |
| 409 | t.Parallel() |
| 410 | |
| 411 | tests := []struct { |
| 412 | name string |
| 413 | payload string |
| 414 | want string |
| 415 | }{ |
| 416 | { |
| 417 | name: "valid_claude_code_format", |
| 418 | payload: `{"metadata":{"user_id":"user_3f221fe75652cf9a89a31647f16274bb8036a9b85ac4dc226a4df0efec8dc04d_account__session_ac980658-63bd-4fb3-97ba-8da64cb1e344"}}`, |
| 419 | want: "claude:ac980658-63bd-4fb3-97ba-8da64cb1e344", |
| 420 | }, |
| 421 | { |
| 422 | name: "json_user_id_with_session_id", |
| 423 | payload: `{"metadata":{"user_id":"{\"device_id\":\"be82c3aee1e0c2d74535bacc85f9f559228f02dd8a17298cf522b71e6c375714\",\"account_uuid\":\"\",\"session_id\":\"e26d4046-0f88-4b09-bb5b-f863ab5fb24e\"}"}}`, |
| 424 | want: "claude:e26d4046-0f88-4b09-bb5b-f863ab5fb24e", |
| 425 | }, |
| 426 | { |
| 427 | name: "json_user_id_without_session_id", |
| 428 | payload: `{"metadata":{"user_id":"{\"device_id\":\"abc123\"}"}}`, |
| 429 | want: `user:{"device_id":"abc123"}`, |
| 430 | }, |
| 431 | { |
| 432 | name: "no_session_but_user_id", |
| 433 | payload: `{"metadata":{"user_id":"user_abc123"}}`, |
| 434 | want: "user:user_abc123", |
| 435 | }, |
| 436 | { |
| 437 | name: "conversation_id", |
| 438 | payload: `{"conversation_id":"conv-12345"}`, |
| 439 | want: "conv:conv-12345", |
| 440 | }, |
| 441 | { |
| 442 | name: "no_metadata", |
| 443 | payload: `{"model":"claude-3"}`, |
| 444 | want: "", |
| 445 | }, |
| 446 | { |
| 447 | name: "empty_payload", |
| 448 | payload: ``, |
| 449 | want: "", |
| 450 | }, |
| 451 | } |
| 452 | |
| 453 | for _, tt := range tests { |
| 454 | t.Run(tt.name, func(t *testing.T) { |
| 455 | got := extractSessionID([]byte(tt.payload)) |
| 456 | if got != tt.want { |
| 457 | t.Errorf("extractSessionID() = %q, want %q", got, tt.want) |
| 458 | } |
| 459 | }) |
| 460 | } |
| 461 | } |
| 462 | |
| 463 | func TestSessionAffinitySelector_SameSessionSameAuth(t *testing.T) { |
| 464 | t.Parallel() |
nothing calls this directly
no test coverage detected