59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
package middleware
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
check "gopkg.in/check.v1"
|
|
)
|
|
|
|
func Test(t *testing.T) { check.TestingT(t) }
|
|
|
|
type MiddlewareSuite struct{}
|
|
|
|
var _ = check.Suite(&MiddlewareSuite{})
|
|
|
|
func (s *MiddlewareSuite) TestNoConfig(c *check.C) {
|
|
options := make(map[string]interface{})
|
|
_, err := newRedirectStorageMiddleware(nil, options)
|
|
c.Assert(err, check.ErrorMatches, "no baseurl provided")
|
|
}
|
|
|
|
func (s *MiddlewareSuite) TestMissingScheme(c *check.C) {
|
|
options := make(map[string]interface{})
|
|
options["baseurl"] = "example.com"
|
|
_, err := newRedirectStorageMiddleware(nil, options)
|
|
c.Assert(err, check.ErrorMatches, "no scheme specified for redirect baseurl")
|
|
}
|
|
|
|
func (s *MiddlewareSuite) TestHttpsPort(c *check.C) {
|
|
options := make(map[string]interface{})
|
|
options["baseurl"] = "https://example.com:5443"
|
|
middleware, err := newRedirectStorageMiddleware(nil, options)
|
|
c.Assert(err, check.Equals, nil)
|
|
|
|
m, ok := middleware.(*redirectStorageMiddleware)
|
|
c.Assert(ok, check.Equals, true)
|
|
c.Assert(m.scheme, check.Equals, "https")
|
|
c.Assert(m.host, check.Equals, "example.com:5443")
|
|
|
|
url, err := middleware.URLFor(context.TODO(), "/rick/data", nil)
|
|
c.Assert(err, check.Equals, nil)
|
|
c.Assert(url, check.Equals, "https://example.com:5443/rick/data")
|
|
}
|
|
|
|
func (s *MiddlewareSuite) TestHTTP(c *check.C) {
|
|
options := make(map[string]interface{})
|
|
options["baseurl"] = "http://example.com"
|
|
middleware, err := newRedirectStorageMiddleware(nil, options)
|
|
c.Assert(err, check.Equals, nil)
|
|
|
|
m, ok := middleware.(*redirectStorageMiddleware)
|
|
c.Assert(ok, check.Equals, true)
|
|
c.Assert(m.scheme, check.Equals, "http")
|
|
c.Assert(m.host, check.Equals, "example.com")
|
|
|
|
url, err := middleware.URLFor(context.TODO(), "morty/data", nil)
|
|
c.Assert(err, check.Equals, nil)
|
|
c.Assert(url, check.Equals, "http://example.com/morty/data")
|
|
}
|