99 "bytes"
1010 "context"
1111 "fmt"
12+ "net"
1213 "net/http"
1314 "net/http/httptest"
1415 "net/url"
@@ -756,6 +757,23 @@ func TestNginxConfigParser_PlusAPIParse(t *testing.T) {
756757 fakeServerUrl , err := url .Parse (fakeServer .URL )
757758 require .NoError (t , err )
758759
760+ // Create a unix socket listener for testing unix socket
761+ socketFile , err := os .CreateTemp ("/tmp" , "nginx-plus-api-*.sock" )
762+ require .NoError (t , err )
763+ socket := socketFile .Name ()
764+ require .NoError (t , socketFile .Close ())
765+ require .NoError (t , os .Remove (socket ))
766+ defer os .Remove (socket )
767+
768+ listener , err := (& net.ListenConfig {}).Listen (t .Context (), "unix" , socket )
769+ require .NoError (t , err )
770+ defer listener .Close ()
771+
772+ server := httptest .NewUnstartedServer (handler )
773+ server .Listener = listener
774+ server .Start ()
775+ defer server .Close ()
776+
759777 file := helpers .CreateFileWithErrorCheck (t , dir , "nginx-parse-config.conf" )
760778 defer helpers .RemoveFileWithErrorCheck (t , file .Name ())
761779
@@ -772,25 +790,40 @@ func TestNginxConfigParser_PlusAPIParse(t *testing.T) {
772790 agentConfigWithOverride .DataPlaneConfig .Nginx .API = & config.NginxAPI {
773791 URL : fmt .Sprintf ("http://localhost:%s/api/" , fakeServerUrl .Port ()),
774792 }
793+ agentConfigWithUnixOverride := types .AgentConfig ()
794+ agentConfigWithUnixOverride .DataPlaneConfig .Nginx .API = & config.NginxAPI {
795+ URL : "http://localhost/api/" ,
796+ Socket : "unix:" + socket ,
797+ }
775798
776799 tests := []struct {
777800 agentConfig * config.Config
778801 name string
779802 content string
780803 url string
804+ listen string
781805 }{
782806 {
783807 name : "Test 1: No override of Plus API URL in agent config" ,
784808 content : testconfig .NginxConfigWithPlusAPI (fakeServerUrl .Port ()),
785809 url : "http://localhost:" + fakeServerUrl .Port () + "/api/" ,
810+ listen : "localhost:" + fakeServerUrl .Port (),
786811 agentConfig : types .AgentConfig (),
787812 },
788813 {
789814 name : "Test 2: Override Plus API URL in agent config" ,
790815 content : testconfig .NginxConfigWithPlusAPI ("8080" ),
791816 url : "http://localhost:" + fakeServerUrl .Port () + "/api/" ,
817+ listen : "localhost:" + fakeServerUrl .Port (),
792818 agentConfig : agentConfigWithOverride ,
793819 },
820+ {
821+ name : "Test 3: Override Plus API URL in agent config with unix socket" ,
822+ content : testconfig .NginxConfigWithPlusAPI ("8080" ),
823+ url : "http://localhost/api/" ,
824+ listen : "unix:" + socket ,
825+ agentConfig : agentConfigWithUnixOverride ,
826+ },
794827 }
795828
796829 for _ , test := range tests {
@@ -806,6 +839,8 @@ func TestNginxConfigParser_PlusAPIParse(t *testing.T) {
806839 require .NoError (t , parseError )
807840
808841 assert .Equal (t , test .url , result .PlusAPI .URL )
842+ assert .Equal (t , test .listen , result .PlusAPI .Listen )
843+ assert .Equal (t , "/api/" , result .PlusAPI .Location )
809844 })
810845 }
811846}
0 commit comments