@@ -75,3 +75,39 @@ func TestCheckAPICallSuccess(t *testing.T) {
7575 assert .NoError (t , err )
7676 })
7777}
78+
79+ func TestFetchAndCheckSuccess (t * testing.T ) {
80+ t .Run ("context cancelled" , func (t * testing.T ) {
81+ errMessage := "context cancelled"
82+ parentCtx := context .Background ()
83+ ctx , cancelCtx := context .WithCancel (parentCtx )
84+ cancelCtx ()
85+ _ , actualErr := FetchAndCheckSuccess (ctx , errMessage ,
86+ func (ctx context.Context ) (* struct {}, * _http.Response , error ) {
87+ return nil , & _http.Response {Body : io .NopCloser (bytes .NewReader (nil ))}, errors .New (errMessage )
88+ })
89+ assert .True (t , commonerrors .Any (actualErr , commonerrors .ErrCancelled ))
90+ })
91+
92+ t .Run ("api call not successful" , func (t * testing.T ) {
93+ errMessage := "client error"
94+ parentCtx := context .Background ()
95+ _ , actualErr := FetchAndCheckSuccess (parentCtx , errMessage ,
96+ func (ctx context.Context ) (* struct {}, * _http.Response , error ) {
97+ resp := _http.Response {StatusCode : 400 , Body : io .NopCloser (bytes .NewReader ([]byte ("{\" message\" : \" client error\" ,\" requestId\" : \" 761761721\" }" )))}
98+ return nil , & resp , errors .New (errMessage )
99+ })
100+ expectedErr := "client error (400): API call error [request-id: 761761721] client error; client error"
101+ assert .Equal (t , actualErr .Error (), expectedErr )
102+ })
103+
104+ t .Run ("no context error, api call successful" , func (t * testing.T ) {
105+ errMessage := "no error"
106+ parentCtx := context .Background ()
107+ _ , err := FetchAndCheckSuccess (parentCtx , errMessage ,
108+ func (ctx context.Context ) (* struct {}, * _http.Response , error ) {
109+ return nil , & _http.Response {StatusCode : 200 }, errors .New (errMessage )
110+ })
111+ assert .NoError (t , err )
112+ })
113+ }
0 commit comments