| 12345678910111213141516171819202122232425262728293031323334 |
- package services
- import (
- "bytes"
- "fmt"
- "os"
- "path/filepath"
- "testing"
- )
- func TestFailedHookRestoresStoredService(t *testing.T) {
- path := filepath.Join(t.TempDir(), "services.json")
- m := NewManager(path)
- if err := m.SetService("ssh", 2222, false); err != nil {
- t.Fatal(err)
- }
- before, _ := os.ReadFile(path)
- old, _ := m.GetService("ssh")
- m.RegisterHook("ssh", func(name string, port int, disabled bool) error {
- _, _ = m.GetService(name)
- if port == 3333 {
- return fmt.Errorf("port in use")
- }
- return nil
- })
- if err := m.SetService("ssh", 3333, false); err == nil {
- t.Fatal("listener error lost")
- }
- current, _ := m.GetService("ssh")
- after, _ := os.ReadFile(path)
- if current != old || !bytes.Equal(before, after) {
- t.Fatal("failed change was not rolled back")
- }
- }
|