From: PatrikBuhr Date: Thu, 24 Mar 2022 08:20:18 +0000 (+0100) Subject: Fetch of authorization token X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=a2042d0be66816154768f896817bc690b731f017;p=nonrtric.git Fetch of authorization token Trying to fix unstable unittest. Timing issue. Signed-off-by: PatrikBuhr Issue-ID: NONRTRIC-735 Change-Id: Ib5e586a495428df380e3e0d4e5101e7c9f4937b2 --- diff --git a/auth-token-fetch/go.mod b/auth-token-fetch/go.mod index b1fd1b6c..4fbd6d3f 100644 --- a/auth-token-fetch/go.mod +++ b/auth-token-fetch/go.mod @@ -11,7 +11,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/kr/pretty v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980 // indirect + golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect ) diff --git a/auth-token-fetch/go.sum b/auth-token-fetch/go.sum index f638fbfd..e23f4626 100644 --- a/auth-token-fetch/go.sum +++ b/auth-token-fetch/go.sum @@ -15,8 +15,8 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980 h1:OjiUf46hAmXblsZdnoSXsEUSKU8r1UEzcL5RVZ4gO9Y= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 h1:OH54vjqzRWmbJ62fjuhxy7AxFFgoHN0/DPc/UrL8cAs= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/auth-token-fetch/main_test.go b/auth-token-fetch/main_test.go index 2222bd90..b0b6862d 100644 --- a/auth-token-fetch/main_test.go +++ b/auth-token-fetch/main_test.go @@ -36,7 +36,7 @@ import ( "github.com/stretchr/testify/require" ) -func createHttpClientMock(t *testing.T, configuration *Config, wg *sync.WaitGroup, token JwtToken) *http.Client { +func createHttpClientMock(t *testing.T, configuration *Config, token JwtToken) *http.Client { assertions := require.New(t) clientMock := NewTestClient(func(req *http.Request) *http.Response { if req.URL.String() == configuration.AuthServiceUrl { @@ -47,7 +47,7 @@ func createHttpClientMock(t *testing.T, configuration *Config, wg *sync.WaitGrou assertions.Contains(body, "grant_type="+configuration.GrantType) contentType := req.Header.Get("content-type") assertions.Equal("application/x-www-form-urlencoded", contentType) - wg.Done() + return &http.Response{ StatusCode: 200, Body: ioutil.NopCloser(bytes.NewBuffer(toBody(token))), @@ -78,16 +78,11 @@ func TestFetchAndStoreToken(t *testing.T) { accessToken := "Access_token" + fmt.Sprint(time.Now().UnixNano()) token := JwtToken{Access_token: accessToken, Expires_in: 7, Token_type: "Token_type"} - wg := sync.WaitGroup{} - wg.Add(2) // Get token two times - clientMock := createHttpClientMock(t, configuration, &wg, token) + clientMock := createHttpClientMock(t, configuration, token) go periodicRefreshIwtToken(clientMock, context) - if waitTimeout(&wg, 12*time.Second) { - t.Error("Not all calls to server were made") - t.Fail() - } + waitForFile(configuration.AuthTokenOutputFileName, 30, t) tokenFileContent, err := ioutil.ReadFile(configuration.AuthTokenOutputFileName) check(err) @@ -97,6 +92,18 @@ func TestFetchAndStoreToken(t *testing.T) { context.Running = false } +func waitForFile(fileName string, maxTimeSeconds int, t *testing.T) bool { + for i := 1; i < maxTimeSeconds; i++ { + if _, err := os.Stat(fileName); err == nil { + return true + } + time.Sleep(time.Second) + } + t.Error("File not created: " + fileName) + t.Fail() + return false +} + func TestStart(t *testing.T) { assertions := require.New(t) log.SetLevel(log.TraceLevel) @@ -105,6 +112,9 @@ func TestStart(t *testing.T) { configuration.AuthTokenOutputFileName = "/tmp/authToken" + fmt.Sprint(time.Now().UnixNano()) configuration.CACertsPath = configuration.CertPath context := NewContext(configuration) + t.Cleanup(func() { + os.Remove(configuration.AuthTokenOutputFileName) + }) start(context)