bitbucket.org/Aishee/synsec@v0.0.0-20210414005726-236fc01a153d/pkg/apiserver/api_key_test.go (about)

     1  package apiserver
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httptest"
     6  	"strings"
     7  	"testing"
     8  
     9  	log "github.com/sirupsen/logrus"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestAPIKey(t *testing.T) {
    14  	router, err := NewAPITest()
    15  	if err != nil {
    16  		log.Fatalf("unable to run local API: %s", err)
    17  	}
    18  
    19  	APIKey, err := CreateTestBouncer()
    20  	if err != nil {
    21  		log.Fatalf("%s", err.Error())
    22  	}
    23  	// Login with empty token
    24  	w := httptest.NewRecorder()
    25  	req, _ := http.NewRequest("GET", "/v1/decisions", strings.NewReader(""))
    26  	req.Header.Add("User-Agent", UserAgent)
    27  	router.ServeHTTP(w, req)
    28  
    29  	assert.Equal(t, 403, w.Code)
    30  	assert.Equal(t, "{\"message\":\"access forbidden\"}", w.Body.String())
    31  
    32  	// Login with invalid token
    33  	w = httptest.NewRecorder()
    34  	req, _ = http.NewRequest("GET", "/v1/decisions", strings.NewReader(""))
    35  	req.Header.Add("User-Agent", UserAgent)
    36  	req.Header.Add("X-Api-Key", "a1b2c3d4e5f6")
    37  	router.ServeHTTP(w, req)
    38  
    39  	assert.Equal(t, 403, w.Code)
    40  	assert.Equal(t, "{\"message\":\"access forbidden\"}", w.Body.String())
    41  
    42  	// Login with valid token
    43  	w = httptest.NewRecorder()
    44  	req, _ = http.NewRequest("GET", "/v1/decisions", strings.NewReader(""))
    45  	req.Header.Add("User-Agent", UserAgent)
    46  	req.Header.Add("X-Api-Key", APIKey)
    47  	router.ServeHTTP(w, req)
    48  
    49  	assert.Equal(t, 200, w.Code)
    50  	assert.Equal(t, "null", w.Body.String())
    51  
    52  }