Skip to content

Commit

Permalink
fix rest client action without token
Browse files Browse the repository at this point in the history
  • Loading branch information
Lior Tamari committed Nov 27, 2017
1 parent 0305062 commit 902651c
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 18 deletions.
2 changes: 1 addition & 1 deletion local/scbe/scbe_rest_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func newScbeRestClient(conInfo resources.ConnectionInfo, simpleClient SimpleRest
referrer := fmt.Sprintf(UrlScbeReferer, conInfo.ManagementIP, conInfo.Port)
baseUrl := referrer + UrlScbeBaseSuffix
var err error
if simpleClient, err = NewSimpleRestClient(conInfo, baseUrl, UrlScbeResourceGetAuth, referrer); err != nil {
if simpleClient, err = NewSimpleRestClient(conInfo, baseUrl, referrer); err != nil {
return nil, logs.GetLogger().ErrorRet(err, "NewSimpleRestClient failed")
}
}
Expand Down
1 change: 0 additions & 1 deletion local/scbe/scbe_rest_client_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ var _ = Describe("restClient integration testing with existing SCBE instance", f
client, err = scbe.NewSimpleRestClient(
conInfo,
"https://"+scbeIP+":"+strconv.Itoa(scbePort)+"/api/v1",
scbe.UrlScbeResourceGetAuth,
"https://"+scbeIP+":"+strconv.Itoa(scbePort)+"/")
Expect(err).ToNot(HaveOccurred())
})
Expand Down
13 changes: 6 additions & 7 deletions local/scbe/simple_rest_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,15 +63,14 @@ const (
type simpleRestClient struct {
logger logs.Logger
baseURL string
authURL string
referrer string
connectionInfo resources.ConnectionInfo
httpClient *http.Client
headers *sync.Map
}

func NewSimpleRestClient(conInfo resources.ConnectionInfo, baseURL string, authURL string, referrer string) (SimpleRestClient, error) {
client := &simpleRestClient{logger: logs.GetLogger(), connectionInfo: conInfo, baseURL: baseURL, authURL: authURL, referrer: referrer, httpClient: &http.Client{}}
func NewSimpleRestClient(conInfo resources.ConnectionInfo, baseURL string, referrer string) (SimpleRestClient, error) {
client := &simpleRestClient{logger: logs.GetLogger(), connectionInfo: conInfo, baseURL: baseURL, referrer: referrer, httpClient: &http.Client{}}
client.initHeader()
if err := client.initTransport(); err != nil {
return nil, client.logger.ErrorRet(err, "client.initTransport failed")
Expand All @@ -95,7 +94,7 @@ func (s *simpleRestClient) getToken() error {
if err != nil {
return s.logger.ErrorRet(err, "json.Marshal failed")
}
if err = s.Post(s.authURL, credentials, HTTP_SUCCEED, &loginResponse); err != nil {
if err = s.Post(UrlScbeResourceGetAuth, credentials, HTTP_SUCCEED, &loginResponse); err != nil {
return s.logger.ErrorRet(err, "Post failed")
}
if loginResponse.Token == "" {
Expand All @@ -116,9 +115,10 @@ func (s *simpleRestClient) genericAction(actionName string, resource_url string,

func (s *simpleRestClient) genericActionInternal(actionName string, resource_url string, payload []byte, params map[string]string, exitStatus int, v interface{}, retryUnauthorized bool) error {
defer s.logger.Trace(logs.DEBUG)()
url := utils.FormatURL(s.baseURL, resource_url)
var err error
var request *http.Request

url := utils.FormatURL(s.baseURL, resource_url)
if actionName == "GET" {
request, err = http.NewRequest(actionName, url, nil)
} else {
Expand Down Expand Up @@ -147,8 +147,7 @@ func (s *simpleRestClient) genericActionInternal(actionName string, resource_url

// check if client sent a token and it expired
if response.StatusCode == http.StatusUnauthorized {
_, hasAuth := s.headers.Load(HTTP_AUTH_KEY)
if hasAuth && retryUnauthorized {
if retryUnauthorized && resource_url != UrlScbeResourceGetAuth {

// login
if err = s.Login(); err != nil {
Expand Down
17 changes: 8 additions & 9 deletions local/scbe/simple_rest_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ const (
fakeScbeQfdn = "1.1.1.1"
fakeScbeUrlBase = "https://" + fakeScbeQfdn + ":6666"
suffix = "api/v1"
fakeScbeUrlAuth = "users/get-auth-token"
fakeScbeUrlAuthFull = fakeScbeUrlBase + "/" + suffix + "/" + fakeScbeUrlAuth
fakeScbeUrlAuthFull = fakeScbeUrlBase + "/" + suffix + "/" + "users/get-auth-token"
fakeScbeUrlReferer = fakeScbeUrlBase + "/"
fakeScbeUrlApi = fakeScbeUrlBase + "/" + suffix
fakeCert = "/tmp/fake_cert.crt"
Expand Down Expand Up @@ -70,7 +69,7 @@ var _ = Describe("restClient", func() {
err error
)
BeforeEach(func() {
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlAuth, fakeScbeUrlReferer)
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlReferer)
Expect(err).ToNot(HaveOccurred())
})

Expand Down Expand Up @@ -118,7 +117,7 @@ var _ = Describe("restClient", func() {
err error
)
BeforeEach(func() {
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlAuth, fakeScbeUrlReferer)
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlReferer)
Expect(err).ToNot(HaveOccurred())
loginResponse := scbe.LoginResponse{Token: "fake-token"}
marshalledResponse, err := json.Marshal(loginResponse)
Expand Down Expand Up @@ -214,14 +213,14 @@ var _ = Describe("restClient", func() {
})
Context(".initTransport", func() {
It("should fail with default (verify-full) and no certificates", func() {
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{ManagementIP: fakeScbeQfdn}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlAuth, fakeScbeUrlReferer)
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{ManagementIP: fakeScbeQfdn}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlReferer)
Expect(err).To(HaveOccurred())
_, ok := err.(*scbe.SslModeFullVerifyWithoutCAfile)
Expect(ok).To(Equal(true))
})
It("should fail if wrong ssl mode", func() {
os.Setenv(resources.KeyScbeSslMode, "fake ssl mode")
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{ManagementIP: fakeScbeQfdn}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlAuth, fakeScbeUrlReferer)
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{ManagementIP: fakeScbeQfdn}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlReferer)
os.Unsetenv(resources.KeyScbeSslMode)
Expect(err).To(HaveOccurred())
_, ok := err.(*scbe.SslModeValueInvalid)
Expand All @@ -231,7 +230,7 @@ var _ = Describe("restClient", func() {
os.Remove(fakeCert)
os.Setenv(scbe.KEY_VERIFY_SCBE_CERT, fakeCert)
os.Setenv(resources.KeyScbeSslMode, resources.SslModeVerifyFull)
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{ManagementIP: fakeScbeQfdn}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlAuth, fakeScbeUrlReferer)
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{ManagementIP: fakeScbeQfdn}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlReferer)
os.Unsetenv(resources.KeyScbeSslMode)
os.Setenv(scbe.KEY_VERIFY_SCBE_CERT, "")
Expect(err).To(HaveOccurred())
Expand All @@ -242,14 +241,14 @@ var _ = Describe("restClient", func() {
Expect(err).ToNot(HaveOccurred())
os.Setenv(scbe.KEY_VERIFY_SCBE_CERT, fakeCert)
os.Setenv(resources.KeyScbeSslMode, resources.SslModeVerifyFull)
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{ManagementIP: fakeScbeQfdn}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlAuth, fakeScbeUrlReferer)
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{ManagementIP: fakeScbeQfdn}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlReferer)
os.Unsetenv(resources.KeyScbeSslMode)
os.Setenv(scbe.KEY_VERIFY_SCBE_CERT, "")
Expect(err).To(HaveOccurred())
})
It("should succeed with require ssl mode", func() {
os.Setenv(resources.KeyScbeSslMode, resources.SslModeRequire)
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{ManagementIP: fakeScbeQfdn}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlAuth, fakeScbeUrlReferer)
client, err = scbe.NewSimpleRestClient(resources.ConnectionInfo{ManagementIP: fakeScbeQfdn}, fakeScbeUrlBase+"/"+suffix, fakeScbeUrlReferer)
os.Unsetenv(resources.KeyScbeSslMode)
Expect(err).NotTo(HaveOccurred())
})
Expand Down

0 comments on commit 902651c

Please sign in to comment.