2017-07-06 17:28:13 +03:00
package integration
2017-07-01 02:04:18 +03:00
import (
"net/http"
"os"
"time"
2019-08-03 04:58:23 +03:00
"github.com/containous/traefik/v2/integration/try"
2017-07-01 02:04:18 +03:00
"github.com/go-check/check"
checker "github.com/vdemeester/shakers"
)
2020-05-11 13:06:07 +03:00
// ErrorPagesSuite test suites (using libcompose).
2017-07-10 15:58:31 +03:00
type ErrorPagesSuite struct {
BaseSuite
ErrorPageIP string
BackendIP string
2017-07-01 02:04:18 +03:00
}
2017-07-10 15:58:31 +03:00
func ( s * ErrorPagesSuite ) SetUpSuite ( c * check . C ) {
s . createComposeProject ( c , "error_pages" )
s . composeProject . Start ( c )
s . ErrorPageIP = s . composeProject . Container ( c , "nginx2" ) . NetworkSettings . IPAddress
s . BackendIP = s . composeProject . Container ( c , "nginx1" ) . NetworkSettings . IPAddress
}
2017-07-01 02:04:18 +03:00
2017-07-10 15:58:31 +03:00
func ( s * ErrorPagesSuite ) TestSimpleConfiguration ( c * check . C ) {
file := s . adaptFile ( c , "fixtures/error_pages/simple.toml" , struct {
2017-07-01 02:04:18 +03:00
Server1 string
Server2 string
2017-07-10 15:58:31 +03:00
} { s . BackendIP , s . ErrorPageIP } )
2017-07-01 02:04:18 +03:00
defer os . Remove ( file )
2017-09-13 11:34:04 +03:00
cmd , display := s . traefikCmd ( withConfigFile ( file ) )
defer display ( c )
2017-07-01 02:04:18 +03:00
err := cmd . Start ( )
c . Assert ( err , checker . IsNil )
defer cmd . Process . Kill ( )
2018-02-23 12:52:03 +03:00
frontendReq , err := http . NewRequest ( http . MethodGet , "http://127.0.0.1:8080" , nil )
2017-07-01 02:04:18 +03:00
c . Assert ( err , checker . IsNil )
frontendReq . Host = "test.local"
err = try . Request ( frontendReq , 2 * time . Second , try . BodyContains ( "nginx" ) )
c . Assert ( err , checker . IsNil )
}
2017-07-10 15:58:31 +03:00
func ( s * ErrorPagesSuite ) TestErrorPage ( c * check . C ) {
2018-07-03 11:02:03 +03:00
// error.toml contains a mis-configuration of the backend host
2017-07-10 15:58:31 +03:00
file := s . adaptFile ( c , "fixtures/error_pages/error.toml" , struct {
2017-07-01 02:04:18 +03:00
Server1 string
Server2 string
2017-07-10 15:58:31 +03:00
} { s . BackendIP , s . ErrorPageIP } )
2017-07-01 02:04:18 +03:00
defer os . Remove ( file )
2017-09-13 11:34:04 +03:00
cmd , display := s . traefikCmd ( withConfigFile ( file ) )
defer display ( c )
2017-07-01 02:04:18 +03:00
err := cmd . Start ( )
c . Assert ( err , checker . IsNil )
defer cmd . Process . Kill ( )
2018-02-23 12:52:03 +03:00
frontendReq , err := http . NewRequest ( http . MethodGet , "http://127.0.0.1:8080" , nil )
2017-07-01 02:04:18 +03:00
c . Assert ( err , checker . IsNil )
frontendReq . Host = "test.local"
err = try . Request ( frontendReq , 2 * time . Second , try . BodyContains ( "An error occurred." ) )
c . Assert ( err , checker . IsNil )
}