client: Add functions to handle Metadata and Results requests

Includes basic tests to check for errors, but not content.
This commit is contained in:
Brian C. Lane 2020-05-22 15:55:32 -07:00 committed by Tom Gundersen
parent 6b5ab26072
commit 49ca489efa
2 changed files with 76 additions and 0 deletions

View file

@ -186,3 +186,27 @@ func WriteComposeLogV0(socket *http.Client, w io.Writer, uuid string) (*APIRespo
return nil, err
}
// WriteComposeMetadataV0 requests the metadata for a compose and writes it to an io.Writer
func WriteComposeMetadataV0(socket *http.Client, w io.Writer, uuid string) (*APIResponse, error) {
body, resp, err := GetRawBody(socket, "GET", "/api/v0/compose/metadata/"+uuid)
if resp != nil || err != nil {
return resp, err
}
_, err = io.Copy(w, body)
body.Close()
return nil, err
}
// WriteComposeResultsV0 requests the results for a compose and writes it to an io.Writer
func WriteComposeResultsV0(socket *http.Client, w io.Writer, uuid string) (*APIResponse, error) {
body, resp, err := GetRawBody(socket, "GET", "/api/v0/compose/metadata/"+uuid)
if resp != nil || err != nil {
return resp, err
}
_, err = io.Copy(w, body)
body.Close()
return nil, err
}

View file

@ -184,6 +184,28 @@ func TestComposeInvalidLogV0(t *testing.T) {
require.Contains(t, resp.Errors[0].Msg, "c91818f9-8025-47af-89d2-f030d7000c2c")
}
// Test compose metadata for unknown uuid
func TestComposeInvalidMetadataV0(t *testing.T) {
resp, err := WriteComposeMetadataV0(testState.socket, ioutil.Discard, "c91818f9-8025-47af-89d2-f030d7000c2c")
require.NoError(t, err, "failed with a client error")
require.NotNil(t, resp)
require.False(t, resp.Status)
require.Equal(t, 1, len(resp.Errors))
require.Equal(t, "UnknownUUID", resp.Errors[0].ID)
require.Contains(t, resp.Errors[0].Msg, "c91818f9-8025-47af-89d2-f030d7000c2c")
}
// Test compose results for unknown uuid
func TestComposeInvalidResultsV0(t *testing.T) {
resp, err := WriteComposeResultsV0(testState.socket, ioutil.Discard, "c91818f9-8025-47af-89d2-f030d7000c2c")
require.NoError(t, err, "failed with a client error")
require.NotNil(t, resp)
require.False(t, resp.Status)
require.Equal(t, 1, len(resp.Errors))
require.Equal(t, "UnknownUUID", resp.Errors[0].ID)
require.Contains(t, resp.Errors[0].Msg, "c91818f9-8025-47af-89d2-f030d7000c2c")
}
// Test status filter for unknown uuid
func TestComposeInvalidStatusV0(t *testing.T) {
status, resp, err := GetComposeStatusV0(testState.socket, "c91818f9-8025-47af-89d2-f030d7000c2c", "", "", "")
@ -317,6 +339,21 @@ func TestFailedComposeV0(t *testing.T) {
require.Nil(t, resp)
require.Equal(t, "FAILED", info.QueueStatus)
require.Equal(t, buildID, info.ID)
// Test requesting the compose logs for the failed build
resp, err = WriteComposeLogsV0(testState.socket, ioutil.Discard, buildID.String())
require.NoError(t, err, "failed with a client error")
require.Nil(t, resp)
// Test requesting the compose metadata for the failed build
resp, err = WriteComposeMetadataV0(testState.socket, ioutil.Discard, buildID.String())
require.NoError(t, err, "failed with a client error")
require.Nil(t, resp)
// Test requesting the compose results for the failed build
resp, err = WriteComposeResultsV0(testState.socket, ioutil.Discard, buildID.String())
require.NoError(t, err, "failed with a client error")
require.Nil(t, resp)
}
// Setup and run the finished compose tests
@ -397,4 +434,19 @@ func TestFinishedComposeV0(t *testing.T) {
require.Nil(t, resp)
require.Equal(t, "FINISHED", info.QueueStatus)
require.Equal(t, buildID, info.ID)
// Test requesting the compose logs for the finished build
resp, err = WriteComposeLogsV0(testState.socket, ioutil.Discard, buildID.String())
require.NoError(t, err, "failed with a client error")
require.Nil(t, resp)
// Test requesting the compose metadata for the finished build
resp, err = WriteComposeMetadataV0(testState.socket, ioutil.Discard, buildID.String())
require.NoError(t, err, "failed with a client error")
require.Nil(t, resp)
// Test requesting the compose results for the finished build
resp, err = WriteComposeResultsV0(testState.socket, ioutil.Discard, buildID.String())
require.NoError(t, err, "failed with a client error")
require.Nil(t, resp)
}