123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package sshprox
- import (
- "testing"
- )
- func TestInstance_Destroy(t *testing.T) {
- manager := NewSSHProxyManager()
- instance, err := manager.NewSSHProxy("/tmp")
- if err != nil {
- t.Fatalf("Failed to create new SSH proxy: %v", err)
- }
- instance.Destroy()
- if len(manager.Instances) != 0 {
- t.Errorf("Expected Instances to be empty, got %d", len(manager.Instances))
- }
- }
- func TestInstance_ValidateUsernameAndRemoteAddr(t *testing.T) {
- tests := []struct {
- username string
- remoteAddr string
- expectError bool
- }{
- {"validuser", "127.0.0.1", false},
- {"valid.user", "example.com", false},
- {"; bash ;", "example.com", true},
- {"valid-user", "example.com", false},
- {"invalid user", "127.0.0.1", true},
- {"validuser", "invalid address", true},
- {"invalid@user", "127.0.0.1", true},
- {"validuser", "invalid@address", true},
- {"injection; rm -rf /", "127.0.0.1", true},
- {"validuser", "127.0.0.1; rm -rf /", true},
- {"$(reboot)", "127.0.0.1", true},
- {"validuser", "$(reboot)", true},
- {"validuser", "127.0.0.1; $(reboot)", true},
- {"validuser", "127.0.0.1 | ls", true},
- {"validuser", "127.0.0.1 & ls", true},
- {"validuser", "127.0.0.1 && ls", true},
- {"validuser", "127.0.0.1 |& ls", true},
- {"validuser", "127.0.0.1 ; ls", true},
- {"validuser", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", false},
- {"validuser", "2001:db8::ff00:42:8329", false},
- {"validuser", "2001:db8:0:1234:0:567:8:1", false},
- {"validuser", "2001:db8::1234:0:567:8:1", false},
- {"validuser", "2001:db8:0:0:0:0:2:1", false},
- {"validuser", "2001:db8::2:1", false},
- {"validuser", "2001:db8:0:0:8:800:200c:417a", false},
- {"validuser", "2001:db8::8:800:200c:417a", false},
- {"validuser", "2001:db8:0:0:8:800:200c:417a; rm -rf /", true},
- {"validuser", "2001:db8::8:800:200c:417a; rm -rf /", true},
- }
- for _, test := range tests {
- err := ValidateUsernameAndRemoteAddr(test.username, test.remoteAddr)
- if test.expectError && err == nil {
- t.Errorf("Expected error for username %s and remoteAddr %s, but got none", test.username, test.remoteAddr)
- }
- if !test.expectError && err != nil {
- t.Errorf("Did not expect error for username %s and remoteAddr %s, but got %v", test.username, test.remoteAddr, err)
- }
- }
- }
|