1
0

api_test.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package xray
  2. import (
  3. "strings"
  4. "testing"
  5. )
  6. func TestRemoveUserGuardsNilHandlerClient(t *testing.T) {
  7. err := (&XrayAPI{}).RemoveUser("in-443-tcp", "[email protected]")
  8. if err == nil {
  9. t.Fatal("RemoveUser with an uninitialized HandlerServiceClient must return an error")
  10. }
  11. }
  12. func TestGetRequiredUserString_Present(t *testing.T) {
  13. user := map[string]any{"email": "[email protected]"}
  14. got, err := getRequiredUserString(user, "email")
  15. if err != nil {
  16. t.Fatalf("unexpected error: %v", err)
  17. }
  18. if got != "[email protected]" {
  19. t.Fatalf("got %q, want %q", got, "[email protected]")
  20. }
  21. }
  22. func TestGetRequiredUserString_Missing(t *testing.T) {
  23. user := map[string]any{}
  24. if _, err := getRequiredUserString(user, "email"); err == nil {
  25. t.Fatal("expected error for missing key")
  26. }
  27. }
  28. func TestGetRequiredUserString_NilValue(t *testing.T) {
  29. user := map[string]any{"email": nil}
  30. if _, err := getRequiredUserString(user, "email"); err == nil {
  31. t.Fatal("expected error for nil value")
  32. }
  33. }
  34. func TestGetRequiredUserString_WrongType(t *testing.T) {
  35. user := map[string]any{"email": 42}
  36. _, err := getRequiredUserString(user, "email")
  37. if err == nil {
  38. t.Fatal("expected error for non-string value")
  39. }
  40. if !strings.Contains(err.Error(), "invalid type") {
  41. t.Fatalf("expected %q in error, got: %v", "invalid type", err)
  42. }
  43. }
  44. func TestGetOptionalUserString_Present(t *testing.T) {
  45. user := map[string]any{"flow": "xtls-rprx-vision"}
  46. got, err := getOptionalUserString(user, "flow")
  47. if err != nil {
  48. t.Fatalf("unexpected error: %v", err)
  49. }
  50. if got != "xtls-rprx-vision" {
  51. t.Fatalf("got %q, want %q", got, "xtls-rprx-vision")
  52. }
  53. }
  54. func TestGetOptionalUserString_MissingReturnsEmptyNoError(t *testing.T) {
  55. user := map[string]any{}
  56. got, err := getOptionalUserString(user, "flow")
  57. if err != nil {
  58. t.Fatalf("unexpected error for missing optional field: %v", err)
  59. }
  60. if got != "" {
  61. t.Fatalf("got %q, want empty string", got)
  62. }
  63. }
  64. func TestGetOptionalUserString_NilReturnsEmptyNoError(t *testing.T) {
  65. user := map[string]any{"flow": nil}
  66. got, err := getOptionalUserString(user, "flow")
  67. if err != nil {
  68. t.Fatalf("unexpected error for nil optional field: %v", err)
  69. }
  70. if got != "" {
  71. t.Fatalf("got %q, want empty string", got)
  72. }
  73. }
  74. func TestGetOptionalUserString_WrongTypeErrors(t *testing.T) {
  75. user := map[string]any{"flow": []string{"a", "b"}}
  76. if _, err := getOptionalUserString(user, "flow"); err == nil {
  77. t.Fatal("expected error for non-string optional value")
  78. }
  79. }