Very nice looking tests!
Signed-off-by: Kris Nóva <kris@nivenly.com>
This commit is contained in:
parent
3b41c9dd5f
commit
c1a45bf8e3
149 changed files with 1241 additions and 443 deletions
119
api/v1/client.go
119
api/v1/client.go
|
@ -52,22 +52,133 @@ func (r *V1Response) JSON(i interface{}) error {
|
|||
|
||||
// GET is the V1 GET function. By design it will check globally for all non 200
|
||||
// responses and return an error if a non 200 is encountered.
|
||||
func (v1 *V1Client) GET(format string, a ...interface{}) *V1Response {
|
||||
url := v1.Endpoint(fmt.Sprintf(format, a...))
|
||||
//
|
||||
// Error Codes:
|
||||
// -1 Unable to create request
|
||||
func (v1 *V1Client) GET(endpointFormat string, a ...interface{}) *V1Response {
|
||||
url := v1.Endpoint(fmt.Sprintf(endpointFormat, a...))
|
||||
//logger.Debug("GET [%s]", url)
|
||||
response := &V1Response{}
|
||||
buffer := &bytes.Buffer{}
|
||||
req, err := http.NewRequest("GET", url, buffer)
|
||||
if err != nil {
|
||||
response.StatusCode = -1
|
||||
response.Error = fmt.Errorf("unable to create new GET request: %v", err)
|
||||
response.Error = fmt.Errorf("unable to create new request: %v", err)
|
||||
return response
|
||||
}
|
||||
req.Header.Set("Content-Type", DefaultContentType)
|
||||
req.Header.Set("X-Session-Id", v1.token)
|
||||
resp, err := v1.client.Do(req)
|
||||
if err != nil {
|
||||
response.Error = fmt.Errorf("error while executing GET request: %v", err)
|
||||
response.Error = fmt.Errorf("error while executing request: %v", err)
|
||||
return response
|
||||
}
|
||||
response.StatusCode = resp.StatusCode
|
||||
response.HTTPResponse = resp
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
response.Error = fmt.Errorf("unable to read body: %v", err)
|
||||
return response
|
||||
}
|
||||
response.Body = body
|
||||
if resp.StatusCode != 200 {
|
||||
response.Error = fmt.Errorf("[%d]: %s", resp.StatusCode, body)
|
||||
return response
|
||||
}
|
||||
return response
|
||||
}
|
||||
|
||||
// POST is the V1 POST function. By design it will check globally for all non 200
|
||||
// responses and return an error if a non 200 is encountered.
|
||||
// POST will accept a payload.
|
||||
//
|
||||
// Error Codes:
|
||||
// -1 Unable to create request
|
||||
// -2 Unable to write payload
|
||||
// -3 Unable to JSON Marshal
|
||||
func (v1 *V1Client) POST(payload interface{}, endpointFormat string, a ...interface{}) *V1Response {
|
||||
url := v1.Endpoint(fmt.Sprintf(endpointFormat, a...))
|
||||
//logger.Debug("POST [%s]", url)
|
||||
response := &V1Response{}
|
||||
jBytes, err := json.Marshal(&payload)
|
||||
if err != nil {
|
||||
response.StatusCode = -3
|
||||
response.Error = fmt.Errorf("unable to marshal JSON: %v", err)
|
||||
return response
|
||||
}
|
||||
buffer := &bytes.Buffer{}
|
||||
_, err = buffer.Write(jBytes)
|
||||
if err != nil {
|
||||
response.StatusCode = -2
|
||||
response.Error = fmt.Errorf("unable to write payload: %v", err)
|
||||
return response
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("POST", url, buffer)
|
||||
if err != nil {
|
||||
response.StatusCode = -1
|
||||
response.Error = fmt.Errorf("unable to create new request: %v", err)
|
||||
return response
|
||||
}
|
||||
req.Header.Set("Content-Type", DefaultContentType)
|
||||
req.Header.Set("X-Session-Id", v1.token)
|
||||
resp, err := v1.client.Do(req)
|
||||
if err != nil {
|
||||
response.Error = fmt.Errorf("error while executing request: %v", err)
|
||||
return response
|
||||
}
|
||||
response.StatusCode = resp.StatusCode
|
||||
response.HTTPResponse = resp
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
response.Error = fmt.Errorf("unable to read body: %v", err)
|
||||
return response
|
||||
}
|
||||
response.Body = body
|
||||
if resp.StatusCode != 200 {
|
||||
response.Error = fmt.Errorf("[%d]: %s", resp.StatusCode, body)
|
||||
return response
|
||||
}
|
||||
return response
|
||||
}
|
||||
|
||||
// PUT is the V1 POST function. By design it will check globally for all non 200
|
||||
// responses and return an error if a non 200 is encountered.
|
||||
// PUT will accept a payload.
|
||||
//
|
||||
// Error Codes:
|
||||
// -1 Unable to create request
|
||||
// -2 Unable to write payload
|
||||
// -3 Unable to JSON Marshal
|
||||
func (v1 *V1Client) PUT(payload interface{}, endpointFormat string, a ...interface{}) *V1Response {
|
||||
url := v1.Endpoint(fmt.Sprintf(endpointFormat, a...))
|
||||
//logger.Debug("POST [%s]", url)
|
||||
response := &V1Response{}
|
||||
jBytes, err := json.Marshal(&payload)
|
||||
if err != nil {
|
||||
response.StatusCode = -3
|
||||
response.Error = fmt.Errorf("unable to marshal JSON: %v", err)
|
||||
return response
|
||||
}
|
||||
buffer := &bytes.Buffer{}
|
||||
_, err = buffer.Write(jBytes)
|
||||
if err != nil {
|
||||
response.StatusCode = -2
|
||||
response.Error = fmt.Errorf("unable to write payload: %v", err)
|
||||
return response
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("PUT", url, buffer)
|
||||
if err != nil {
|
||||
response.StatusCode = -1
|
||||
response.Error = fmt.Errorf("unable to create new request: %v", err)
|
||||
return response
|
||||
}
|
||||
req.Header.Set("Content-Type", DefaultContentType)
|
||||
req.Header.Set("X-Session-Id", v1.token)
|
||||
resp, err := v1.client.Do(req)
|
||||
if err != nil {
|
||||
response.Error = fmt.Errorf("error while executing request: %v", err)
|
||||
return response
|
||||
}
|
||||
response.StatusCode = resp.StatusCode
|
||||
|
|
|
@ -71,23 +71,18 @@ type Photo struct {
|
|||
//
|
||||
// Parameters:
|
||||
// uuid: string PhotoUID as returned by the API
|
||||
func (v1 *V1Client) GetPhoto(uuid string) (*Photo, error) {
|
||||
func (v1 *V1Client) GetPhoto(uuid string) (Photo, error) {
|
||||
object := Photo{
|
||||
UUID: uuid,
|
||||
}
|
||||
err := v1.GET("/api/v1/photos/%s", uuid).JSON(&object)
|
||||
return &object, err
|
||||
return object, err
|
||||
}
|
||||
|
||||
// PUT /api/v1/photos/:uid
|
||||
func (v1 *V1Client) UpdatePhoto(update *Photo) (*Photo, error) {
|
||||
if update.UUID == "" {
|
||||
return nil, fmt.Errorf("missing uuid for UpdatePhoto [PUT /api/v1/photos/:uid]")
|
||||
}
|
||||
ref := *update
|
||||
updated := &ref
|
||||
// TODO Execute Request()
|
||||
return updated, nil
|
||||
func (v1 *V1Client) UpdatePhoto(object Photo) (Photo, error) {
|
||||
err := v1.PUT(&object, "/api/v1/photos/%s", object.UUID).JSON(&object)
|
||||
return object, err
|
||||
}
|
||||
|
||||
// GET /api/v1/photos/:uuid/dl
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue