1
0

sshprox_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package sshprox
  2. import (
  3. "testing"
  4. )
  5. func TestInstance_Destroy(t *testing.T) {
  6. manager := NewSSHProxyManager()
  7. instance, err := manager.NewSSHProxy("/tmp")
  8. if err != nil {
  9. t.Fatalf("Failed to create new SSH proxy: %v", err)
  10. }
  11. instance.Destroy()
  12. if len(manager.Instances) != 0 {
  13. t.Errorf("Expected Instances to be empty, got %d", len(manager.Instances))
  14. }
  15. }
  16. func TestInstance_ValidateUsernameAndRemoteAddr(t *testing.T) {
  17. tests := []struct {
  18. username string
  19. remoteAddr string
  20. expectError bool
  21. }{
  22. {"validuser", "127.0.0.1", false},
  23. {"valid.user", "example.com", false},
  24. {"; bash ;", "example.com", true},
  25. {"valid-user", "example.com", false},
  26. {"invalid user", "127.0.0.1", true},
  27. {"validuser", "invalid address", true},
  28. {"invalid@user", "127.0.0.1", true},
  29. {"validuser", "invalid@address", true},
  30. {"injection; rm -rf /", "127.0.0.1", true},
  31. {"validuser", "127.0.0.1; rm -rf /", true},
  32. {"$(reboot)", "127.0.0.1", true},
  33. {"validuser", "$(reboot)", true},
  34. {"validuser", "127.0.0.1; $(reboot)", true},
  35. {"validuser", "127.0.0.1 | ls", true},
  36. {"validuser", "127.0.0.1 & ls", true},
  37. {"validuser", "127.0.0.1 && ls", true},
  38. {"validuser", "127.0.0.1 |& ls", true},
  39. {"validuser", "127.0.0.1 ; ls", true},
  40. {"validuser", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", false},
  41. {"validuser", "2001:db8::ff00:42:8329", false},
  42. {"validuser", "2001:db8:0:1234:0:567:8:1", false},
  43. {"validuser", "2001:db8::1234:0:567:8:1", false},
  44. {"validuser", "2001:db8:0:0:0:0:2:1", false},
  45. {"validuser", "2001:db8::2:1", false},
  46. {"validuser", "2001:db8:0:0:8:800:200c:417a", false},
  47. {"validuser", "2001:db8::8:800:200c:417a", false},
  48. {"validuser", "2001:db8:0:0:8:800:200c:417a; rm -rf /", true},
  49. {"validuser", "2001:db8::8:800:200c:417a; rm -rf /", true},
  50. }
  51. for _, test := range tests {
  52. err := ValidateUsernameAndRemoteAddr(test.username, test.remoteAddr)
  53. if test.expectError && err == nil {
  54. t.Errorf("Expected error for username %s and remoteAddr %s, but got none", test.username, test.remoteAddr)
  55. }
  56. if !test.expectError && err != nil {
  57. t.Errorf("Did not expect error for username %s and remoteAddr %s, but got %v", test.username, test.remoteAddr, err)
  58. }
  59. }
  60. }