diff --git a/.github/workflows/jobs.yaml b/.github/workflows/jobs.yaml index c050bf073..a10ce3582 100644 --- a/.github/workflows/jobs.yaml +++ b/.github/workflows/jobs.yaml @@ -1536,7 +1536,7 @@ jobs: go tool cover -func=all.out | grep total > tmp2 result=`cat tmp2 | awk 'END {print $3}'` result=${result%\%} - threshold=51.40 + threshold=51.50 echo "Result:" echo "$result%" if (( $(echo "$result >= $threshold" |bc -l) )); then diff --git a/operator-integration/tenant_test.go b/operator-integration/tenant_test.go index 170774ad0..72f55b197 100644 --- a/operator-integration/tenant_test.go +++ b/operator-integration/tenant_test.go @@ -39,7 +39,10 @@ import ( "github.com/stretchr/testify/assert" ) -var token string +var ( + token string + jwt string +) func inspectHTTPResponse(httpResponse *http.Response) string { /* @@ -167,13 +170,12 @@ func TestMain(m *testing.M) { return } secret2 := out2.String() - secret3 := decodeBase64(secret2[1 : len(secret2)-1]) - if secret3 == "" { + jwt := decodeBase64(secret2[1 : len(secret2)-1]) + if jwt == "" { fmt.Println("jwt cannot be empty string") os.Exit(-1) } - - response, err := LoginOperator(secret3) + response, err := LoginOperator() if err != nil { log.Println(err) return @@ -777,7 +779,7 @@ func TestCreateNamespace(t *testing.T) { } } -func LoginOperator(jwt string) (*http.Response, error) { +func LoginOperator() (*http.Response, error) { /* Description: Login to Operator Console. URL: /login/operator @@ -804,3 +806,65 @@ func LoginOperator(jwt string) (*http.Response, error) { response, err := client.Do(request) return response, err } + +func LogoutOperator() (*http.Response, error) { + /* + Description: Logout from Operator. + URL: /logout + */ + request, err := http.NewRequest( + "POST", + "http://localhost:9090/api/v1/logout", + nil, + ) + request.Header.Add("Cookie", fmt.Sprintf("token=%s", token)) + request.Header.Add("Content-Type", "application/json") + if err != nil { + log.Println(err) + } + request.Header.Add("Content-Type", "application/json") + client := &http.Client{ + Timeout: 2 * time.Second, + } + response, err := client.Do(request) + return response, err +} + +func TestLogout(t *testing.T) { + // Vars + assert := assert.New(t) + + // 1. Logout + response, err := LogoutOperator() + if err != nil { + log.Println(err) + return + } + if response != nil { + assert.Equal( + 200, + response.StatusCode, + inspectHTTPResponse(response), + ) + } + + // 2. Login to recover token + response, err = LoginOperator() + if err != nil { + log.Println(err) + return + } + if response != nil { + for _, cookie := range response.Cookies() { + if cookie.Name == "token" { + token = cookie.Value + break + } + } + } + + // Verify token + if token == "" { + assert.Fail("authentication token not found in cookies response") + } +}