@ -21,8 +21,10 @@ import (
"net"
"net/http"
"net/http/httptest"
"net/url"
"os"
"testing"
"time"
"github.com/stretchr/testify/suite"
)
@ -43,9 +45,9 @@ func (suite *RegistryScopeTestSuite) TearDownSuite() {
func ( suite * RegistryScopeTestSuite ) Test_1_Check_Push_Request_Scope ( ) {
var requestURL string
requestURL := make ( chan string , 1 )
handler := http . HandlerFunc ( func ( w http . ResponseWriter , r * http . Request ) {
requestURL = r . URL . String ( )
requestURL <- r . URL . String ( )
w . WriteHeader ( http . StatusOK )
} )
listener , err := net . Listen ( "tcp" , suite . AuthServerHost )
@ -67,14 +69,25 @@ func (suite *RegistryScopeTestSuite) Test_1_Check_Push_Request_Scope() {
suite . Error ( err , "error pushing good ref because auth server doesn't give proper token" )
//check the url that authentication server received
suite . Equal ( "/auth?scope=repository%3Atestrepo%2Flocal-subchart%3Apull%2Cpush&service=testservice" , requestURL )
select {
case urlStr := <- requestURL :
u , err := url . Parse ( urlStr )
suite . NoError ( err , "no error parsing requested URL" )
suite . Equal ( "/auth" , u . Path )
suite . Equal ( "testservice" , u . Query ( ) . Get ( "service" ) )
scope := u . Query ( ) . Get ( "scope" )
suite . Contains ( scope , "repository:testrepo/local-subchart:pull,push" )
case <- time . After ( 5 * time . Second ) :
suite . T ( ) . Fatal ( "timeout waiting for auth request" )
}
}
func ( suite * RegistryScopeTestSuite ) Test_2_Check_Pull_Request_Scope ( ) {
var requestURL string
requestURL := make ( chan string , 1 )
handler := http . HandlerFunc ( func ( w http . ResponseWriter , r * http . Request ) {
requestURL = r . URL . String ( )
requestURL <- r . URL . String ( )
w . WriteHeader ( http . StatusOK )
} )
listener , err := net . Listen ( "tcp" , suite . AuthServerHost )
@ -96,7 +109,18 @@ func (suite *RegistryScopeTestSuite) Test_2_Check_Pull_Request_Scope() {
suite . Error ( err , "error pulling a simple chart because auth server doesn't give proper token" )
//check the url that authentication server received
suite . Equal ( "/auth?scope=repository%3Atestrepo%2Flocal-subchart%3Apull&service=testservice" , requestURL )
select {
case urlStr := <- requestURL :
u , err := url . Parse ( urlStr )
suite . NoError ( err , "no error parsing requested URL" )
suite . Equal ( "/auth" , u . Path )
suite . Equal ( "testservice" , u . Query ( ) . Get ( "service" ) )
scope := u . Query ( ) . Get ( "scope" )
suite . Contains ( scope , "repository:testrepo/local-subchart:pull" )
case <- time . After ( 5 * time . Second ) :
suite . T ( ) . Fatal ( "timeout waiting for auth request" )
}
}
func TestRegistryScopeTestSuite ( t * testing . T ) {