@@ -3,6 +3,9 @@ package server
33import (
44 "log/slog"
55 "os"
6+ "os/user"
7+ "runtime"
8+ "strconv"
69 "testing"
710 "time"
811
@@ -77,6 +80,38 @@ func TestCommandUnknownUser(t *testing.T) {
7780 })
7881}
7982
83+ func TestInitResolvesUser (t * testing.T ) {
84+ if runtime .GOOS == "windows" {
85+ t .Skip ("server.user is not supported on windows" )
86+ }
87+
88+ current , err := user .Current ()
89+ require .NoError (t , err )
90+
91+ log := slog .New (slog .NewTextHandler (os .Stderr , nil ))
92+ p := & Plugin {
93+ preparedEnvs : make ([]string , 0 ),
94+ cfg : & Config {},
95+ log : log ,
96+ }
97+
98+ v := viper .New ()
99+ v .Set ("server.command" , "php php_test_files/client.php echo pipes" )
100+ v .Set ("server.user" , current .Username )
101+
102+ cfg , err := InitMockCfg (v )
103+ require .NoError (t , err )
104+ require .NoError (t , p .Init (cfg , NewTestLogger (log )))
105+
106+ uid , err := strconv .Atoi (current .Uid )
107+ require .NoError (t , err )
108+ gid , err := strconv .Atoi (current .Gid )
109+ require .NoError (t , err )
110+
111+ require .Equal (t , uid , p .UID ())
112+ require .Equal (t , gid , p .GID ())
113+ }
114+
80115func TestInitUnknownUser (t * testing.T ) {
81116 log := slog .New (slog .NewTextHandler (os .Stderr , nil ))
82117 p := & Plugin {
0 commit comments