You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.6 KiB
56 lines
1.6 KiB
|
2 months ago
|
package managementaccess
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"net"
|
||
|
|
"path/filepath"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"tera-clone/services/tera-api/internal/domain"
|
||
|
|
)
|
||
|
|
|
||
|
|
type recordingController struct {
|
||
|
|
settings domain.ManagementAccessSettings
|
||
|
|
}
|
||
|
|
|
||
|
|
func (c *recordingController) Apply(_ context.Context, settings domain.ManagementAccessSettings) error {
|
||
|
|
c.settings = settings
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestSocketApplyRoundTrip(t *testing.T) {
|
||
|
|
path := filepath.Join(t.TempDir(), "control.sock")
|
||
|
|
listener, err := net.Listen("unix", path)
|
||
|
|
if err != nil {
|
||
|
|
t.Skipf("Unix sockets unavailable: %v", err)
|
||
|
|
}
|
||
|
|
defer listener.Close()
|
||
|
|
controller := &recordingController{}
|
||
|
|
done := make(chan error, 1)
|
||
|
|
go func() { done <- (SocketServer{Controller: controller}).Serve(listener) }()
|
||
|
|
settings := domain.ManagementAccessSettings{
|
||
|
|
HTTPEnabled: true, HTTPPort: 8081, HTTPSEnabled: true, HTTPSPort: 8443,
|
||
|
|
SSHPort: 22, TelnetPort: 2323,
|
||
|
|
SerialConsoleEnabled: true, IdleTimeoutMinutes: 20,
|
||
|
|
}
|
||
|
|
if err := NewSocketClient(path).Apply(context.Background(), settings); err != nil {
|
||
|
|
t.Fatalf("Apply() error = %v", err)
|
||
|
|
}
|
||
|
|
if controller.settings.HTTPSPort != 8443 || controller.settings.SSHEnabled || controller.settings.TelnetEnabled {
|
||
|
|
t.Fatalf("controller settings = %+v", controller.settings)
|
||
|
|
}
|
||
|
|
_ = listener.Close()
|
||
|
|
<-done
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestValidateRejectsRecoveryEndpointCollision(t *testing.T) {
|
||
|
|
settings := domain.ManagementAccessSettings{
|
||
|
|
HTTPEnabled: true, HTTPPort: 8080, HTTPSEnabled: true, HTTPSPort: 443,
|
||
|
|
SSHPort: 22, TelnetPort: 23, SerialConsoleEnabled: true,
|
||
|
|
IdleTimeoutMinutes: 15,
|
||
|
|
}
|
||
|
|
if err := Validate(settings); err == nil {
|
||
|
|
t.Fatal("Validate() accepted reserved port 8080")
|
||
|
|
}
|
||
|
|
}
|