Low-level test of channel-name parameter expansion for user query/function auth
(t *testing.T)
| 475 | |
| 476 | // Low-level test of channel-name parameter expansion for user query/function auth |
| 477 | func TestUserFunctionAllow(t *testing.T) { |
| 478 | // base.SetUpTestLogging(t, base.LevelDebug, base.KeyAll) |
| 479 | db, ctx := setupTestDBWithFunctions(t, &kUserFunctionConfig) |
| 480 | defer db.Close(ctx) |
| 481 | |
| 482 | authenticator := auth.NewAuthenticator(db.MetadataStore, db, db.AuthenticatorOptions(ctx)) |
| 483 | user, err := authenticator.NewUser("maurice", "pass", base.SetOf("city-Paris")) |
| 484 | assert.NoError(t, err) |
| 485 | |
| 486 | params := map[string]any{ |
| 487 | "CITY": "Paris", |
| 488 | "BREAD": "Baguette", |
| 489 | "YEAR": 2020, |
| 490 | "WINE": map[string]any{"blanc": "Sauterne", "rouge": "Bordeaux"}, |
| 491 | "WORDS": []string{"ouais", "fromage", "amour", "vachement"}, |
| 492 | } |
| 493 | |
| 494 | ch, err := expandPattern("someChannel", params, user) |
| 495 | assert.NoError(t, err) |
| 496 | assert.Equal(t, ch, "someChannel") |
| 497 | |
| 498 | ch, err = expandPattern("sales-${args.CITY}-all", params, user) |
| 499 | assert.NoError(t, err) |
| 500 | assert.Equal(t, "sales-Paris-all", ch) |
| 501 | |
| 502 | ch, err = expandPattern("sales${args.CITY}All", params, user) |
| 503 | assert.NoError(t, err) |
| 504 | assert.Equal(t, "salesParisAll", ch) |
| 505 | |
| 506 | ch, err = expandPattern("sales${args.CITY}-${args.BREAD}", params, user) |
| 507 | assert.NoError(t, err) |
| 508 | assert.Equal(t, "salesParis-Baguette", ch) |
| 509 | |
| 510 | ch, err = expandPattern("sales-upTo-${args.YEAR}", params, user) |
| 511 | assert.NoError(t, err) |
| 512 | assert.Equal(t, "sales-upTo-2020", ch) |
| 513 | |
| 514 | ch, err = expandPattern("wines-${args.WINE.blanc}", params, user) |
| 515 | assert.NoError(t, err) |
| 516 | assert.Equal(t, "wines-Sauterne", ch) |
| 517 | |
| 518 | ch, err = expandPattern("${args.WORDS[2]}", params, user) |
| 519 | assert.NoError(t, err) |
| 520 | assert.Equal(t, "amour", ch) |
| 521 | |
| 522 | ch, err = expandPattern("employee-${context.user.name}", params, user) |
| 523 | assert.NoError(t, err) |
| 524 | assert.Equal(t, "employee-maurice", ch) |
| 525 | |
| 526 | // Escaped `\$`: |
| 527 | ch, err = expandPattern(`expen\$ive`, params, user) |
| 528 | assert.NoError(t, err) |
| 529 | assert.Equal(t, "expen$ive", ch) |
| 530 | ch, err = expandPattern(`\$wow`, params, user) |
| 531 | assert.NoError(t, err) |
| 532 | assert.Equal(t, "$wow", ch) |
| 533 | ch, err = expandPattern(`\${wow}`, params, user) |
| 534 | assert.NoError(t, err) |
nothing calls this directly
no test coverage detected