github.com/jonaz/heapster@v1.3.0-beta.0.0.20170208112634-cd3c15ca3d29/metrics/sinks/monasca/monasca_client_test.go (about) 1 // Copyright 2015 Google Inc. All Rights Reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package monasca 16 17 import ( 18 "net/http" 19 "net/url" 20 "testing" 21 22 "github.com/stretchr/testify/assert" 23 ) 24 25 func initClientSUT() (*keystoneClientMock, Client) { 26 ksClientMock := new(keystoneClientMock) 27 monURL, _ := url.Parse(monascaAPIStub.URL) 28 sut := &ClientImpl{ksClient: ksClientMock, monascaURL: monURL} 29 return ksClientMock, sut 30 } 31 32 func TestValidRequest(t *testing.T) { 33 // setup 34 ksClientMock, sut := initClientSUT() 35 ksClientMock.On("GetToken").Return(testToken, nil).Once() 36 37 // do 38 status, resp, err := sut.SendRequest("POST", "/metrics", expectedTransformed) 39 40 // assert 41 assert.NoError(t, err) 42 assert.Equal(t, "", resp) 43 assert.Equal(t, status, http.StatusNoContent) 44 ksClientMock.AssertExpectations(t) 45 } 46 47 func TestBadTokenRequest(t *testing.T) { 48 // setup 49 ksClientMock, sut := initClientSUT() 50 ksClientMock.On("GetToken").Return("blob", nil).Once() 51 52 // do 53 status, resp, err := sut.SendRequest("POST", "/metrics", expectedTransformed) 54 55 // assert 56 assert.NoError(t, err) 57 assert.Equal(t, monUnauthorizedResp, resp) 58 assert.Equal(t, http.StatusUnauthorized, status) 59 ksClientMock.AssertExpectations(t) 60 } 61 62 func TestBadMetricsRequest(t *testing.T) { 63 // setup 64 ksClientMock, sut := initClientSUT() 65 ksClientMock.On("GetToken").Return(testToken, nil).Once() 66 67 // do 68 status, _, err := sut.SendRequest("POST", "/metrics", "[1,2,3,4]") 69 70 // assert 71 assert.NoError(t, err) 72 assert.Equal(t, status, http.StatusInternalServerError) 73 ksClientMock.AssertExpectations(t) 74 } 75 76 func TestWrongURLRequest(t *testing.T) { 77 // setup 78 ksClientMock, sut := initClientSUT() 79 ksClientMock.On("GetToken").Return(testToken, nil).Once() 80 81 // do 82 status, resp, err := sut.SendRequest("POST", "http:/malformed", expectedTransformed) 83 84 // assert 85 assert.Error(t, err) 86 assert.Equal(t, "", resp) 87 assert.Equal(t, status, 0) 88 ksClientMock.AssertExpectations(t) 89 } 90 91 func TestMonascaHealthy(t *testing.T) { 92 // setup 93 ksClientMock, sut := initClientSUT() 94 ksClientMock.On("GetToken").Return(testToken, nil).Once() 95 96 // do 97 err := sut.CheckHealth() 98 99 // assert 100 assert.NoError(t, err) 101 ksClientMock.AssertExpectations(t) 102 } 103 104 func TestMonascaUnhealthy(t *testing.T) { 105 106 // setup 107 ksClientMock := new(keystoneClientMock) 108 nonReachableMonURL, _ := url.Parse("http://127.0.0.1:9") 109 sut := &ClientImpl{ksClient: ksClientMock, monascaURL: nonReachableMonURL} 110 ksClientMock.On("GetToken").Return(testToken, nil).Once() 111 112 // do 113 err := sut.CheckHealth() 114 115 // assert 116 assert.Error(t, err) 117 ksClientMock.AssertExpectations(t) 118 }