2015-09-27 13:59:51 +00:00
package main
import (
"net/http"
"os/exec"
"time"
2016-01-13 21:46:44 +00:00
"fmt"
2016-04-02 10:40:21 +00:00
"github.com/go-check/check"
2016-04-19 17:23:08 +00:00
"bytes"
2015-09-27 13:59:51 +00:00
checker "github.com/vdemeester/shakers"
)
2015-11-03 22:06:31 +00:00
// SimpleSuite
type SimpleSuite struct { BaseSuite }
2016-05-24 12:23:42 +00:00
func ( s * SimpleSuite ) TestNoOrInexistentConfigShouldNotFail ( c * check . C ) {
2015-09-27 13:59:51 +00:00
cmd := exec . Command ( traefikBinary )
2016-04-19 17:23:08 +00:00
var b bytes . Buffer
cmd . Stdout = & b
cmd . Stderr = & b
cmd . Start ( )
time . Sleep ( 500 * time . Millisecond )
output := b . Bytes ( )
2016-05-24 12:23:42 +00:00
c . Assert ( string ( output ) , checker . Not ( checker . Contains ) , "No configuration file found" )
2016-04-19 17:23:08 +00:00
cmd . Process . Kill ( )
2015-09-27 13:59:51 +00:00
nonExistentFile := "non/existent/file.toml"
2016-01-13 21:46:44 +00:00
cmd = exec . Command ( traefikBinary , "--configFile=" + nonExistentFile )
2015-09-27 13:59:51 +00:00
2016-04-19 17:23:08 +00:00
cmd . Stdout = & b
cmd . Stderr = & b
cmd . Start ( )
time . Sleep ( 500 * time . Millisecond )
output = b . Bytes ( )
2016-05-24 12:23:42 +00:00
c . Assert ( string ( output ) , checker . Not ( checker . Contains ) , fmt . Sprintf ( "Error reading configuration file: open %s: no such file or directory" , nonExistentFile ) )
2016-04-19 17:23:08 +00:00
cmd . Process . Kill ( )
2015-09-27 13:59:51 +00:00
}
func ( s * SimpleSuite ) TestInvalidConfigShouldFail ( c * check . C ) {
2016-01-13 21:46:44 +00:00
cmd := exec . Command ( traefikBinary , "--configFile=fixtures/invalid_configuration.toml" )
2015-09-27 13:59:51 +00:00
2016-04-19 17:23:08 +00:00
var b bytes . Buffer
cmd . Stdout = & b
cmd . Stderr = & b
cmd . Start ( )
time . Sleep ( 500 * time . Millisecond )
defer cmd . Process . Kill ( )
output := b . Bytes ( )
2016-05-24 12:23:42 +00:00
c . Assert ( string ( output ) , checker . Contains , "Near line 0 (last key parsed ''): Bare keys cannot contain '{'" )
2015-09-27 13:59:51 +00:00
}
func ( s * SimpleSuite ) TestSimpleDefaultConfig ( c * check . C ) {
2016-01-13 21:46:44 +00:00
cmd := exec . Command ( traefikBinary , "--configFile=fixtures/simple_default.toml" )
2015-09-27 13:59:51 +00:00
err := cmd . Start ( )
c . Assert ( err , checker . IsNil )
2015-11-03 22:06:31 +00:00
defer cmd . Process . Kill ( )
2015-09-27 13:59:51 +00:00
2015-10-08 20:11:34 +00:00
time . Sleep ( 500 * time . Millisecond )
2015-09-27 13:59:51 +00:00
// TODO validate : run on 80
2016-01-13 21:46:44 +00:00
resp , err := http . Get ( "http://127.0.0.1:8000/" )
2015-09-27 13:59:51 +00:00
2016-03-15 17:57:56 +00:00
// Expected a 404 as we did not configure anything
c . Assert ( err , checker . IsNil )
c . Assert ( resp . StatusCode , checker . Equals , 404 )
2015-11-03 22:06:31 +00:00
}
func ( s * SimpleSuite ) TestWithWebConfig ( c * check . C ) {
2016-01-13 21:46:44 +00:00
cmd := exec . Command ( traefikBinary , "--configFile=fixtures/simple_web.toml" )
2015-11-03 22:06:31 +00:00
err := cmd . Start ( )
c . Assert ( err , checker . IsNil )
defer cmd . Process . Kill ( )
time . Sleep ( 500 * time . Millisecond )
2015-09-27 13:59:51 +00:00
2015-11-03 22:06:31 +00:00
resp , err := http . Get ( "http://127.0.0.1:8080/api" )
// Expected a 200
c . Assert ( err , checker . IsNil )
c . Assert ( resp . StatusCode , checker . Equals , 200 )
2015-09-27 13:59:51 +00:00
}