提交 d3c2b12b 编写于 作者: Y Yanjun Shi 提交者: LinuxSuRen

Add permission information for request (#187)

* Add permission information for request

* Add some test util
上级 012a2086
......@@ -158,18 +158,32 @@ func (j *JenkinsCore) RequestWithoutData(method, api string, headers map[string]
// ErrorHandle handles the error cases
func (j *JenkinsCore) ErrorHandle(statusCode int, data []byte) (err error) {
err = fmt.Errorf("unexpected status code: %d", statusCode)
if statusCode >= 400 && statusCode < 500 {
err = j.PermissionError(statusCode)
} else {
err = fmt.Errorf("unexpected status code: %d", statusCode)
}
if j.Debug {
ioutil.WriteFile("debug.html", data, 0664)
}
return
}
// PermissionError handles the no permission
func (j *JenkinsCore) PermissionError(statusCode int) (err error) {
if statusCode == 404 {
err = fmt.Errorf("Not found resources")
} else {
err = fmt.Errorf("The current user no permission")
}
return
}
// RequestWithResponse make a common request
func (j *JenkinsCore) RequestWithResponse(method, api string, headers map[string]string, payload io.Reader) (
response *http.Response, err error) {
var (
req *http.Request
req *http.Request
)
if req, err = http.NewRequest(method, fmt.Sprintf("%s%s", j.URL, api), payload); err != nil {
......
......@@ -139,5 +139,40 @@ var _ = Describe("common test", func() {
_, err := jenkinsCore.GetCrumb()
Expect(err).To(HaveOccurred())
})
It("with 404 error from server", func() {
err := jenkinsCore.ErrorHandle(404, []byte{})
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal("Not found resources"))
})
It("with 403 error from server", func() {
err := jenkinsCore.ErrorHandle(403, []byte{})
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal("The current user no permission"))
})
It("with CrumbHandle error from server", func() {
requestCrumb, _ := http.NewRequest("GET", fmt.Sprintf("%s%s", jenkinsCore.URL, "/crumbIssuer/api/json"), nil)
responseCrumb := &http.Response{
StatusCode: 500,
Proto: "HTTP/1.1",
Request: requestCrumb,
Body: ioutil.NopCloser(bytes.NewBufferString("")),
}
roundTripper.EXPECT().
RoundTrip(requestCrumb).Return(responseCrumb, nil)
err := jenkinsCore.CrumbHandle(requestCrumb)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal("unexpected status code: 500"))
})
It("test GetClient", func() {
jenkinsCore.RoundTripper = nil
jenkinsCore.Proxy = "kljasdsll"
jenkinsCore.ProxyAuth = "kljaslkdjkslad"
jclient := jenkinsCore.GetClient()
Expect(jclient).NotTo(BeNil())
})
})
})
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册