From fb81152c8d958b399c485c476ec870ab36c22db6 Mon Sep 17 00:00:00 2001 From: Andy Lo-A-Foe Date: Wed, 31 Aug 2022 14:36:21 +0200 Subject: [PATCH] Core: introduce status interface and implement in all clients --- ai/client.go | 11 +++++++- ai/compute_environment_service.go | 2 +- ai/compute_target_service.go | 2 +- ai/inference/client_test.go | 2 +- .../compute_environment_service_test.go | 2 +- ai/inference/compute_target_service_test.go | 2 +- ai/inference/job_service_test.go | 2 +- ai/inference/model_service.go | 2 +- ai/inference/model_service_test.go | 2 +- ai/job_service.go | 2 +- ai/training/client_test.go | 2 +- ai/workspace/client_test.go | 2 +- ai/workspace/service.go | 6 ++-- audit/client.go | 7 +++++ audit/create.go | 2 +- audit/create_test.go | 2 +- blr/blobs_service.go | 10 +++---- blr/blobs_service_test.go | 2 +- blr/client.go | 7 +++++ cartel/add_security_groups_test.go | 2 +- cartel/add_tags_test.go | 2 +- cartel/add_user_groups_test.go | 2 +- cartel/all_instances_test.go | 2 +- cartel/client.go | 11 +++++++- cartel/create_test.go | 4 +-- cartel/deployment_state_test.go | 2 +- cartel/destroy_test.go | 2 +- cartel/details_test.go | 2 +- cartel/remove_security_groups_test.go | 2 +- cartel/remove_user_groups_test.go | 2 +- cartel/roles_test.go | 2 +- cartel/security_group_details_test.go | 2 +- cartel/security_groups_test.go | 2 +- cartel/set_protection_test.go | 2 +- cartel/start.go | 2 +- cartel/start_test.go | 4 +-- cartel/stop_test.go | 2 +- cartel/subnets_test.go | 2 +- cdl/client.go | 11 +++++++- cdl/dtd_service.go | 4 +-- cdl/dtd_service_test.go | 8 +++--- cdl/export_route_service.go | 5 ++-- cdl/export_route_service_test.go | 13 +++++---- cdl/label_definition_service.go | 2 +- cdl/label_definition_service_test.go | 8 +++--- cdl/study_service.go | 8 +++--- cdl/study_service_test.go | 2 +- cdr/client.go | 7 +++++ cdr/operations_r4_service.go | 2 +- cdr/operations_r4_service_test.go | 6 ++-- cdr/operations_stu3_service.go | 2 +- cdr/operations_stu3_service_test.go | 6 ++-- cdr/tenant_r4_service_test.go | 2 +- cdr/tenant_stu3_service_test.go | 2 +- connect/mdm/applications_service_test.go | 2 +- connect/mdm/authentication_methods_service.go | 2 +- .../authentication_methods_service_test.go | 6 ++-- connect/mdm/blob_data_contracts_service.go | 2 +- .../mdm/blob_data_contracts_service_test.go | 6 ++-- connect/mdm/blob_subscriptions_service.go | 2 +- .../mdm/blob_subscriptions_service_test.go | 6 ++-- connect/mdm/buckets_service.go | 2 +- connect/mdm/buckets_service_test.go | 6 ++-- connect/mdm/client.go | 7 +++++ .../mdm/data_broker_subscriptions_service.go | 4 +-- .../data_broker_subscriptions_service_test.go | 6 ++-- connect/mdm/data_types_service_test.go | 6 ++-- connect/mdm/data_types_services.go | 2 +- connect/mdm/device_groups_service.go | 2 +- connect/mdm/device_groups_service_test.go | 6 ++-- connect/mdm/device_types_service.go | 2 +- connect/mdm/device_types_service_test.go | 6 ++-- .../firmware_component_versions_service.go | 4 +-- ...irmware_component_versions_service_test.go | 6 ++-- connect/mdm/firmware_components_service.go | 4 +-- .../mdm/firmware_components_service_test.go | 6 ++-- .../firmware_distribution_requests_service.go | 4 +-- connect/mdm/oauth_clients_service.go | 6 ++-- connect/mdm/oauth_clients_service_test.go | 6 ++-- connect/mdm/propositions_service.go | 2 +- connect/mdm/propositions_service_test.go | 4 +-- connect/mdm/service_actions_service.go | 4 +-- connect/mdm/service_actions_service_test.go | 6 ++-- connect/mdm/service_agents_service_test.go | 2 +- connect/mdm/service_references_service.go | 4 +-- .../mdm/service_references_service_test.go | 6 ++-- connect/mdm/standard_services_service.go | 2 +- connect/mdm/standard_services_service_test.go | 6 ++-- console/client.go | 12 ++++++-- console/login.go | 4 +-- console/metrics_service_test.go | 16 +++++------ dicom/client.go | 9 +++++- dicom/client_test.go | 2 +- ...config_service_cdr_service_account_test.go | 7 +++-- dicom/config_service_fhir_store.go | 2 +- dicom/config_service_fhir_store_test.go | 7 +++-- dicom/config_service_import_service_test.go | 7 +++-- dicom/config_service_object_stores.go | 4 +-- dicom/config_service_object_stores_test.go | 7 +++-- ...fig_service_query_retrieve_service_test.go | 2 +- dicom/config_service_remote_nodes.go | 4 +-- dicom/config_service_remote_notes_test.go | 7 +++-- dicom/config_service_repositories.go | 4 +-- dicom/config_service_repositories_test.go | 7 +++-- discovery/client.go | 11 +++++++- has/client.go | 11 +++++++- has/resources_service.go | 2 +- has/sessions_service.go | 2 +- iam/applications_service.go | 4 +-- iam/applications_service_test.go | 5 ++-- iam/client.go | 9 +++++- iam/clients_service.go | 8 +++--- iam/clients_service_test.go | 8 +++--- iam/devices_service.go | 6 ++-- iam/devices_service_test.go | 10 +++---- iam/email_templates_service.go | 2 +- iam/email_templates_service_test.go | 8 +++--- iam/groups_service.go | 4 +-- iam/groups_service_test.go | 28 +++++++++---------- iam/interfaces.go | 4 +++ iam/introspect_test.go | 4 +-- iam/login.go | 4 +-- iam/mfa_policies_service.go | 2 +- iam/mfa_policies_service_test.go | 10 +++---- iam/organizations_service.go | 6 ++-- iam/organizations_service_test.go | 10 +++---- iam/password_policies_service.go | 2 +- iam/password_policies_service_test.go | 8 +++--- iam/permissions_service_test.go | 4 +-- iam/propositions_service.go | 2 +- iam/propositions_service_test.go | 4 +-- iam/roles_service_test.go | 22 +++++++-------- iam/services_service.go | 6 ++-- iam/services_service_test.go | 14 +++++----- iam/sms_gateways_service.go | 6 ++-- iam/sms_gateways_service_test.go | 2 +- iam/sms_templates_service.go | 6 ++-- iam/sms_templates_service_test.go | 2 +- iam/users_service.go | 16 +++++------ iam/users_service_test.go | 26 ++++++++--------- tdr/client.go | 11 +++++++- tdr/contracts_service.go | 2 +- tdr/contracts_service_test.go | 4 +-- tdr/data_items_service_test.go | 4 +-- 144 files changed, 436 insertions(+), 319 deletions(-) diff --git a/ai/client.go b/ai/client.go index 8485b6c8..72973b34 100644 --- a/ai/client.go +++ b/ai/client.go @@ -218,6 +218,13 @@ type Response struct { *http.Response } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} @@ -243,7 +250,9 @@ func (c *Client) Do(req *http.Request, v interface{}) (*Response, error) { } if v != nil { - defer resp.Body.Close() // Only close if we plan to read it + defer func() { + _ = resp.Body.Close() + }() // Only close if we plan to read it if w, ok := v.(io.Writer); ok { _, err = io.Copy(w, resp.Body) } else { diff --git a/ai/compute_environment_service.go b/ai/compute_environment_service.go index fe50beeb..608929a6 100644 --- a/ai/compute_environment_service.go +++ b/ai/compute_environment_service.go @@ -127,7 +127,7 @@ func (s *ComputeEnvironmentService) GetComputeEnvironments(opt *GetOptions, opti } resp, err := s.Client.Do(req, &bundleResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrEmptyResult } return nil, resp, err diff --git a/ai/compute_target_service.go b/ai/compute_target_service.go index de688356..58e365ef 100644 --- a/ai/compute_target_service.go +++ b/ai/compute_target_service.go @@ -104,7 +104,7 @@ func (s *ComputeTargetService) GetComputeTargets(opt *GetOptions, options ...Opt } resp, err := s.client.Do(req, &bundleResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrEmptyResult } return nil, resp, err diff --git a/ai/inference/client_test.go b/ai/inference/client_test.go index 5a2b0259..954db134 100644 --- a/ai/inference/client_test.go +++ b/ai/inference/client_test.go @@ -192,7 +192,7 @@ func TestMethodNotAllowed(t *testing.T) { }) assert.NotNil(t, err) assert.NotNil(t, resp) - assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode) + assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode()) } func TestDebug(t *testing.T) { diff --git a/ai/inference/compute_environment_service_test.go b/ai/inference/compute_environment_service_test.go index 40495131..3d2c6b81 100644 --- a/ai/inference/compute_environment_service_test.go +++ b/ai/inference/compute_environment_service_test.go @@ -98,5 +98,5 @@ func TestComputeEnvironmentCRD(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } diff --git a/ai/inference/compute_target_service_test.go b/ai/inference/compute_target_service_test.go index de1ca327..1917f6dc 100644 --- a/ai/inference/compute_target_service_test.go +++ b/ai/inference/compute_target_service_test.go @@ -100,5 +100,5 @@ func TestComputeTargetCRD(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } diff --git a/ai/inference/job_service_test.go b/ai/inference/job_service_test.go index f32a6aa0..898fb5bd 100644 --- a/ai/inference/job_service_test.go +++ b/ai/inference/job_service_test.go @@ -134,5 +134,5 @@ func TestJobCRD(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } diff --git a/ai/inference/model_service.go b/ai/inference/model_service.go index 1c6df608..4762a520 100644 --- a/ai/inference/model_service.go +++ b/ai/inference/model_service.go @@ -111,7 +111,7 @@ func (s *ModelService) GetModels(opt *ai.GetOptions, options ...ai.OptionFunc) ( } resp, err := s.client.Do(req, &bundleResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ai.ErrEmptyResult } return nil, resp, err diff --git a/ai/inference/model_service_test.go b/ai/inference/model_service_test.go index 5c9426e6..c28efafa 100644 --- a/ai/inference/model_service_test.go +++ b/ai/inference/model_service_test.go @@ -127,5 +127,5 @@ func TestModelCRD(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } diff --git a/ai/job_service.go b/ai/job_service.go index 1bc814ab..f461cfef 100644 --- a/ai/job_service.go +++ b/ai/job_service.go @@ -139,7 +139,7 @@ func (s *JobService) GetJobs(opt *GetOptions, options ...OptionFunc) ([]Job, *Re } resp, err := s.Client.Do(req, &bundleResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrEmptyResult } return nil, resp, err diff --git a/ai/training/client_test.go b/ai/training/client_test.go index 5710c123..14e2c3ef 100644 --- a/ai/training/client_test.go +++ b/ai/training/client_test.go @@ -192,7 +192,7 @@ func TestMethodNotAllowed(t *testing.T) { }) assert.NotNil(t, err) assert.NotNil(t, resp) - assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode) + assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode()) } func TestDebug(t *testing.T) { diff --git a/ai/workspace/client_test.go b/ai/workspace/client_test.go index 665d883f..6b3e3a5b 100644 --- a/ai/workspace/client_test.go +++ b/ai/workspace/client_test.go @@ -191,7 +191,7 @@ func TestMethodNotAllowed(t *testing.T) { }) assert.NotNil(t, err) assert.NotNil(t, resp) - assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode) + assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode()) } func TestDebug(t *testing.T) { diff --git a/ai/workspace/service.go b/ai/workspace/service.go index 5c41e100..85285300 100644 --- a/ai/workspace/service.go +++ b/ai/workspace/service.go @@ -116,7 +116,7 @@ func (s *Service) GetWorkspaces(opt *ai.GetOptions, options ...ai.OptionFunc) ([ } resp, err := s.client.Do(req, &bundleResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ai.ErrEmptyResult } return nil, resp, err @@ -161,7 +161,7 @@ func (s *Service) GetWorkspaceAccessURL(ws Workspace) (*AccessURL, *ai.Response, var accessURL AccessURL resp, err := s.client.Do(req, &accessURL) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ai.ErrEmptyResult } return nil, resp, err @@ -179,7 +179,7 @@ func (s *Service) GetWorkspaceLogs(ws Workspace) (*LogArtefact, *ai.Response, er var artefact LogArtefact resp, err := s.client.Do(req, &artefact) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ai.ErrEmptyResult } return nil, resp, err diff --git a/audit/client.go b/audit/client.go index 5809f0e0..05244bae 100644 --- a/audit/client.go +++ b/audit/client.go @@ -171,6 +171,13 @@ type Response struct { *http.Response } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + func newResponse(r *http.Response) *Response { response := &Response{Response: r} return response diff --git a/audit/create.go b/audit/create.go index 9b86cef7..63dce2df 100644 --- a/audit/create.go +++ b/audit/create.go @@ -29,7 +29,7 @@ func (c *Client) CreateAuditEvent(event *dstu2pb.AuditEvent) (*stu3pb.ContainedR return nil, resp, doErr } contained := &stu3pb.ContainedResource{} - if resp.StatusCode == http.StatusCreated { + if resp.StatusCode() == http.StatusCreated { return contained, resp, nil } // OperationOutcome diff --git a/audit/create_test.go b/audit/create_test.go index 922d9e64..8fe7ddbd 100644 --- a/audit/create_test.go +++ b/audit/create_test.go @@ -175,7 +175,7 @@ func TestBadRequest(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusBadRequest, resp.StatusCode) { + if !assert.Equal(t, http.StatusBadRequest, resp.StatusCode()) { return } assert.Nil(t, contained) diff --git a/blr/blobs_service.go b/blr/blobs_service.go index 8b952926..0a968455 100644 --- a/blr/blobs_service.go +++ b/blr/blobs_service.go @@ -203,7 +203,7 @@ func (b *BlobsService) Delete(blob Blob) (bool, *Response, error) { var deleteResponse interface{} resp, err := b.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil @@ -219,7 +219,7 @@ func (b *BlobsService) SetPolicy(blob Blob, policy BlobPolicy) (bool, *Response, var setPolicyResponse interface{} resp, err := b.Do(req, &setPolicyResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil @@ -256,7 +256,7 @@ func (b *BlobsService) DeletePolicy(blob Blob) (bool, *Response, error) { var deleteResponse interface{} resp, err := b.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil @@ -293,7 +293,7 @@ func (b *BlobsService) CompleteUpload(blob Blob, parts BlobPartUpload) (bool, *R var completeUploadResponse interface{} resp, err := b.Do(req, &completeUploadResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil @@ -309,7 +309,7 @@ func (b *BlobsService) AbortUpload(blob Blob) (bool, *Response, error) { var abortUploadResponse interface{} resp, err := b.Do(req, &abortUploadResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/blr/blobs_service_test.go b/blr/blobs_service_test.go index c551c2b8..7285b11f 100644 --- a/blr/blobs_service_test.go +++ b/blr/blobs_service_test.go @@ -88,5 +88,5 @@ func TestBlobCRUD(t *testing.T) { return } assert.True(t, res) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/blr/client.go b/blr/client.go index 2ba52b5c..3f200664 100644 --- a/blr/client.go +++ b/blr/client.go @@ -183,6 +183,13 @@ type Response struct { *http.Response } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} diff --git a/cartel/add_security_groups_test.go b/cartel/add_security_groups_test.go index 80de1a58..2e56dbec 100644 --- a/cartel/add_security_groups_test.go +++ b/cartel/add_security_groups_test.go @@ -36,6 +36,6 @@ func TestAddSecurityGroups(t *testing.T) { if !assert.NotNil(t, aur) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, true, aur.Success()) } diff --git a/cartel/add_tags_test.go b/cartel/add_tags_test.go index 9dbbe690..64ebdffa 100644 --- a/cartel/add_tags_test.go +++ b/cartel/add_tags_test.go @@ -38,6 +38,6 @@ func TestAddTags(t *testing.T) { if !assert.NotNil(t, atr) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, true, atr.Success()) } diff --git a/cartel/add_user_groups_test.go b/cartel/add_user_groups_test.go index 5b3bf38c..2c6c9176 100644 --- a/cartel/add_user_groups_test.go +++ b/cartel/add_user_groups_test.go @@ -36,6 +36,6 @@ func TestAddUserGroups(t *testing.T) { if !assert.NotNil(t, aur) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, true, aur.Success()) } diff --git a/cartel/all_instances_test.go b/cartel/all_instances_test.go index 4b315587..d0a1363c 100644 --- a/cartel/all_instances_test.go +++ b/cartel/all_instances_test.go @@ -31,7 +31,7 @@ func TestAllInstances(t *testing.T) { if !assert.NotNil(t, instances) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.Equal(t, 1, len(*instances)) { return } diff --git a/cartel/client.go b/cartel/client.go index ab4c4dec..375ed70a 100644 --- a/cartel/client.go +++ b/cartel/client.go @@ -68,6 +68,13 @@ type Response struct { Message string } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // OptionFunc is the function signature function for options type OptionFunc func(*http.Request) error @@ -150,7 +157,9 @@ func (c *Client) do(req *http.Request, v interface{}) (*Response, error) { if resp == nil || (err != nil && err != io.EOF) { return nil, fmt.Errorf("client.do: %w", err) } - defer resp.Body.Close() + defer func() { + _ = resp.Body.Close() + }() response := newResponse(resp) if v != nil { if w, ok := v.(io.Writer); ok { diff --git a/cartel/create_test.go b/cartel/create_test.go index 9b1a7caf..3871e13e 100644 --- a/cartel/create_test.go +++ b/cartel/create_test.go @@ -49,7 +49,7 @@ func TestCreate(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, true, sr.Success()) assert.Equal(t, "i-xxfbdf005781fa900", sr.InstanceID()) assert.Equal(t, "192.168.2.106", sr.IPAddress()) @@ -85,6 +85,6 @@ func TestAlreadyExist(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusBadRequest, resp.StatusCode) + assert.Equal(t, http.StatusBadRequest, resp.StatusCode()) assert.Equal(t, ErrHostnameAlreadyExists, err) } diff --git a/cartel/deployment_state_test.go b/cartel/deployment_state_test.go index 270385b5..5c181718 100644 --- a/cartel/deployment_state_test.go +++ b/cartel/deployment_state_test.go @@ -33,6 +33,6 @@ func TestDeploymentState(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, "succeeded", aur) } diff --git a/cartel/destroy_test.go b/cartel/destroy_test.go index 2bef2f2d..6b5dc9e3 100644 --- a/cartel/destroy_test.go +++ b/cartel/destroy_test.go @@ -39,6 +39,6 @@ func TestDestroy(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, true, sr.Success()) } diff --git a/cartel/details_test.go b/cartel/details_test.go index fe8bd1f0..f92b339a 100644 --- a/cartel/details_test.go +++ b/cartel/details_test.go @@ -65,7 +65,7 @@ func TestDetails(t *testing.T) { if !assert.NotNil(t, details) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, "container-host", details.Role) assert.Equal(t, "2019-11-29T18:17:44.000Z", details.LaunchTime) } diff --git a/cartel/remove_security_groups_test.go b/cartel/remove_security_groups_test.go index c1dd7ceb..3b726f9b 100644 --- a/cartel/remove_security_groups_test.go +++ b/cartel/remove_security_groups_test.go @@ -36,6 +36,6 @@ func TestRemoveSecurityGroups(t *testing.T) { if !assert.NotNil(t, aur) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, true, aur.Success()) } diff --git a/cartel/remove_user_groups_test.go b/cartel/remove_user_groups_test.go index bbae79c6..24e5765d 100644 --- a/cartel/remove_user_groups_test.go +++ b/cartel/remove_user_groups_test.go @@ -36,6 +36,6 @@ func TestRemoveUserGroups(t *testing.T) { if !assert.NotNil(t, aur) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, true, aur.Success()) } diff --git a/cartel/roles_test.go b/cartel/roles_test.go index 5fe73d14..b2cc052c 100644 --- a/cartel/roles_test.go +++ b/cartel/roles_test.go @@ -45,7 +45,7 @@ func TestRoles(t *testing.T) { if !assert.NotNil(t, roles) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.Equal(t, 3, len(*roles)) { return } diff --git a/cartel/security_group_details_test.go b/cartel/security_group_details_test.go index 5cec2a66..d0220862 100644 --- a/cartel/security_group_details_test.go +++ b/cartel/security_group_details_test.go @@ -44,7 +44,7 @@ func TestSecurityGroupDetails(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.Equal(t, 1, len(*details)) { return } diff --git a/cartel/security_groups_test.go b/cartel/security_groups_test.go index fe37f981..d9cc7f00 100644 --- a/cartel/security_groups_test.go +++ b/cartel/security_groups_test.go @@ -37,6 +37,6 @@ func TestSecurityGroups(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, 3, len(*groups)) } diff --git a/cartel/set_protection_test.go b/cartel/set_protection_test.go index 3bb0bbfe..4ce9302d 100644 --- a/cartel/set_protection_test.go +++ b/cartel/set_protection_test.go @@ -34,6 +34,6 @@ func TestSetProtect(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, true, pr.Success()) } diff --git a/cartel/start.go b/cartel/start.go index e916c59b..204de412 100644 --- a/cartel/start.go +++ b/cartel/start.go @@ -26,7 +26,7 @@ func (c *Client) Start(nameTag string) (*StartResponse, *Response, error) { var responseBody StartResponse resp, err := c.do(req, &responseBody) if resp != nil { - responseBody.Code = resp.StatusCode + responseBody.Code = resp.StatusCode() } return &responseBody, resp, err } diff --git a/cartel/start_test.go b/cartel/start_test.go index 63b5410b..25e957c4 100644 --- a/cartel/start_test.go +++ b/cartel/start_test.go @@ -35,7 +35,7 @@ func TestStart(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, true, sr.Success()) } @@ -68,6 +68,6 @@ func TestAlreadyRunning(t *testing.T) { if !assert.NotNil(t, err) { return } - assert.Equal(t, http.StatusBadRequest, resp.StatusCode) + assert.Equal(t, http.StatusBadRequest, resp.StatusCode()) assert.Equal(t, false, sr.Success()) } diff --git a/cartel/stop_test.go b/cartel/stop_test.go index 8ee8d2cb..72d51f84 100644 --- a/cartel/stop_test.go +++ b/cartel/stop_test.go @@ -39,6 +39,6 @@ func TestStop(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, true, sr.Success()) } diff --git a/cartel/subnets_test.go b/cartel/subnets_test.go index a18a630f..0285d2cd 100644 --- a/cartel/subnets_test.go +++ b/cartel/subnets_test.go @@ -46,6 +46,6 @@ func TestSubnets(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, 3, len(*subnets)) } diff --git a/cdl/client.go b/cdl/client.go index dac7b9ec..90dcaa0b 100644 --- a/cdl/client.go +++ b/cdl/client.go @@ -279,6 +279,13 @@ type Response struct { Link []LinkElementType } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} @@ -312,7 +319,9 @@ func (c *Client) do(req *http.Request, v interface{}) (*Response, error) { } if v != nil { - defer resp.Body.Close() // Only close if we plan to read it + defer func() { + _ = resp.Body.Close() + }() // Only close if we plan to read it if w, ok := v.(io.Writer); ok { _, err = io.Copy(w, resp.Body) } else { diff --git a/cdl/dtd_service.go b/cdl/dtd_service.go index c1d134c7..9674726d 100644 --- a/cdl/dtd_service.go +++ b/cdl/dtd_service.go @@ -41,7 +41,7 @@ func (dtd *DatatypeDefinitionService) GetDataTypeDefinitions(opt *GetOptions, op var getAllDtdResponse []DataTypeDefinition resp, err := dtd.client.do(req, &getAllDtdResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrEmptyResult } return nil, resp, err @@ -81,7 +81,7 @@ func (dtd *DatatypeDefinitionService) GetDataTypeDefinitionByID(id string) (*Dat var dtdByIdResponse DataTypeDefinition resp, err := dtd.client.do(req, &dtdByIdResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrEmptyResult } return nil, resp, err diff --git a/cdl/dtd_service_test.go b/cdl/dtd_service_test.go index 75f47077..31f6b4c2 100644 --- a/cdl/dtd_service_test.go +++ b/cdl/dtd_service_test.go @@ -112,7 +112,7 @@ func TestDataTypeDefinitionCRD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, created.ID, dtdID) item, resp, err := cdlClient.DataTypeDefinition.GetDataTypeDefinitionByID(dtdID) @@ -125,7 +125,7 @@ func TestDataTypeDefinitionCRD(t *testing.T) { if !assert.NotNil(t, item) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, dtdID, item.ID) item, resp, err = cdlClient.DataTypeDefinition.UpdateDataTypeDefinition(*item) @@ -139,7 +139,7 @@ func TestDataTypeDefinitionCRD(t *testing.T) { return } assert.Equal(t, dtdID, item.ID) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, item.Description, updatedDtdDescription) listOfDtd, listOfDtdResp, err := cdlClient.DataTypeDefinition.GetDataTypeDefinitions(&cdl.GetOptions{}) @@ -152,7 +152,7 @@ func TestDataTypeDefinitionCRD(t *testing.T) { if !assert.NotNil(t, listOfDtd) { return } - assert.Equal(t, http.StatusOK, listOfDtdResp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, len(listOfDtd), 1) assert.Equal(t, listOfDtd[0].ID, dtdID) } diff --git a/cdl/export_route_service.go b/cdl/export_route_service.go index 07098911..76c18b54 100644 --- a/cdl/export_route_service.go +++ b/cdl/export_route_service.go @@ -2,10 +2,11 @@ package cdl import ( "fmt" - "github.com/go-playground/validator/v10" "io" "net/http" "path" + + "github.com/go-playground/validator/v10" ) type ExportRoute struct { @@ -128,7 +129,7 @@ func (exp *ExportRouteService) GetExportRoutes(page int, options ...OptionFunc) var getAllExportRouteResponse ExportRouteBundleResponse resp, err := exp.client.do(req, &getAllExportRouteResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, nil, resp, ErrEmptyResult } return nil, nil, resp, err diff --git a/cdl/export_route_service_test.go b/cdl/export_route_service_test.go index 172d1aa6..186c3eb4 100644 --- a/cdl/export_route_service_test.go +++ b/cdl/export_route_service_test.go @@ -1,11 +1,12 @@ package cdl_test import ( - "github.com/philips-software/go-hsdp-api/cdl" - "github.com/stretchr/testify/assert" "io" "net/http" "testing" + + "github.com/philips-software/go-hsdp-api/cdl" + "github.com/stretchr/testify/assert" ) func TestExportRouteCRD(t *testing.T) { @@ -133,7 +134,7 @@ func TestExportRouteCRD(t *testing.T) { if !assert.NotNil(t, createdExportRoute) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, createdExportRoute.ID, exportRouteID) item, resp, err := cdlClient.ExportRoute.GetExportRouteByID(exportRouteID) @@ -146,7 +147,7 @@ func TestExportRouteCRD(t *testing.T) { if !assert.NotNil(t, item) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, exportRouteID, item.ID) items, bundleResponse, resp, err := cdlClient.ExportRoute.GetExportRoutes(1, nil) @@ -163,7 +164,7 @@ func TestExportRouteCRD(t *testing.T) { return } assert.Equal(t, exportRouteID, items[0].ID) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) resp, err = cdlClient.ExportRoute.DeleteExportRouteByID(exportRouteID) if !assert.Nil(t, err) { @@ -172,5 +173,5 @@ func TestExportRouteCRD(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/cdl/label_definition_service.go b/cdl/label_definition_service.go index 09b995a0..13acab7e 100644 --- a/cdl/label_definition_service.go +++ b/cdl/label_definition_service.go @@ -86,7 +86,7 @@ func (l *LabelDefinitionService) GetLabelDefinitions(studyId string, opt *GetOpt var getAllLabelDefResponse LabelDefBundleResponse resp, err := l.client.do(req, &getAllLabelDefResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrEmptyResult } return nil, resp, err diff --git a/cdl/label_definition_service_test.go b/cdl/label_definition_service_test.go index 32625dc9..6d5b43f2 100644 --- a/cdl/label_definition_service_test.go +++ b/cdl/label_definition_service_test.go @@ -171,7 +171,7 @@ func TestLabelDefinitionCRD(t *testing.T) { if !assert.NotNil(t, createdLabelDef) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, createdLabelDef.ID, labelDefID) item, resp, err := cdlClient.LabelDefinition.GetLabelDefinitionByID(studyID, labelDefID) @@ -184,7 +184,7 @@ func TestLabelDefinitionCRD(t *testing.T) { if !assert.NotNil(t, item) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, labelDefID, item.ID) items, resp, err := cdlClient.LabelDefinition.GetLabelDefinitions(studyID, &cdl.GetOptions{}) @@ -198,7 +198,7 @@ func TestLabelDefinitionCRD(t *testing.T) { return } assert.Equal(t, labelDefID, items[0].ID) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) resp, err = cdlClient.LabelDefinition.DeleteLabelDefinitionById(studyID, labelDefID) if !assert.Nil(t, err) { @@ -207,6 +207,6 @@ func TestLabelDefinitionCRD(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/cdl/study_service.go b/cdl/study_service.go index 2578090d..69e30ade 100644 --- a/cdl/study_service.go +++ b/cdl/study_service.go @@ -116,7 +116,7 @@ func (s *StudyService) GetStudies(opt *GetOptions, options ...OptionFunc) ([]Stu } resp, err = s.client.do(req, &bundleResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrEmptyResult } return nil, resp, err @@ -199,7 +199,7 @@ func (s *StudyService) GetPermissions(study Study, opt *GetOptions, options ...O resp, err := s.client.do(req, &bundleResponse) if err != nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrEmptyResult } return nil, resp, err @@ -217,7 +217,7 @@ func (s *StudyService) GrantPermission(study Study, request RoleRequest, options var bundleResponse bytes.Buffer resp, err := s.client.do(req, &bundleResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil @@ -233,7 +233,7 @@ func (s *StudyService) RevokePermission(study Study, request RoleRequest, option var bundleResponse bytes.Buffer resp, err := s.client.do(req, &bundleResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/cdl/study_service_test.go b/cdl/study_service_test.go index 243261ed..e30de610 100644 --- a/cdl/study_service_test.go +++ b/cdl/study_service_test.go @@ -118,7 +118,7 @@ func TestResearchStudiesCRD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, created.ID, studyID) item, resp, err := cdlClient.Study.GetStudyByID(studyID) diff --git a/cdr/client.go b/cdr/client.go index 73d1d625..9edd3dc8 100644 --- a/cdr/client.go +++ b/cdr/client.go @@ -207,6 +207,13 @@ type Response struct { *http.Response } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} diff --git a/cdr/operations_r4_service.go b/cdr/operations_r4_service.go index b0cb29cd..f208328a 100644 --- a/cdr/operations_r4_service.go +++ b/cdr/operations_r4_service.go @@ -105,7 +105,7 @@ func (o *OperationsR4Service) Delete(resourceID string, options ...OptionFunc) ( } return false, resp, err } - return resp.StatusCode == http.StatusNoContent, resp, nil + return resp.StatusCode() == http.StatusNoContent, resp, nil } func (o *OperationsR4Service) postOrPut(method, resourceID string, jsonBody []byte, options ...OptionFunc) (*r4pb.ContainedResource, *Response, error) { diff --git a/cdr/operations_r4_service_test.go b/cdr/operations_r4_service_test.go index 6e1f5e56..64de2f12 100644 --- a/cdr/operations_r4_service_test.go +++ b/cdr/operations_r4_service_test.go @@ -76,7 +76,7 @@ func TestR4PatchOperation(t *testing.T) { if !assert.NotNil(t, patched) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } func TestR4PostOperation(t *testing.T) { @@ -146,7 +146,7 @@ func TestR4PostOperation(t *testing.T) { if !assert.NotNil(t, patched) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) } func TestR4GetOperation(t *testing.T) { @@ -200,7 +200,7 @@ func TestR4GetOperation(t *testing.T) { if !assert.NotNil(t, retrieved) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) org := retrieved.GetOrganization() assert.Equal(t, "Hospital2", org.Name.Value) } diff --git a/cdr/operations_stu3_service.go b/cdr/operations_stu3_service.go index d4e19050..63c5b651 100644 --- a/cdr/operations_stu3_service.go +++ b/cdr/operations_stu3_service.go @@ -103,7 +103,7 @@ func (o *OperationsSTU3Service) Delete(resourceID string, options ...OptionFunc) } return false, resp, err } - return resp.StatusCode == http.StatusNoContent, resp, nil + return resp.StatusCode() == http.StatusNoContent, resp, nil } func (o *OperationsSTU3Service) postOrPut(method, resourceID string, jsonBody []byte, options ...OptionFunc) (*stu3pb.ContainedResource, *Response, error) { diff --git a/cdr/operations_stu3_service_test.go b/cdr/operations_stu3_service_test.go index da79cc19..00008082 100644 --- a/cdr/operations_stu3_service_test.go +++ b/cdr/operations_stu3_service_test.go @@ -76,7 +76,7 @@ func TestPatchOperation(t *testing.T) { if !assert.NotNil(t, patched) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } func TestPostOperation(t *testing.T) { @@ -146,7 +146,7 @@ func TestPostOperation(t *testing.T) { if !assert.NotNil(t, patched) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) } func TestGetOperation(t *testing.T) { @@ -200,7 +200,7 @@ func TestGetOperation(t *testing.T) { if !assert.NotNil(t, retrieved) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) org := retrieved.GetOrganization() assert.Equal(t, "Hospital2", org.Name.Value) } diff --git a/cdr/tenant_r4_service_test.go b/cdr/tenant_r4_service_test.go index 46fa782b..635eb169 100644 --- a/cdr/tenant_r4_service_test.go +++ b/cdr/tenant_r4_service_test.go @@ -72,7 +72,7 @@ func TestR4TenantService(t *testing.T) { if !assert.NotNil(t, newOrg) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) foundOrg, resp, err := cdrClient.TenantR4.GetOrganizationByID(orgID) if !assert.Nil(t, err) { diff --git a/cdr/tenant_stu3_service_test.go b/cdr/tenant_stu3_service_test.go index 9f029382..d55d8f17 100644 --- a/cdr/tenant_stu3_service_test.go +++ b/cdr/tenant_stu3_service_test.go @@ -73,7 +73,7 @@ func TestTenantService(t *testing.T) { if !assert.NotNil(t, newOrg) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) foundOrg, resp, err := cdrClient.TenantSTU3.GetOrganizationByID(orgID) if !assert.Nil(t, err) { diff --git a/connect/mdm/applications_service_test.go b/connect/mdm/applications_service_test.go index 386b2b54..d9c18bb5 100644 --- a/connect/mdm/applications_service_test.go +++ b/connect/mdm/applications_service_test.go @@ -124,7 +124,7 @@ func TestCreateApplication(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusCreated, resp.StatusCode) { + if !assert.Equal(t, http.StatusCreated, resp.StatusCode()) { return } assert.Equal(t, appID, createdApp.ID) diff --git a/connect/mdm/authentication_methods_service.go b/connect/mdm/authentication_methods_service.go index 0e4028df..e2e289b4 100644 --- a/connect/mdm/authentication_methods_service.go +++ b/connect/mdm/authentication_methods_service.go @@ -75,7 +75,7 @@ func (c *AuthenticationMethodsService) Delete(ac AuthenticationMethod) (bool, *R var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/authentication_methods_service_test.go b/connect/mdm/authentication_methods_service_test.go index e9054c68..c3e7d616 100644 --- a/connect/mdm/authentication_methods_service_test.go +++ b/connect/mdm/authentication_methods_service_test.go @@ -100,7 +100,7 @@ func TestAuthenticationMethodCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.AuthenticationMethods.GetByID(created.ID) @@ -109,7 +109,7 @@ func TestAuthenticationMethodCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.AuthenticationMethods.Delete(*created) @@ -117,5 +117,5 @@ func TestAuthenticationMethodCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/blob_data_contracts_service.go b/connect/mdm/blob_data_contracts_service.go index 8a803922..c0d51252 100644 --- a/connect/mdm/blob_data_contracts_service.go +++ b/connect/mdm/blob_data_contracts_service.go @@ -71,7 +71,7 @@ func (c *BlobDataContractsService) Delete(ac BlobDataContract) (bool, *Response, var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/blob_data_contracts_service_test.go b/connect/mdm/blob_data_contracts_service_test.go index 662c621b..6e784b48 100644 --- a/connect/mdm/blob_data_contracts_service_test.go +++ b/connect/mdm/blob_data_contracts_service_test.go @@ -93,7 +93,7 @@ func TestBlobDataContractCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.ServiceActions.GetByID(created.ID) @@ -102,7 +102,7 @@ func TestBlobDataContractCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.ServiceActions.Delete(*created) @@ -110,5 +110,5 @@ func TestBlobDataContractCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/blob_subscriptions_service.go b/connect/mdm/blob_subscriptions_service.go index 910f7817..dee93b97 100644 --- a/connect/mdm/blob_subscriptions_service.go +++ b/connect/mdm/blob_subscriptions_service.go @@ -68,7 +68,7 @@ func (c *BlobSubscriptionsService) Delete(ac BlobSubscription) (bool, *Response, var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/blob_subscriptions_service_test.go b/connect/mdm/blob_subscriptions_service_test.go index 99c44e2b..c2ad6a90 100644 --- a/connect/mdm/blob_subscriptions_service_test.go +++ b/connect/mdm/blob_subscriptions_service_test.go @@ -93,7 +93,7 @@ func TestBlobSubscriptionCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.ServiceActions.GetByID(created.ID) @@ -102,7 +102,7 @@ func TestBlobSubscriptionCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.ServiceActions.Delete(*created) @@ -110,5 +110,5 @@ func TestBlobSubscriptionCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/buckets_service.go b/connect/mdm/buckets_service.go index cf376c1e..2eb0f373 100644 --- a/connect/mdm/buckets_service.go +++ b/connect/mdm/buckets_service.go @@ -90,7 +90,7 @@ func (c *BucketsService) Delete(ac Bucket) (bool, *Response, error) { var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/buckets_service_test.go b/connect/mdm/buckets_service_test.go index 19cb2f62..af72e7d5 100644 --- a/connect/mdm/buckets_service_test.go +++ b/connect/mdm/buckets_service_test.go @@ -93,7 +93,7 @@ func TestBucketCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.ServiceActions.GetByID(created.ID) @@ -102,7 +102,7 @@ func TestBucketCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.ServiceActions.Delete(*created) @@ -110,5 +110,5 @@ func TestBucketCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/client.go b/connect/mdm/client.go index 4329ee58..5fc369f9 100644 --- a/connect/mdm/client.go +++ b/connect/mdm/client.go @@ -236,6 +236,13 @@ type Response struct { *http.Response } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} diff --git a/connect/mdm/data_broker_subscriptions_service.go b/connect/mdm/data_broker_subscriptions_service.go index fa009797..700201c5 100644 --- a/connect/mdm/data_broker_subscriptions_service.go +++ b/connect/mdm/data_broker_subscriptions_service.go @@ -53,7 +53,7 @@ func (c *DataBrokerSubscriptionsService) Create(ac DataBrokerSubscription) (*Dat resp, err := c.Do(req, &created) - ok := resp != nil && (resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusCreated) + ok := resp != nil && (resp.StatusCode() == http.StatusOK || resp.StatusCode() == http.StatusCreated) if !ok { return nil, resp, err } @@ -75,7 +75,7 @@ func (c *DataBrokerSubscriptionsService) Delete(ac DataBrokerSubscription) (bool var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/data_broker_subscriptions_service_test.go b/connect/mdm/data_broker_subscriptions_service_test.go index 677855f1..c3a79dc6 100644 --- a/connect/mdm/data_broker_subscriptions_service_test.go +++ b/connect/mdm/data_broker_subscriptions_service_test.go @@ -93,7 +93,7 @@ func TestDataBrokerSubscriptionCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.ServiceActions.GetByID(created.ID) @@ -102,7 +102,7 @@ func TestDataBrokerSubscriptionCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.ServiceActions.Delete(*created) @@ -110,5 +110,5 @@ func TestDataBrokerSubscriptionCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/data_types_service_test.go b/connect/mdm/data_types_service_test.go index b98d07b4..bf4ed4ae 100644 --- a/connect/mdm/data_types_service_test.go +++ b/connect/mdm/data_types_service_test.go @@ -93,7 +93,7 @@ func TestDataTypeCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.ServiceActions.GetByID(created.ID) @@ -102,7 +102,7 @@ func TestDataTypeCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.ServiceActions.Delete(*created) @@ -110,5 +110,5 @@ func TestDataTypeCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/data_types_services.go b/connect/mdm/data_types_services.go index 0324f7f3..7a602d86 100644 --- a/connect/mdm/data_types_services.go +++ b/connect/mdm/data_types_services.go @@ -69,7 +69,7 @@ func (c *DataTypesService) Delete(ac DataType) (bool, *Response, error) { var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/device_groups_service.go b/connect/mdm/device_groups_service.go index 9dc9f805..3856c75a 100644 --- a/connect/mdm/device_groups_service.go +++ b/connect/mdm/device_groups_service.go @@ -68,7 +68,7 @@ func (c *DeviceGroupsService) Delete(ac DeviceGroup) (bool, *Response, error) { var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/device_groups_service_test.go b/connect/mdm/device_groups_service_test.go index bc479f93..5a70b42e 100644 --- a/connect/mdm/device_groups_service_test.go +++ b/connect/mdm/device_groups_service_test.go @@ -93,7 +93,7 @@ func TestDeviceGroupCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.ServiceActions.GetByID(created.ID) @@ -102,7 +102,7 @@ func TestDeviceGroupCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.ServiceActions.Delete(*created) @@ -110,5 +110,5 @@ func TestDeviceGroupCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/device_types_service.go b/connect/mdm/device_types_service.go index 4ba90a91..53e67cc3 100644 --- a/connect/mdm/device_types_service.go +++ b/connect/mdm/device_types_service.go @@ -70,7 +70,7 @@ func (c *DeviceTypesService) Delete(ac DeviceType) (bool, *Response, error) { var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/device_types_service_test.go b/connect/mdm/device_types_service_test.go index cff904ba..64ae6a41 100644 --- a/connect/mdm/device_types_service_test.go +++ b/connect/mdm/device_types_service_test.go @@ -86,7 +86,7 @@ func TestDeviceTypesCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.DeviceTypes.GetByID(created.ID) @@ -95,7 +95,7 @@ func TestDeviceTypesCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.DeviceTypes.Delete(*created) @@ -103,5 +103,5 @@ func TestDeviceTypesCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/firmware_component_versions_service.go b/connect/mdm/firmware_component_versions_service.go index dc2891b0..89e1e321 100644 --- a/connect/mdm/firmware_component_versions_service.go +++ b/connect/mdm/firmware_component_versions_service.go @@ -68,7 +68,7 @@ func (c *FirmwareComponentVersionsService) Create(ac FirmwareComponentVersion) ( resp, err := c.Do(req, &created) - ok := resp != nil && (resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusCreated) + ok := resp != nil && (resp.StatusCode() == http.StatusOK || resp.StatusCode() == http.StatusCreated) if !ok { return nil, resp, err } @@ -90,7 +90,7 @@ func (c *FirmwareComponentVersionsService) Delete(ac FirmwareComponentVersion) ( var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/firmware_component_versions_service_test.go b/connect/mdm/firmware_component_versions_service_test.go index 4f568711..162e2e61 100644 --- a/connect/mdm/firmware_component_versions_service_test.go +++ b/connect/mdm/firmware_component_versions_service_test.go @@ -93,7 +93,7 @@ func TestFirmwareComponentVersionCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.ServiceActions.GetByID(created.ID) @@ -102,7 +102,7 @@ func TestFirmwareComponentVersionCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.ServiceActions.Delete(*created) @@ -110,5 +110,5 @@ func TestFirmwareComponentVersionCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/firmware_components_service.go b/connect/mdm/firmware_components_service.go index 77c16707..8b634e44 100644 --- a/connect/mdm/firmware_components_service.go +++ b/connect/mdm/firmware_components_service.go @@ -49,7 +49,7 @@ func (c *FirmwareComponentsService) Create(ac FirmwareComponent) (*FirmwareCompo resp, err := c.Do(req, &created) - ok := resp != nil && (resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusCreated) + ok := resp != nil && (resp.StatusCode() == http.StatusOK || resp.StatusCode() == http.StatusCreated) if !ok { return nil, resp, err } @@ -71,7 +71,7 @@ func (c *FirmwareComponentsService) Delete(ac FirmwareComponent) (bool, *Respons var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/firmware_components_service_test.go b/connect/mdm/firmware_components_service_test.go index 53cc3616..5789c720 100644 --- a/connect/mdm/firmware_components_service_test.go +++ b/connect/mdm/firmware_components_service_test.go @@ -93,7 +93,7 @@ func TestFirmwareComponentCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.ServiceActions.GetByID(created.ID) @@ -102,7 +102,7 @@ func TestFirmwareComponentCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.ServiceActions.Delete(*created) @@ -110,5 +110,5 @@ func TestFirmwareComponentCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/firmware_distribution_requests_service.go b/connect/mdm/firmware_distribution_requests_service.go index 0c9200d7..9e583024 100644 --- a/connect/mdm/firmware_distribution_requests_service.go +++ b/connect/mdm/firmware_distribution_requests_service.go @@ -51,7 +51,7 @@ func (c *FirmwareDistributionRequestsService) Create(ac FirmwareDistributionRequ resp, err := c.Do(req, &created) - ok := resp != nil && (resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusCreated) + ok := resp != nil && (resp.StatusCode() == http.StatusOK || resp.StatusCode() == http.StatusCreated) if !ok { return nil, resp, err } @@ -73,7 +73,7 @@ func (c *FirmwareDistributionRequestsService) Delete(ac FirmwareDistributionRequ var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/oauth_clients_service.go b/connect/mdm/oauth_clients_service.go index ed26d69e..3f9ffc1c 100644 --- a/connect/mdm/oauth_clients_service.go +++ b/connect/mdm/oauth_clients_service.go @@ -67,7 +67,7 @@ func (c *OAuthClientsService) CreateOAuthClient(ac OAuthClient) (*OAuthClient, * resp, err := c.Do(req, &createdClient) - ok := resp != nil && (resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusCreated) + ok := resp != nil && (resp.StatusCode() == http.StatusOK || resp.StatusCode() == http.StatusCreated) if !ok { return nil, resp, err } @@ -89,7 +89,7 @@ func (c *OAuthClientsService) DeleteOAuthClient(ac OAuthClient) (bool, *Response var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil @@ -184,7 +184,7 @@ func (c *OAuthClientsService) UpdateScopesByFlag(ac OAuthClient, scopes []string if err != nil { return false, resp, err } - if resp.StatusCode != http.StatusNoContent { + if resp.StatusCode() != http.StatusNoContent { return false, resp, ErrOperationFailed } return true, resp, nil diff --git a/connect/mdm/oauth_clients_service_test.go b/connect/mdm/oauth_clients_service_test.go index d75dba3a..3e385bff 100644 --- a/connect/mdm/oauth_clients_service_test.go +++ b/connect/mdm/oauth_clients_service_test.go @@ -163,7 +163,7 @@ func TestClientCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, clientName, created.Name) created, resp, err = mdmClient.OAuthClients.GetOAuthClientByID(created.ID) @@ -172,7 +172,7 @@ func TestClientCRUD(t *testing.T) { if !assert.NotNil(t, createdClient) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.OAuthClients.DeleteOAuthClient(*created) @@ -180,5 +180,5 @@ func TestClientCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdClient) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/propositions_service.go b/connect/mdm/propositions_service.go index 445243a5..cfc60e08 100644 --- a/connect/mdm/propositions_service.go +++ b/connect/mdm/propositions_service.go @@ -118,7 +118,7 @@ func (p *PropositionsService) CreateProposition(prop Proposition) (*Proposition, if err != nil { return nil, resp, err } - ok := resp != nil && resp.StatusCode == http.StatusCreated + ok := resp != nil && resp.StatusCode() == http.StatusCreated if !ok { return nil, resp, fmt.Errorf("CreateProposition failed: resp=%v", resp) } diff --git a/connect/mdm/propositions_service_test.go b/connect/mdm/propositions_service_test.go index c14d8d5b..7b702cfe 100644 --- a/connect/mdm/propositions_service_test.go +++ b/connect/mdm/propositions_service_test.go @@ -125,7 +125,7 @@ func TestCreateProposition(t *testing.T) { assert.Equal(t, propID, createdProp.ID) } if ok := assert.NotNil(t, resp); ok { - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) } } @@ -207,6 +207,6 @@ func TestGetPropositions(t *testing.T) { assert.Equal(t, 1, len(*props)) } if ok := assert.NotNil(t, resp); ok { - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } } diff --git a/connect/mdm/service_actions_service.go b/connect/mdm/service_actions_service.go index 562cdbdf..fd4b9110 100644 --- a/connect/mdm/service_actions_service.go +++ b/connect/mdm/service_actions_service.go @@ -49,7 +49,7 @@ func (c *ServiceActionsService) Create(ac ServiceAction) (*ServiceAction, *Respo resp, err := c.Do(req, &created) - ok := resp != nil && (resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusCreated) + ok := resp != nil && (resp.StatusCode() == http.StatusOK || resp.StatusCode() == http.StatusCreated) if !ok { return nil, resp, err } @@ -71,7 +71,7 @@ func (c *ServiceActionsService) Delete(ac ServiceAction) (bool, *Response, error var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/service_actions_service_test.go b/connect/mdm/service_actions_service_test.go index 673ca044..144f1a73 100644 --- a/connect/mdm/service_actions_service_test.go +++ b/connect/mdm/service_actions_service_test.go @@ -92,7 +92,7 @@ func TestServiceActionsCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.ServiceActions.GetByID(created.ID) @@ -101,7 +101,7 @@ func TestServiceActionsCRUD(t *testing.T) { if !assert.NotNil(t, createdService) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.ServiceActions.Delete(*created) @@ -109,5 +109,5 @@ func TestServiceActionsCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdService) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/service_agents_service_test.go b/connect/mdm/service_agents_service_test.go index f4ada4d1..95307b28 100644 --- a/connect/mdm/service_agents_service_test.go +++ b/connect/mdm/service_agents_service_test.go @@ -103,6 +103,6 @@ func TestServiceAgentsGet(t *testing.T) { if !assert.NotNil(t, agents) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, 2, len(*agents)) } diff --git a/connect/mdm/service_references_service.go b/connect/mdm/service_references_service.go index a05e058c..70dad102 100644 --- a/connect/mdm/service_references_service.go +++ b/connect/mdm/service_references_service.go @@ -52,7 +52,7 @@ func (c *ServiceReferencesService) Create(ac ServiceReference) (*ServiceReferenc resp, err := c.Do(req, &created) - ok := resp != nil && (resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusCreated) + ok := resp != nil && (resp.StatusCode() == http.StatusOK || resp.StatusCode() == http.StatusCreated) if !ok { return nil, resp, err } @@ -74,7 +74,7 @@ func (c *ServiceReferencesService) Delete(ac ServiceReference) (bool, *Response, var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/service_references_service_test.go b/connect/mdm/service_references_service_test.go index 0b89bc18..1cd9dfaf 100644 --- a/connect/mdm/service_references_service_test.go +++ b/connect/mdm/service_references_service_test.go @@ -93,7 +93,7 @@ func TestServiceReferenceCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.ServiceActions.GetByID(created.ID) @@ -102,7 +102,7 @@ func TestServiceReferenceCRUD(t *testing.T) { if !assert.NotNil(t, createdResource) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.ServiceActions.Delete(*created) @@ -110,5 +110,5 @@ func TestServiceReferenceCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdResource) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/connect/mdm/standard_services_service.go b/connect/mdm/standard_services_service.go index 10a64729..21b9123a 100644 --- a/connect/mdm/standard_services_service.go +++ b/connect/mdm/standard_services_service.go @@ -80,7 +80,7 @@ func (c *StandardServicesService) DeleteStandardService(ac StandardService) (boo var deleteResponse interface{} resp, err := c.Do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/connect/mdm/standard_services_service_test.go b/connect/mdm/standard_services_service_test.go index 19473797..9a7e5537 100644 --- a/connect/mdm/standard_services_service_test.go +++ b/connect/mdm/standard_services_service_test.go @@ -134,7 +134,7 @@ func TestStandardServiceCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, name, created.Name) created, resp, err = mdmClient.StandardServices.GetStandardServiceByID(created.ID) @@ -143,7 +143,7 @@ func TestStandardServiceCRUD(t *testing.T) { if !assert.NotNil(t, createdService) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, id, created.ID) ok, resp, err := mdmClient.StandardServices.DeleteStandardService(*created) @@ -151,5 +151,5 @@ func TestStandardServiceCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdService) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } diff --git a/console/client.go b/console/client.go index 11b9691d..b9572333 100644 --- a/console/client.go +++ b/console/client.go @@ -390,6 +390,13 @@ type Response struct { Error } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} @@ -406,8 +413,9 @@ func (c *Client) do(req *http.Request, v interface{}) (*Response, error) { if err != nil { return nil, err } - defer resp.Body.Close() - + defer func() { + _ = resp.Body.Close() + }() response := newResponse(resp) if v != nil { diff --git a/console/login.go b/console/login.go index 9aa06684..82d9aa53 100644 --- a/console/login.go +++ b/console/login.go @@ -73,8 +73,8 @@ func (c *Client) doTokenRequest(req *http.Request) error { if err != nil { return err } - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("login failed: %d", resp.StatusCode) + if resp.StatusCode() != http.StatusOK { + return fmt.Errorf("login failed: %d", resp.StatusCode()) } if tokenResponse.AccessToken == "" { return ErrNotAuthorized diff --git a/console/metrics_service_test.go b/console/metrics_service_test.go index 19f096f5..874c7808 100644 --- a/console/metrics_service_test.go +++ b/console/metrics_service_test.go @@ -65,7 +65,7 @@ func TestMetricsInstanceCalls(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } assert.Equal(t, 1, len(*instances)) @@ -78,7 +78,7 @@ func TestMetricsInstanceCalls(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } assert.NotNil(t, instance) @@ -181,7 +181,7 @@ func TestMetricsRuleCalls(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } assert.Equal(t, 1, len(*groups)) @@ -194,7 +194,7 @@ func TestMetricsRuleCalls(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } assert.NotNil(t, rule) @@ -333,7 +333,7 @@ func TestAutoscalerCalls(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } assert.Equal(t, 2, len(*apps)) @@ -344,7 +344,7 @@ func TestAutoscalerCalls(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } if !assert.NotNil(t, app) { @@ -361,7 +361,7 @@ func TestAutoscalerCalls(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } if !assert.NotNil(t, app) { @@ -409,7 +409,7 @@ func TestRetryableError(t *testing.T) { if !assert.Nil(t, app) { return } - assert.Equal(t, http.StatusBadRequest, resp.StatusCode) + assert.Equal(t, http.StatusBadRequest, resp.StatusCode()) assert.Equal(t, "BAD_REQUEST", resp.Error.Code) assert.Contains(t, resp.Error.Message, "invalid character") } diff --git a/dicom/client.go b/dicom/client.go index b7abbaa8..f68d5ad1 100644 --- a/dicom/client.go +++ b/dicom/client.go @@ -224,6 +224,13 @@ type Response struct { *http.Response } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} @@ -256,7 +263,7 @@ func (c *Client) do(req *http.Request, v interface{}) (*Response, error) { return response, err } - if v != nil && response.StatusCode != http.StatusNoContent { + if v != nil && response.StatusCode() != http.StatusNoContent { defer func() { _ = resp.Body.Close() }() // Only close if we plan to read it diff --git a/dicom/client_test.go b/dicom/client_test.go index 47ef1e96..20764fd7 100644 --- a/dicom/client_test.go +++ b/dicom/client_test.go @@ -249,6 +249,6 @@ func TestErrorResponse(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusConflict, resp.StatusCode) + assert.Equal(t, http.StatusConflict, resp.StatusCode()) assert.Equal(t, err.Error(), `POST : StatusCode 409, Body: {"error":"something unexpected happened"}`) } diff --git a/dicom/config_service_cdr_service_account_test.go b/dicom/config_service_cdr_service_account_test.go index 1fe6aa44..48538ea3 100644 --- a/dicom/config_service_cdr_service_account_test.go +++ b/dicom/config_service_cdr_service_account_test.go @@ -2,11 +2,12 @@ package dicom_test import ( "encoding/json" - "github.com/philips-software/go-hsdp-api/dicom" - "github.com/stretchr/testify/assert" "io" "net/http" "testing" + + "github.com/philips-software/go-hsdp-api/dicom" + "github.com/stretchr/testify/assert" ) func TestCDRServiceAccountGetSet(t *testing.T) { @@ -70,7 +71,7 @@ func TestCDRServiceAccountGetSet(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, created.ID, serviceAccountID) account, resp, err := dicomClient.Config.GetCDRServiceAccount(nil) diff --git a/dicom/config_service_fhir_store.go b/dicom/config_service_fhir_store.go index 7c045a0c..2e598817 100644 --- a/dicom/config_service_fhir_store.go +++ b/dicom/config_service_fhir_store.go @@ -52,7 +52,7 @@ func (c *ConfigService) GetFHIRStore(opt *QueryOptions, options ...OptionFunc) ( var fhirStore FHIRStore resp, err := c.client.do(req, &fhirStore) if (err != nil && err != io.EOF) || resp == nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrNotFound } if resp == nil && err != nil { diff --git a/dicom/config_service_fhir_store_test.go b/dicom/config_service_fhir_store_test.go index 0a53ca0f..2bddcb0c 100644 --- a/dicom/config_service_fhir_store_test.go +++ b/dicom/config_service_fhir_store_test.go @@ -2,11 +2,12 @@ package dicom_test import ( "encoding/json" - "github.com/philips-software/go-hsdp-api/dicom" - "github.com/stretchr/testify/assert" "io" "net/http" "testing" + + "github.com/philips-software/go-hsdp-api/dicom" + "github.com/stretchr/testify/assert" ) func TestFHIRStoreGetSet(t *testing.T) { @@ -69,7 +70,7 @@ func TestFHIRStoreGetSet(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, created.ID, storeID) store, resp, err := dicomClient.Config.GetFHIRStore(nil) diff --git a/dicom/config_service_import_service_test.go b/dicom/config_service_import_service_test.go index 5a3ce19a..15bfffa4 100644 --- a/dicom/config_service_import_service_test.go +++ b/dicom/config_service_import_service_test.go @@ -2,11 +2,12 @@ package dicom_test import ( "encoding/json" - "github.com/philips-software/go-hsdp-api/dicom" - "github.com/stretchr/testify/assert" "io" "net/http" "testing" + + "github.com/philips-software/go-hsdp-api/dicom" + "github.com/stretchr/testify/assert" ) func TestImportServiceGetSet(t *testing.T) { @@ -69,7 +70,7 @@ func TestImportServiceGetSet(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, created.ID, serviceID) store, resp, err := dicomClient.Config.GetImportService(nil) diff --git a/dicom/config_service_object_stores.go b/dicom/config_service_object_stores.go index 874cf5ce..a4fac743 100644 --- a/dicom/config_service_object_stores.go +++ b/dicom/config_service_object_stores.go @@ -98,7 +98,7 @@ func (c *ConfigService) GetObjectStore(id string, opt *QueryOptions, options ... var objectStore ObjectStore resp, err := c.client.do(req, &objectStore) if (err != nil && err != io.EOF) || resp == nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrNotFound } if resp == nil && err != nil { @@ -125,5 +125,5 @@ func (c *ConfigService) DeleteObjectStore(store ObjectStore, opt *QueryOptions, } return false, resp, err } - return resp.StatusCode == http.StatusNoContent, resp, nil + return resp.StatusCode() == http.StatusNoContent, resp, nil } diff --git a/dicom/config_service_object_stores_test.go b/dicom/config_service_object_stores_test.go index 13ea5993..3bf80740 100644 --- a/dicom/config_service_object_stores_test.go +++ b/dicom/config_service_object_stores_test.go @@ -2,11 +2,12 @@ package dicom_test import ( "encoding/json" - "github.com/philips-software/go-hsdp-api/dicom" - "github.com/stretchr/testify/assert" "io" "net/http" "testing" + + "github.com/philips-software/go-hsdp-api/dicom" + "github.com/stretchr/testify/assert" ) func TestObjectStoreCRUD(t *testing.T) { @@ -92,7 +93,7 @@ func TestObjectStoreCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, created.ID, storeID) store, resp, err := dicomClient.Config.GetObjectStore(storeID, nil) if !assert.Nil(t, err) { diff --git a/dicom/config_service_query_retrieve_service_test.go b/dicom/config_service_query_retrieve_service_test.go index 0f1fb39c..be2a7504 100644 --- a/dicom/config_service_query_retrieve_service_test.go +++ b/dicom/config_service_query_retrieve_service_test.go @@ -80,7 +80,7 @@ func TestMoveServiceGetSet(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, created.ID, serviceID) services, resp, err := dicomClient.Config.GetQueryRetrieveService(nil) diff --git a/dicom/config_service_remote_nodes.go b/dicom/config_service_remote_nodes.go index f7a25933..0d1ed159 100644 --- a/dicom/config_service_remote_nodes.go +++ b/dicom/config_service_remote_nodes.go @@ -75,7 +75,7 @@ func (c *ConfigService) GetRemoteNode(id string, opt *QueryOptions, options ...O var node RemoteNode resp, err := c.client.do(req, &node) if (err != nil && err != io.EOF) || resp == nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrNotFound } if resp == nil && err != nil { @@ -102,5 +102,5 @@ func (c *ConfigService) DeleteRemoteNode(node RemoteNode, opt *QueryOptions, opt } return false, resp, err } - return resp.StatusCode == http.StatusNoContent, resp, nil + return resp.StatusCode() == http.StatusNoContent, resp, nil } diff --git a/dicom/config_service_remote_notes_test.go b/dicom/config_service_remote_notes_test.go index 8e3401d5..7decc05b 100644 --- a/dicom/config_service_remote_notes_test.go +++ b/dicom/config_service_remote_notes_test.go @@ -2,11 +2,12 @@ package dicom_test import ( "encoding/json" - "github.com/philips-software/go-hsdp-api/dicom" - "github.com/stretchr/testify/assert" "io" "net/http" "testing" + + "github.com/philips-software/go-hsdp-api/dicom" + "github.com/stretchr/testify/assert" ) func TestRemoteNodesCRUD(t *testing.T) { @@ -104,7 +105,7 @@ func TestRemoteNodesCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, created.ID, nodeID) repos, resp, err := dicomClient.Config.GetRemoteNodes(&dicom.QueryOptions{OrganizationID: &orgID}, nil) if !assert.Nil(t, err) { diff --git a/dicom/config_service_repositories.go b/dicom/config_service_repositories.go index 2562839c..f0da596b 100644 --- a/dicom/config_service_repositories.go +++ b/dicom/config_service_repositories.go @@ -76,7 +76,7 @@ func (c *ConfigService) GetRepository(id string, opt *QueryOptions, options ...O var repo Repository resp, err := c.client.do(req, &repo) if (err != nil && err != io.EOF) || resp == nil { - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return nil, resp, ErrNotFound } if resp == nil && err != nil { @@ -103,5 +103,5 @@ func (c *ConfigService) DeleteRepository(repo Repository, opt *QueryOptions, opt } return false, resp, err } - return resp.StatusCode == http.StatusNoContent, resp, nil + return resp.StatusCode() == http.StatusNoContent, resp, nil } diff --git a/dicom/config_service_repositories_test.go b/dicom/config_service_repositories_test.go index 6ebfc013..2f90f41f 100644 --- a/dicom/config_service_repositories_test.go +++ b/dicom/config_service_repositories_test.go @@ -2,11 +2,12 @@ package dicom_test import ( "encoding/json" - "github.com/philips-software/go-hsdp-api/dicom" - "github.com/stretchr/testify/assert" "io" "net/http" "testing" + + "github.com/philips-software/go-hsdp-api/dicom" + "github.com/stretchr/testify/assert" ) func TestRepositoriesCRUD(t *testing.T) { @@ -97,7 +98,7 @@ func TestRepositoriesCRUD(t *testing.T) { if !assert.NotNil(t, created) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, created.ID, storeID) repos, resp, err := dicomClient.Config.GetRepositories(&dicom.QueryOptions{OrganizationID: &orgID}, nil) if !assert.Nil(t, err) { diff --git a/discovery/client.go b/discovery/client.go index de5e0aaf..2932140c 100644 --- a/discovery/client.go +++ b/discovery/client.go @@ -195,6 +195,13 @@ type Response struct { *http.Response } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} @@ -220,7 +227,9 @@ func (c *Client) Do(req *http.Request, v interface{}) (*Response, error) { } if v != nil { - defer resp.Body.Close() // Only close if we plan to read it + defer func() { + _ = resp.Body.Close() + }() // Only close if we plan to read it if w, ok := v.(io.Writer); ok { _, err = io.Copy(w, resp.Body) } else { diff --git a/has/client.go b/has/client.go index 8817bd71..6eb00808 100644 --- a/has/client.go +++ b/has/client.go @@ -175,6 +175,13 @@ type Response struct { *http.Response } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} @@ -189,7 +196,9 @@ func (c *Client) do(req *http.Request, v interface{}) (*Response, error) { if err != nil { return nil, err } - defer resp.Body.Close() + defer func() { + _ = resp.Body.Close() + }() response := newResponse(resp) diff --git a/has/resources_service.go b/has/resources_service.go index b1edeed6..8a821d1a 100644 --- a/has/resources_service.go +++ b/has/resources_service.go @@ -101,7 +101,7 @@ func (c *ResourcesService) CreateResource(resource Resource) (*[]Resource, *Resp if err != nil { return nil, resp, err } - if resp.StatusCode != http.StatusOK { + if resp.StatusCode() != http.StatusOK { return nil, resp, err } return &cr.Resources, resp, nil diff --git a/has/sessions_service.go b/has/sessions_service.go index 8cbafc91..00c37caa 100644 --- a/has/sessions_service.go +++ b/has/sessions_service.go @@ -117,7 +117,7 @@ func (c *SessionsService) DeleteSession(userID string) (bool, *Response, error) var sr Sessions resp, _ := c.client.do(req, &sr) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, nil, fmt.Errorf("DeleteSession: %w", ErrEmptyResults) } return true, resp, nil diff --git a/iam/applications_service.go b/iam/applications_service.go index 3666338c..e2aaa140 100644 --- a/iam/applications_service.go +++ b/iam/applications_service.go @@ -91,9 +91,9 @@ func (a *ApplicationsService) CreateApplication(app Application) (*Application, if resp == nil { return nil, nil, fmt.Errorf("CreateApplication: request failed") } - ok := resp.StatusCode == http.StatusCreated + ok := resp.StatusCode() == http.StatusCreated if !ok { - return nil, resp, fmt.Errorf("CreateApplication: failed with StatusCode=%d", resp.StatusCode) + return nil, resp, fmt.Errorf("CreateApplication: failed with StatusCode=%d", resp.StatusCode()) } var id string count, err := fmt.Sscanf(resp.Header.Get("Location"), "/authorize/identity/Application/%s", &id) diff --git a/iam/applications_service_test.go b/iam/applications_service_test.go index 13181993..25f36578 100644 --- a/iam/applications_service_test.go +++ b/iam/applications_service_test.go @@ -1,10 +1,11 @@ package iam import ( - "github.com/stretchr/testify/assert" "io" "net/http" "testing" + + "github.com/stretchr/testify/assert" ) func TestCreateApplication(t *testing.T) { @@ -74,7 +75,7 @@ func TestCreateApplication(t *testing.T) { t.Error("Expected GlobalReferenceID to be set") } - if resp.StatusCode != http.StatusOK { + if resp.StatusCode() != http.StatusOK { t.Errorf("Expected HTTP created") } if createdApp.ID != appID { diff --git a/iam/client.go b/iam/client.go index 3f3355ee..3dafc21b 100644 --- a/iam/client.go +++ b/iam/client.go @@ -494,6 +494,13 @@ type Response struct { *http.Response } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} @@ -528,7 +535,7 @@ func (c *Client) do(req *http.Request, v interface{}) (*Response, error) { return response, err } - if v != nil && response.StatusCode != http.StatusNoContent { + if v != nil && response.StatusCode() != http.StatusNoContent { if w, ok := v.(io.Writer); ok { _, err = io.Copy(w, resp.Body) } else { diff --git a/iam/clients_service.go b/iam/clients_service.go index d697b9c8..c74423f8 100644 --- a/iam/clients_service.go +++ b/iam/clients_service.go @@ -75,7 +75,7 @@ func (c *ClientsService) CreateClient(ac ApplicationClient) (*ApplicationClient, resp, err := c.client.do(req, &createdClient) - ok := resp != nil && (resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusCreated) + ok := resp != nil && (resp.StatusCode() == http.StatusOK || resp.StatusCode() == http.StatusCreated) if !ok { return nil, resp, err } @@ -109,7 +109,7 @@ func (c *ClientsService) DeleteClient(ac ApplicationClient) (bool, *Response, er var deleteResponse interface{} resp, err := c.client.do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil @@ -173,7 +173,7 @@ func (c *ClientsService) UpdateScopes(ac ApplicationClient, scopes []string, def if err != nil { return err } - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode() == http.StatusNotFound { return ErrNotFound } return nil @@ -195,7 +195,7 @@ func (c *ClientsService) UpdateScopes(ac ApplicationClient, scopes []string, def if err != nil { return false, resp, err } - if resp.StatusCode != http.StatusNoContent { + if resp.StatusCode() != http.StatusNoContent { return false, resp, ErrOperationFailed } return true, resp, nil diff --git a/iam/clients_service_test.go b/iam/clients_service_test.go index 92a72dff..dac28301 100644 --- a/iam/clients_service_test.go +++ b/iam/clients_service_test.go @@ -120,7 +120,7 @@ func TestClientCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdClient) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, clientName, createdClient.Name) createdClient, resp, err = client.Clients.GetClientByID(createdClient.ID) @@ -129,7 +129,7 @@ func TestClientCRUD(t *testing.T) { if !assert.NotNil(t, createdClient) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, clientID, createdClient.ID) createdClient.Password = password @@ -140,7 +140,7 @@ func TestClientCRUD(t *testing.T) { if !assert.NotNil(t, cl) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, "Public", cl.Type) ok, resp, err := client.Clients.DeleteClient(*createdClient) @@ -148,7 +148,7 @@ func TestClientCRUD(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, createdClient) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } func TestPasswordValidation(t *testing.T) { diff --git a/iam/devices_service.go b/iam/devices_service.go index a0280190..56a2a328 100644 --- a/iam/devices_service.go +++ b/iam/devices_service.go @@ -120,7 +120,7 @@ func (p *DevicesService) CreateDevice(device Device) (*Device, *Response, error) if resp == nil { return nil, nil, ErrOperationFailed } - ok := resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusCreated + ok := resp.StatusCode() == http.StatusOK || resp.StatusCode() == http.StatusCreated if !ok { return nil, resp, err } @@ -167,7 +167,7 @@ func (p *DevicesService) DeleteDevice(device Device) (bool, *Response, error) { var deleteResponse bytes.Buffer resp, err := p.client.do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, nil } return true, resp, err @@ -199,7 +199,7 @@ func (p *DevicesService) deviceActionV(deviceID string, body interface{}, action var bundleResponse interface{} resp, err := p.client.doSigned(req, &bundleResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/iam/devices_service_test.go b/iam/devices_service_test.go index 0f8b1446..c0d50204 100644 --- a/iam/devices_service_test.go +++ b/iam/devices_service_test.go @@ -116,7 +116,7 @@ func TestDevicesCRUD(t *testing.T) { if !assert.NotNil(t, device) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } assert.Equal(t, managingOrgID, device.OrganizationID) @@ -131,7 +131,7 @@ func TestDevicesCRUD(t *testing.T) { if !assert.NotNil(t, device) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } assert.Equal(t, managingOrgID, device.OrganizationID) @@ -146,7 +146,7 @@ func TestDevicesCRUD(t *testing.T) { if !assert.NotNil(t, device) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } assert.Equal(t, deviceID, device.ID) @@ -157,7 +157,7 @@ func TestDevicesCRUD(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusNoContent, resp.StatusCode) { + if !assert.Equal(t, http.StatusNoContent, resp.StatusCode()) { return } assert.Equal(t, true, ok) @@ -169,7 +169,7 @@ func TestDevicesCRUD(t *testing.T) { if !assert.NotNil(t, resp) { return } - if !assert.Equal(t, http.StatusNoContent, resp.StatusCode) { + if !assert.Equal(t, http.StatusNoContent, resp.StatusCode()) { return } assert.Equal(t, true, ok) diff --git a/iam/email_templates_service.go b/iam/email_templates_service.go index a6774e73..b48bc5a5 100644 --- a/iam/email_templates_service.go +++ b/iam/email_templates_service.go @@ -82,7 +82,7 @@ func (e *EmailTemplatesService) DeleteTemplate(template EmailTemplate) (bool, *R var deleteResponse interface{} resp, err := e.client.do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil diff --git a/iam/email_templates_service_test.go b/iam/email_templates_service_test.go index 6506c67d..63bbb496 100644 --- a/iam/email_templates_service_test.go +++ b/iam/email_templates_service_test.go @@ -113,7 +113,7 @@ func TestEmailTemplateCreateDelete(t *testing.T) { if !assert.NotNil(t, template) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, id, template.ID) foundTemplate, resp, err := client.EmailTemplates.GetTemplateByID(template.ID) @@ -121,7 +121,7 @@ func TestEmailTemplateCreateDelete(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.NotNil(t, foundTemplate) { return } @@ -136,7 +136,7 @@ func TestEmailTemplateCreateDelete(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.Len(t, *templates, 1) { return } @@ -146,6 +146,6 @@ func TestEmailTemplateCreateDelete(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) assert.True(t, ok) } diff --git a/iam/groups_service.go b/iam/groups_service.go index 38e78b0c..c3e99451 100644 --- a/iam/groups_service.go +++ b/iam/groups_service.go @@ -128,7 +128,7 @@ func (g *GroupsService) DeleteGroup(group Group) (bool, *Response, error) { var deleteResponse interface{} resp, err := g.client.do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil @@ -176,7 +176,7 @@ func (g *GroupsService) roleAction(group Group, role Role, action string) (bool, if err != nil { return false, resp, err } - if resp == nil || resp.StatusCode != http.StatusOK { + if resp == nil || resp.StatusCode() != http.StatusOK { return false, resp, nil } return true, resp, err diff --git a/iam/groups_service_test.go b/iam/groups_service_test.go index a8c65fe1..10b311ca 100644 --- a/iam/groups_service_test.go +++ b/iam/groups_service_test.go @@ -88,7 +88,7 @@ func TestGroupCRUD(t *testing.T) { t.Fatal(err) } assert.NotNil(t, resp) - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, groupName, group.Name) assert.Equal(t, managingOrgID, group.ManagingOrganization) @@ -96,7 +96,7 @@ func TestGroupCRUD(t *testing.T) { group, resp, err = client.Groups.UpdateGroup(*group) assert.Nil(t, err) assert.NotNil(t, resp) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) groups, resp, err := client.Groups.GetGroups(&GetGroupOptions{ OrganizationID: &managingOrgID, @@ -106,7 +106,7 @@ func TestGroupCRUD(t *testing.T) { if !assert.NotNil(t, groups) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, 1, len(*groups)) group, resp, err = client.Groups.GetGroupByID(group.ID) @@ -115,14 +115,14 @@ func TestGroupCRUD(t *testing.T) { if !assert.NotNil(t, group) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, groupID, group.ID) ok, resp, err := client.Groups.DeleteGroup(*group) assert.True(t, ok) assert.Nil(t, err) if ok := assert.NotNil(t, resp); ok { - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } } @@ -178,7 +178,7 @@ func TestAssignRole(t *testing.T) { assert.True(t, ok) assert.Nil(t, err) if ok := assert.NotNil(t, resp); ok { - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } assert.Len(t, assignedTotal, 1) } @@ -248,7 +248,7 @@ func TestAddMembers(t *testing.T) { ok, resp, err := client.Groups.AddMembers(group, users...) assert.NotNil(t, resp) if resp != nil { - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } assert.Len(t, assignedTotal, 28) assert.Nil(t, ok) @@ -329,7 +329,7 @@ func TestRemoveMembers(t *testing.T) { assert.NotNil(t, resp) assert.Nil(t, ok) assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) ok, resp, err = client.Groups.RemoveMembers(group, "foo") assert.NotNil(t, resp) @@ -395,7 +395,7 @@ func TestRemoveRole(t *testing.T) { assert.NotNil(t, resp) assert.True(t, ok) assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } func TestGetRoles(t *testing.T) { @@ -434,7 +434,7 @@ func TestGetRoles(t *testing.T) { assert.NotNil(t, resp) assert.NotNil(t, roles) assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, 1, len(*roles)) assert.Equal(t, roleID, (*roles)[0].ID) assert.Equal(t, "TDRALL", (*roles)[0].Name) @@ -536,7 +536,7 @@ func TestAddServicesAndDevices(t *testing.T) { ok, resp, err := client.Groups.AddServices(group, identityID) assert.NotNil(t, resp) if resp != nil { - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } assert.NotNil(t, ok) assert.Nil(t, err) @@ -549,7 +549,7 @@ func TestAddServicesAndDevices(t *testing.T) { ok, resp, err = client.Groups.AddDevices(group, identityID) assert.NotNil(t, resp) if resp != nil { - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } assert.NotNil(t, ok) assert.Nil(t, err) @@ -648,7 +648,7 @@ func TestRemoveServicesAndDevices(t *testing.T) { _, resp, err := client.Groups.RemoveServices(group, identityID) assert.NotNil(t, resp) assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) _, resp, err = client.Groups.RemoveServices(group, "foo") assert.NotNil(t, resp) @@ -657,7 +657,7 @@ func TestRemoveServicesAndDevices(t *testing.T) { _, resp, err = client.Groups.RemoveDevices(group, identityID) assert.NotNil(t, resp) assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) ok, resp, err := client.Groups.RemoveDevices(group, "foo") assert.NotNil(t, resp) diff --git a/iam/interfaces.go b/iam/interfaces.go index c172d54b..18974364 100644 --- a/iam/interfaces.go +++ b/iam/interfaces.go @@ -3,3 +3,7 @@ package iam type TokenRefresher interface { TokenRefresh() error } + +type HTTPStatus interface { + StatusCode() int +} diff --git a/iam/introspect_test.go b/iam/introspect_test.go index 4c7de68f..93fb46bb 100644 --- a/iam/introspect_test.go +++ b/iam/introspect_test.go @@ -177,7 +177,7 @@ func TestIntrospect(t *testing.T) { if !assert.NotNil(t, introspectResponse) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.True(t, client.HasPermissions(orgID, "SERVICE.SCOPE", "ORGANIZATION.MFA")) assert.False(t, client.HasPermissions("bogus", "SERVICE.SCOPE")) @@ -261,7 +261,7 @@ func TestIntrospectWithOrgContext(t *testing.T) { if !assert.NotNil(t, introspectResponse) { return } - if !assert.Equal(t, http.StatusOK, resp.StatusCode) { + if !assert.Equal(t, http.StatusOK, resp.StatusCode()) { return } diff --git a/iam/login.go b/iam/login.go index a85f549f..9a3d993c 100644 --- a/iam/login.go +++ b/iam/login.go @@ -202,8 +202,8 @@ func (c *Client) doTokenRequest(req *http.Request) error { if err != nil { return err } - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("login failed: %d", resp.StatusCode) + if resp.StatusCode() != http.StatusOK { + return fmt.Errorf("login failed: %d", resp.StatusCode()) } if tokenResponse.AccessToken == "" { return ErrNotAuthorized diff --git a/iam/mfa_policies_service.go b/iam/mfa_policies_service.go index c2f8794d..4947280e 100644 --- a/iam/mfa_policies_service.go +++ b/iam/mfa_policies_service.go @@ -95,7 +95,7 @@ func (p *MFAPoliciesService) DeleteMFAPolicy(policy MFAPolicy) (bool, *Response, var deleteResponse bytes.Buffer resp, err := p.client.do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, nil } return true, resp, err diff --git a/iam/mfa_policies_service_test.go b/iam/mfa_policies_service_test.go index 87c22046..de896715 100644 --- a/iam/mfa_policies_service_test.go +++ b/iam/mfa_policies_service_test.go @@ -81,7 +81,7 @@ func TestCreateMFAPolicy(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, resp) assert.NotNil(t, newPolicy) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, newPolicy.ID, policyID) assert.Equal(t, "User", newPolicy.Resource.Type) assert.True(t, *newPolicy.Active) @@ -95,7 +95,7 @@ func TestCreateMFAPolicy(t *testing.T) { t.Fatal(err) } if ok := assert.NotNil(t, resp); ok { - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } if ok := assert.NotNil(t, newPolicy); ok { assert.Equal(t, newPolicy.ID, policyID) @@ -153,7 +153,7 @@ func TestGetMFAPolicyByID(t *testing.T) { } assert.Nil(t, err) if ok := assert.NotNil(t, resp); ok { - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } if ok := assert.NotNil(t, policy); ok { assert.Equal(t, policy.ID, policyID) @@ -220,7 +220,7 @@ func TestUpdateMFAPolicy(t *testing.T) { updatedPolicy, resp, err := client.MFAPolicies.UpdateMFAPolicy(&policy) assert.Nil(t, err) if ok := assert.NotNil(t, resp); ok { - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } assert.NotNil(t, updatedPolicy) } @@ -243,6 +243,6 @@ func TestDeleteMFAPolicy(t *testing.T) { ok, resp, err := client.MFAPolicies.DeleteMFAPolicy(policy) assert.Nil(t, err) assert.NotNil(t, resp) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) assert.Equal(t, true, ok, "expected MFA policy deletion to succeed") } diff --git a/iam/organizations_service.go b/iam/organizations_service.go index f60560dc..eb22aecc 100644 --- a/iam/organizations_service.go +++ b/iam/organizations_service.go @@ -82,8 +82,8 @@ func (o *OrganizationsService) CreateOrganization(organization Organization) (*O if err != nil { return nil, resp, err } - if resp.StatusCode != http.StatusCreated { - return nil, resp, fmt.Errorf("error creating org: %d", resp.StatusCode) + if resp.StatusCode() != http.StatusCreated { + return nil, resp, fmt.Errorf("error creating org: %d", resp.StatusCode()) } return &newOrg, resp, err } @@ -104,7 +104,7 @@ func (o *OrganizationsService) DeleteOrganization(org Organization) (bool, *Resp if err != nil { return false, resp, err } - return resp.StatusCode == http.StatusAccepted, resp, nil + return resp.StatusCode() == http.StatusAccepted, resp, nil } // UpdateOrganization updates the description of the organization. diff --git a/iam/organizations_service_test.go b/iam/organizations_service_test.go index 2ba0e1f0..d3630696 100644 --- a/iam/organizations_service_test.go +++ b/iam/organizations_service_test.go @@ -105,7 +105,7 @@ func TestCreateOrganization(t *testing.T) { if !assert.NotNil(t, createdOrg) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, orgName, createdOrg.Name) assert.Equal(t, orgID, createdOrg.ID) assert.Equal(t, parentOrgID, createdOrg.Parent.Value) @@ -136,7 +136,7 @@ func TestGetOrganizationByID(t *testing.T) { if !assert.NotNil(t, foundOrg) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, orgName, foundOrg.Name) assert.Equal(t, orgUUID, foundOrg.ID) } @@ -211,7 +211,7 @@ func TestUpdateAndDeleteOrganization(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.NotNil(t, updatedOrg) { return } @@ -277,7 +277,7 @@ func TestGetOrganization(t *testing.T) { if !assert.NotNil(t, foundOrg) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, orgName, foundOrg.Name) assert.Equal(t, orgUUID, foundOrg.ID) } @@ -320,7 +320,7 @@ func TestDeleteStatus(t *testing.T) { if !assert.NotNil(t, status) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, "IN_PROGRESS", status.Status) assert.Equal(t, orgUUID, status.ID) } diff --git a/iam/password_policies_service.go b/iam/password_policies_service.go index 7a0af918..4810bc5f 100644 --- a/iam/password_policies_service.go +++ b/iam/password_policies_service.go @@ -115,7 +115,7 @@ func (p *PasswordPoliciesService) DeletePasswordPolicy(policy PasswordPolicy) (b var deleteResponse bytes.Buffer resp, err := p.client.do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, nil } return true, resp, err diff --git a/iam/password_policies_service_test.go b/iam/password_policies_service_test.go index 1f04a082..a2d6f8a6 100644 --- a/iam/password_policies_service_test.go +++ b/iam/password_policies_service_test.go @@ -117,7 +117,7 @@ func TestPasswordPolicyCrud(t *testing.T) { if ok := assert.NotNil(t, policy); !ok { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, id, policy.ID) foundPolicy, resp, err := client.PasswordPolicies.GetPasswordPolicyByID(policy.ID) @@ -125,7 +125,7 @@ func TestPasswordPolicyCrud(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.NotNil(t, foundPolicy) { return } @@ -138,7 +138,7 @@ func TestPasswordPolicyCrud(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.NotNil(t, policies) { return } @@ -160,6 +160,6 @@ func TestPasswordPolicyCrud(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) assert.True(t, ok) } diff --git a/iam/permissions_service_test.go b/iam/permissions_service_test.go index 20644701..ec72445e 100644 --- a/iam/permissions_service_test.go +++ b/iam/permissions_service_test.go @@ -50,7 +50,7 @@ func TestGetPermissions(t *testing.T) { if err != nil { t.Fatal(err) } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, 3, len(*permissions)) permissions, resp, err = client.Permissions.GetPermissionsByRoleID(roleID) @@ -90,7 +90,7 @@ func TestGetPermissionByID(t *testing.T) { if err != nil { t.Fatal(err) } - if resp.StatusCode != http.StatusOK { + if resp.StatusCode() != http.StatusOK { t.Errorf("Expected HTTP success") } if permission.ID != uuid { diff --git a/iam/propositions_service.go b/iam/propositions_service.go index 69ec7303..643c3b28 100644 --- a/iam/propositions_service.go +++ b/iam/propositions_service.go @@ -108,7 +108,7 @@ func (p *PropositionsService) CreateProposition(prop Proposition) (*Proposition, if err != nil { return nil, resp, err } - ok := resp != nil && resp.StatusCode == http.StatusCreated + ok := resp != nil && resp.StatusCode() == http.StatusCreated if !ok { return nil, resp, fmt.Errorf("CreateProposition failed: resp=%v", resp) } diff --git a/iam/propositions_service_test.go b/iam/propositions_service_test.go index 62f9d816..18853d03 100644 --- a/iam/propositions_service_test.go +++ b/iam/propositions_service_test.go @@ -61,7 +61,7 @@ func TestCreateProposition(t *testing.T) { assert.Equal(t, propID, createdProp.ID) } if ok := assert.NotNil(t, resp); ok { - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } } @@ -105,6 +105,6 @@ func TestGetPropositions(t *testing.T) { assert.Equal(t, 1, len(*props)) } if ok := assert.NotNil(t, resp); ok { - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } } diff --git a/iam/roles_service_test.go b/iam/roles_service_test.go index c5848fce..e7e7070f 100644 --- a/iam/roles_service_test.go +++ b/iam/roles_service_test.go @@ -54,8 +54,8 @@ func TestRoleCRUD(t *testing.T) { if err != nil { t.Fatal(err) } - if resp.StatusCode != http.StatusCreated { - t.Errorf("Expected HTTP created. Got: %d", resp.StatusCode) + if resp.StatusCode() != http.StatusCreated { + t.Errorf("Expected HTTP created. Got: %d", resp.StatusCode()) } if role.Name != roleName { t.Errorf("Expected role name: %s, Got: %s", roleName, role.Name) @@ -65,8 +65,8 @@ func TestRoleCRUD(t *testing.T) { } role, resp, err = client.Roles.GetRoleByID(roleID) - if resp.StatusCode != http.StatusOK { - t.Errorf("Expected HTTP success Got: %d", resp.StatusCode) + if resp.StatusCode() != http.StatusOK { + t.Errorf("Expected HTTP success Got: %d", resp.StatusCode()) } if role == nil { t.Errorf("Expected role to be found, Got: %v", err) @@ -79,8 +79,8 @@ func TestRoleCRUD(t *testing.T) { if !assert.Nil(t, err) { return } - if resp.StatusCode != http.StatusNoContent { - t.Errorf("Expected HTTP no content Got: %d", resp.StatusCode) + if resp.StatusCode() != http.StatusNoContent { + t.Errorf("Expected HTTP no content Got: %d", resp.StatusCode()) } } @@ -126,7 +126,7 @@ func TestRolePermissionActions(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) _, resp, err = client.Roles.RemoveRolePermission(role, "GROUP.READ") if !assert.Nil(t, err) { @@ -135,7 +135,7 @@ func TestRolePermissionActions(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) } func TestGetRolesByGroupID(t *testing.T) { @@ -168,8 +168,8 @@ func TestGetRolesByGroupID(t *testing.T) { if err != nil { t.Fatal(err) } - if resp.StatusCode != http.StatusOK { - t.Errorf("Expected HTTP success Got: %d", resp.StatusCode) + if resp.StatusCode() != http.StatusOK { + t.Errorf("Expected HTTP success Got: %d", resp.StatusCode()) } if len(*roles) != 1 { t.Errorf("Expected 1 role") @@ -207,7 +207,7 @@ func TestGetRolePermissions(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Nil(t, err) if !assert.NotNil(t, permissions) { return diff --git a/iam/services_service.go b/iam/services_service.go index bf63c422..d5fba08e 100644 --- a/iam/services_service.go +++ b/iam/services_service.go @@ -234,7 +234,7 @@ func (p *ServicesService) DeleteService(service Service) (bool, *Response, error var deleteResponse interface{} resp, err := p.client.do(req, &deleteResponse) - if resp == nil || resp.StatusCode != http.StatusNoContent { + if resp == nil || resp.StatusCode() != http.StatusNoContent { return false, resp, err } return true, resp, nil @@ -260,7 +260,7 @@ func (p *ServicesService) UpdateServiceCertificateDER(service Service, derBytes if err != nil { return nil, resp, err } - if resp == nil || resp.StatusCode != http.StatusOK { + if resp == nil || resp.StatusCode() != http.StatusOK { return nil, resp, err } return p.GetServiceByID(service.ID) @@ -334,7 +334,7 @@ func (p *ServicesService) updateScopes(service Service, action string, scopes [] if err != nil { return false, resp, err } - if resp.StatusCode != http.StatusNoContent { + if resp.StatusCode() != http.StatusNoContent { return false, resp, ErrOperationFailed } return true, resp, nil diff --git a/iam/services_service_test.go b/iam/services_service_test.go index 5952bfcc..8b23bf33 100644 --- a/iam/services_service_test.go +++ b/iam/services_service_test.go @@ -118,7 +118,7 @@ func TestServicesCRUD(t *testing.T) { if ok := assert.NotNil(t, service); !ok { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, serviceName, service.Name) assert.Equal(t, applicationID, service.ApplicationID) assert.True(t, len(service.PrivateKey) > 0) @@ -128,7 +128,7 @@ func TestServicesCRUD(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.NotNil(t, foundService) { return } @@ -145,7 +145,7 @@ func TestServicesCRUD(t *testing.T) { return } assert.Equal(t, 1, len(*services)) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) tokenValidity := 3601 serviceToUpdate := (*services)[0] @@ -160,7 +160,7 @@ func TestServicesCRUD(t *testing.T) { if !assert.NotNil(t, updated) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, updated.TokenValidity, tokenValidity) ok, resp, err := client.Services.DeleteService(*foundService) @@ -168,7 +168,7 @@ func TestServicesCRUD(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) assert.True(t, ok) } @@ -207,7 +207,7 @@ func TestScopes(t *testing.T) { if !assert.NotNil(t, ok) { return } - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) ok, resp, err = client.Services.RemoveScopes(r, []string{"foo"}, []string{"foo"}) if !assert.Nil(t, err) { return @@ -218,7 +218,7 @@ func TestScopes(t *testing.T) { if !assert.NotNil(t, ok) { return } - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } func TestServicesService_UpdateServiceCertificate(t *testing.T) { diff --git a/iam/sms_gateways_service.go b/iam/sms_gateways_service.go index 4d4e1560..b8e9040d 100644 --- a/iam/sms_gateways_service.go +++ b/iam/sms_gateways_service.go @@ -85,8 +85,8 @@ func (o *SMSGatewaysService) CreateSMSGateway(gw SMSGateway) (*SMSGateway, *Resp if err != nil { return nil, resp, err } - if resp.StatusCode != http.StatusCreated { - return nil, resp, fmt.Errorf("error creating sms gateway: %d", resp.StatusCode) + if resp.StatusCode() != http.StatusCreated { + return nil, resp, fmt.Errorf("error creating sms gateway: %d", resp.StatusCode()) } return &newGW, resp, err } @@ -107,7 +107,7 @@ func (o *SMSGatewaysService) DeleteSMSGateway(gw SMSGateway) (bool, *Response, e if err != nil { return false, resp, err } - return resp.StatusCode == http.StatusAccepted, resp, nil + return resp.StatusCode() == http.StatusAccepted, resp, nil } // UpdateSMSGateway updates the SMS gateway diff --git a/iam/sms_gateways_service_test.go b/iam/sms_gateways_service_test.go index 67040085..f4c8fb57 100644 --- a/iam/sms_gateways_service_test.go +++ b/iam/sms_gateways_service_test.go @@ -103,7 +103,7 @@ func TestCreateSMSGateway(t *testing.T) { if !assert.NotNil(t, createdGW) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, "twilio", createdGW.Provider) assert.Equal(t, orgID, createdGW.Organization.Value) } diff --git a/iam/sms_templates_service.go b/iam/sms_templates_service.go index 17b9db57..40e47745 100644 --- a/iam/sms_templates_service.go +++ b/iam/sms_templates_service.go @@ -71,8 +71,8 @@ func (o *SMSTemplatesService) CreateSMSTemplate(template SMSTemplate) (*SMSTempl if err != nil { return nil, resp, err } - if resp.StatusCode != http.StatusCreated { - return nil, resp, fmt.Errorf("error creating sms template: %d", resp.StatusCode) + if resp.StatusCode() != http.StatusCreated { + return nil, resp, fmt.Errorf("error creating sms template: %d", resp.StatusCode()) } return &newTemplate, resp, err } @@ -93,7 +93,7 @@ func (o *SMSTemplatesService) DeleteSMSTemplate(template SMSTemplate) (bool, *Re if err != nil { return false, resp, err } - return resp.StatusCode == http.StatusAccepted, resp, nil + return resp.StatusCode() == http.StatusAccepted, resp, nil } // UpdateSMSTemplate updates the SMS template diff --git a/iam/sms_templates_service_test.go b/iam/sms_templates_service_test.go index fd462ae4..403b95ef 100644 --- a/iam/sms_templates_service_test.go +++ b/iam/sms_templates_service_test.go @@ -88,7 +88,7 @@ func TestCreateSMSTemplate(t *testing.T) { if !assert.NotNil(t, createdTemplate) { return } - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, TypePhoneVerification, createdTemplate.Type) assert.Equal(t, orgID, createdTemplate.Organization.Value) } diff --git a/iam/users_service.go b/iam/users_service.go index 29933c5f..9357d515 100644 --- a/iam/users_service.go +++ b/iam/users_service.go @@ -88,7 +88,7 @@ func (u *UsersService) CreateUser(person Person) (*User, *Response, error) { if err != nil { return nil, resp, err } - if resp.StatusCode == http.StatusCreated { + if resp.StatusCode() == http.StatusCreated { // Brand-new user var id string count, err := fmt.Sscanf(resp.Header.Get("Location"), "/authorize/identity/User/%s", &id) @@ -100,8 +100,8 @@ func (u *UsersService) CreateUser(person Person) (*User, *Response, error) { } return u.GetUserByID(id) } - if resp.StatusCode != http.StatusOK { - return nil, resp, fmt.Errorf("unexpected StatusCode '%d' during user create", resp.StatusCode) + if resp.StatusCode() != http.StatusOK { + return nil, resp, fmt.Errorf("unexpected StatusCode '%d' during user create", resp.StatusCode()) } // HTTP 200 return u.GetUserByID(person.LoginID) @@ -126,7 +126,7 @@ func (u *UsersService) DeleteUser(person Person) (bool, *Response, error) { if err != nil { return false, resp, err } - ok := resp != nil && (resp.StatusCode == http.StatusNoContent) + ok := resp != nil && (resp.StatusCode() == http.StatusNoContent) return ok, resp, err } @@ -166,7 +166,7 @@ func (u *UsersService) ChangeLoginID(user Person, newLoginID string) (bool, *Res doFunc = u.client.do } resp, err := doFunc(req, &bundleResponse) - ok := resp != nil && (resp.StatusCode == http.StatusNoContent) + ok := resp != nil && (resp.StatusCode() == http.StatusNoContent) return ok, resp, err } @@ -199,7 +199,7 @@ func (u *UsersService) userActionV(body *Parameters, action, apiVersion string) if err != nil { return false, resp, err } - ok := resp != nil && (resp.StatusCode == http.StatusOK || resp.StatusCode == http.StatusAccepted) + ok := resp != nil && (resp.StatusCode() == http.StatusOK || resp.StatusCode() == http.StatusAccepted) return ok, resp, err } @@ -446,7 +446,7 @@ func (u *UsersService) SetMFA(userID string, activate bool) (bool, *Response, er var bundleResponse interface{} resp, _ := u.client.do(req, &bundleResponse) - ok := resp != nil && (resp.StatusCode == http.StatusAccepted) + ok := resp != nil && (resp.StatusCode() == http.StatusAccepted) return ok, resp, nil } @@ -461,7 +461,7 @@ func (u *UsersService) Unlock(userID string) (bool, *Response, error) { var bundleResponse interface{} resp, _ := u.client.do(req, &bundleResponse) - ok := resp != nil && (resp.StatusCode == http.StatusNoContent) + ok := resp != nil && (resp.StatusCode() == http.StatusNoContent) return ok, resp, nil } diff --git a/iam/users_service_test.go b/iam/users_service_test.go index 6f13d8c3..9ddf4a3b 100644 --- a/iam/users_service_test.go +++ b/iam/users_service_test.go @@ -140,7 +140,7 @@ func TestCreateUserSelfRegistration(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.NotNil(t, user) { return } @@ -285,7 +285,7 @@ func TestCreateAlreadyExists(t *testing.T) { if !assert.NotNil(t, resp) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) if !assert.NotNil(t, user) { return } @@ -403,7 +403,7 @@ func TestGetUsers(t *testing.T) { if !assert.NotNil(t, list) { return } - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, 5, len(list.UserUUIDs)) assert.False(t, list.HasNextPage) @@ -517,7 +517,7 @@ func TestGetUserIDByLoginID(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, userUUID, uuid) } @@ -539,7 +539,7 @@ func TestGetUserByID(t *testing.T) { return } assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, email, foundUser.EmailAddress) assert.Equal(t, "Swanson", foundUser.Name.Family) } @@ -573,7 +573,7 @@ func TestUserActions(t *testing.T) { } assert.Nil(t, err) assert.True(t, ok) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) ok, resp, err = client.Users.RecoverPassword("foo@bar.co") if !assert.NotNil(t, resp) { @@ -581,7 +581,7 @@ func TestUserActions(t *testing.T) { } assert.Nil(t, err) assert.True(t, ok) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) ok, resp, err = client.Users.ChangePassword("foo@bar.co", "0ld", "N3w") if !assert.NotNil(t, resp) { @@ -589,7 +589,7 @@ func TestUserActions(t *testing.T) { } assert.Nil(t, err) assert.True(t, ok) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) ok, resp, err = client.Users.SetPassword("foo@bar.com", "1234", "newp@ss", "userCreate") if !assert.NotNil(t, resp) { @@ -597,7 +597,7 @@ func TestUserActions(t *testing.T) { } assert.Nil(t, err) assert.True(t, ok) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) uuid, resp, err := client.Users.GetUserIDByLoginID(loginID) if !assert.NotNil(t, resp) { @@ -605,7 +605,7 @@ func TestUserActions(t *testing.T) { } assert.Nil(t, err) assert.Equal(t, userUUID, uuid) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) ok, resp, err = client.Users.SetMFAByLoginID(loginID, true) if !assert.NotNil(t, resp) { @@ -613,7 +613,7 @@ func TestUserActions(t *testing.T) { } assert.Nil(t, err) assert.True(t, ok) - assert.Equal(t, http.StatusAccepted, resp.StatusCode) + assert.Equal(t, http.StatusAccepted, resp.StatusCode()) ok, resp, err = client.Users.Unlock(userUUID) if !assert.NotNil(t, resp) { @@ -621,7 +621,7 @@ func TestUserActions(t *testing.T) { } assert.Nil(t, err) assert.True(t, ok) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) ok, resp, err = client.Users.ChangeLoginID(Person{ ID: userUUID, @@ -632,7 +632,7 @@ func TestUserActions(t *testing.T) { } assert.Nil(t, err) assert.True(t, ok) - assert.Equal(t, http.StatusNoContent, resp.StatusCode) + assert.Equal(t, http.StatusNoContent, resp.StatusCode()) } func actionRequestHandler(t *testing.T, paramName, informationalMessage string, statusCode int) func(http.ResponseWriter, *http.Request) { diff --git a/tdr/client.go b/tdr/client.go index adc1dcaa..6c6e0f17 100644 --- a/tdr/client.go +++ b/tdr/client.go @@ -172,6 +172,13 @@ type Response struct { *http.Response } +func (r *Response) StatusCode() int { + if r.Response != nil { + return r.Response.StatusCode + } + return 0 +} + // newResponse creates a new Response for the provided http.Response. func newResponse(r *http.Response) *Response { response := &Response{Response: r} @@ -186,7 +193,9 @@ func (c *Client) Do(req *http.Request, v interface{}) (*Response, error) { if err != nil { return nil, err } - defer resp.Body.Close() + defer func() { + _ = resp.Body.Close() + }() response := newResponse(resp) diff --git a/tdr/contracts_service.go b/tdr/contracts_service.go index 2244843d..7b08eb47 100644 --- a/tdr/contracts_service.go +++ b/tdr/contracts_service.go @@ -67,7 +67,7 @@ func (c *ContractsService) CreateContract(contract Contract) (bool, *Response, e if err != nil { return false, resp, err } - if resp.StatusCode != http.StatusCreated { + if resp.StatusCode() != http.StatusCreated { return false, resp, err } if location := resp.Header.Get("Location"); location == "" { diff --git a/tdr/contracts_service_test.go b/tdr/contracts_service_test.go index 08237fe1..3fef478c 100644 --- a/tdr/contracts_service_test.go +++ b/tdr/contracts_service_test.go @@ -118,7 +118,7 @@ func TestGetContract(t *testing.T) { DataType: String("TestGo|TestGoContract"), }, nil) assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, 2, len(contracts)) } @@ -184,6 +184,6 @@ func TestCreateContract(t *testing.T) { ok, resp, err := tdrClient.Contracts.CreateContract(newContract) assert.Nil(t, err) assert.NotNil(t, resp) - assert.Equal(t, http.StatusCreated, resp.StatusCode) + assert.Equal(t, http.StatusCreated, resp.StatusCode()) assert.Equal(t, true, ok, "expected contract creation to succeed") } diff --git a/tdr/data_items_service_test.go b/tdr/data_items_service_test.go index 359d4ffc..5160ee76 100644 --- a/tdr/data_items_service_test.go +++ b/tdr/data_items_service_test.go @@ -66,13 +66,13 @@ func TestGetDataItem(t *testing.T) { Organization: String("TDROrg"), }, nil) assert.Nil(t, err) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Equal(t, 1, len(dataItems)) dataItems, resp, err = tdrClient.DataItems.GetDataItem(&GetDataItemOptions{ Organization: String("TDROrg"), }, DataSearch(KeyValue{"data.foo": "bar"})) - assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.Equal(t, http.StatusOK, resp.StatusCode()) assert.Nil(t, err) assert.Equal(t, 1, len(dataItems)) }