diff --git a/internal/nginxtopo/served_test.go b/internal/nginxtopo/served_test.go index 65a833ba7..5bbdba43c 100644 --- a/internal/nginxtopo/served_test.go +++ b/internal/nginxtopo/served_test.go @@ -39,6 +39,11 @@ func TestServedDirs(t *testing.T) { wantErr bool errContain []string }{ + { + name: "empty project uses relative directories", + wantNginx: "nginx", + wantSSL: "ssl", + }, { name: "own stack when frontedBy is empty", project: standalone, @@ -223,3 +228,39 @@ func TestContained_UnresolvablePaths(t *testing.T) { } }) } + +func TestSharedOwnerRegistered_Layouts(t *testing.T) { + for _, tc := range []struct { + name string + marker bool + blocked bool + want bool + }{ + {name: "missing registration"}, + {name: "registered owner", marker: true, want: true}, + {name: "non-directory nginx path", blocked: true}, + } { + t.Run(tc.name, func(t *testing.T) { + root := t.TempDir() + nginx := filepath.Join(root, "nginx") + if tc.blocked { + if err := os.WriteFile(nginx, nil, 0o600); err != nil { + t.Fatal(err) + } + } else { + shared := filepath.Join(nginx, SharedDir) + if err := os.MkdirAll(shared, 0o755); err != nil { + t.Fatal(err) + } + if tc.marker { + if err := os.WriteFile(filepath.Join(shared, SharedOwnerFile), []byte("{}"), 0o600); err != nil { + t.Fatal(err) + } + } + } + if got := SharedOwnerRegistered(root); got != tc.want { + t.Errorf("SharedOwnerRegistered(%q) = %v, want %v", root, got, tc.want) + } + }) + } +}