github.com/drud/ddev@v1.21.5-alpha1.0.20230226034409-94fcc4b94453/pkg/ddevapp/extra_expose_test.go (about) 1 package ddevapp_test 2 3 import ( 4 "fmt" 5 . "github.com/drud/ddev/pkg/ddevapp" 6 "github.com/drud/ddev/pkg/exec" 7 "github.com/drud/ddev/pkg/globalconfig" 8 "github.com/drud/ddev/pkg/nodeps" 9 "github.com/drud/ddev/pkg/testcommon" 10 asrt "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 "os" 13 "path/filepath" 14 "testing" 15 ) 16 17 // TestExtraPortExpose tests exposing additional ports with web_extra_exposed_ports. 18 // It also tests web_extra_daemons 19 func TestExtraPortExpose(t *testing.T) { 20 assert := asrt.New(t) 21 22 site := TestSites[0] 23 24 testcommon.ClearDockerEnv() 25 app := new(DdevApp) 26 err := app.Init(site.Dir) 27 assert.NoError(err) 28 29 t.Cleanup(func() { 30 err = app.Stop(true, false) 31 assert.NoError(err) 32 err = os.RemoveAll(filepath.Join(app.AppRoot, "testfile1.html")) 33 assert.NoError(err) 34 }) 35 36 err = os.WriteFile(filepath.Join(app.AppRoot, "testfile.html"), []byte(`this is test1 in root`), 0755) 37 require.NoError(t, err) 38 err = os.MkdirAll(filepath.Join(app.AppRoot, "sub"), 0777) 39 require.NoError(t, err) 40 err = os.WriteFile(filepath.Join(app.AppRoot, "sub", "testfile.html"), []byte(`this is test2 in root/sub`), 0755) 41 require.NoError(t, err) 42 43 app.WebExtraExposedPorts = []WebExposedPort{ 44 {Name: "first", WebContainerPort: 3000, HTTPPort: 2999, HTTPSPort: 3000}, 45 {Name: "second", WebContainerPort: 4000, HTTPPort: 3999, HTTPSPort: 4000}, 46 } 47 app.WebExtraDaemons = []WebExtraDaemon{ 48 {Name: "FirstDaemon", Command: "php -S 0.0.0.0:3000", Directory: "/var/www/html"}, 49 {Name: "SecondDaemon", Command: "php -S 0.0.0.0:4000", Directory: "/var/www/html/sub"}, 50 } 51 err = app.Start() 52 if err != nil { 53 logs, logErr := exec.RunCommand("docker", []string{"logs", "ddev-" + app.Name + "-web"}) 54 t.Fatalf("app failed to start: %v, logErr=%v logs=%v", err, logErr, logs) 55 } 56 57 // Careful with portsToTest because https ports won't work on github actions Colima tests (although they work fine on normal mac) 58 portsToTest := []string{"3000", "4000"} 59 if !nodeps.IsGitpod() && !nodeps.IsCodespaces() && (globalconfig.GetCAROOT() == "" || IsRouterDisabled(app)) { 60 portsToTest = []string{"2999", "3999"} 61 } 62 63 for i, p := range portsToTest { 64 url := fmt.Sprintf("%s:%s/testfile.html", app.GetPrimaryURL(), p) 65 out, resp, err := testcommon.GetLocalHTTPResponse(t, url) 66 assert.NoError(err, "failed to get hit url %s, out=%s, resp=%v err=%v", url, out, resp, err) 67 assert.Contains(out, fmt.Sprintf("this is test%d", i+1)) 68 } 69 }