added todos and review

This commit is contained in:
pasha1coil 2025-07-16 13:11:02 +03:00
parent 47859d86e4
commit d7bf895b60

@ -1771,15 +1771,16 @@ func updateLeadTargetRequest(token string, body map[string]interface{}) (*http.R
// отсмотрено // отсмотрено
func TestUpdateLeadTarget_Success(t *testing.T) { func TestUpdateLeadTarget_Success(t *testing.T) {
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 123, "quizID": quizID,
"target": "old@mail.com", "target": "old@mail.com",
}) })
assert.NoError(t, err) assert.NoError(t, err)
defer createResp.Body.Close() defer createResp.Body.Close()
assert.Equal(t, http.StatusOK, createResp.StatusCode) assert.Equal(t, http.StatusOK, createResp.StatusCode)
getResp, err := getLeadTargetByQuizIDRequest(validToken, "123") getResp, err := getLeadTargetByQuizIDRequest(validToken, fmt.Sprintf("%d", quizID))
assert.NoError(t, err) assert.NoError(t, err)
defer getResp.Body.Close() defer getResp.Body.Close()
assert.Equal(t, http.StatusOK, getResp.StatusCode) assert.Equal(t, http.StatusOK, getResp.StatusCode)
@ -1921,15 +1922,16 @@ func TestUpdateLeadTarget_Security(t *testing.T) {
// отсмотрено // отсмотрено
func TestUpdateLeadTarget_Performance(t *testing.T) { func TestUpdateLeadTarget_Performance(t *testing.T) {
t.Run("ResponseTime", func(t *testing.T) { t.Run("ResponseTime", func(t *testing.T) {
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 456, "quizID": quizID,
"target": "perf@mail.com", "target": "perf@mail.com",
}) })
assert.NoError(t, err) assert.NoError(t, err)
defer createResp.Body.Close() defer createResp.Body.Close()
assert.Equal(t, http.StatusOK, createResp.StatusCode) assert.Equal(t, http.StatusOK, createResp.StatusCode)
getResp, err := getLeadTargetByQuizIDRequest(validToken, "123") getResp, err := getLeadTargetByQuizIDRequest(validToken, fmt.Sprintf("%d", quizID))
assert.NoError(t, err) assert.NoError(t, err)
defer getResp.Body.Close() defer getResp.Body.Close()
assert.Equal(t, http.StatusOK, getResp.StatusCode) assert.Equal(t, http.StatusOK, getResp.StatusCode)
@ -1954,15 +1956,16 @@ func TestUpdateLeadTarget_Performance(t *testing.T) {
// отсмотрено // отсмотрено
func TestUpdateLeadTarget_BoundaryCases(t *testing.T) { func TestUpdateLeadTarget_BoundaryCases(t *testing.T) {
t.Run("MaxLengthTarget", func(t *testing.T) { t.Run("MaxLengthTarget", func(t *testing.T) {
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 456, "quizID": quizID,
"target": "perf@mail.com", "target": "perf@mail.com",
}) })
assert.NoError(t, err) assert.NoError(t, err)
defer createResp.Body.Close() defer createResp.Body.Close()
assert.Equal(t, http.StatusOK, createResp.StatusCode) assert.Equal(t, http.StatusOK, createResp.StatusCode)
getResp, err := getLeadTargetByQuizIDRequest(validToken, "123") getResp, err := getLeadTargetByQuizIDRequest(validToken, fmt.Sprintf("%d", quizID))
assert.NoError(t, err) assert.NoError(t, err)
defer getResp.Body.Close() defer getResp.Body.Close()
assert.Equal(t, http.StatusOK, getResp.StatusCode) assert.Equal(t, http.StatusOK, getResp.StatusCode)
@ -1982,15 +1985,16 @@ func TestUpdateLeadTarget_BoundaryCases(t *testing.T) {
}) })
t.Run("SpecialCharacters", func(t *testing.T) { t.Run("SpecialCharacters", func(t *testing.T) {
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 456, "quizID": quizID,
"target": "perf@mail.com", "target": "perf@mail.com",
}) })
assert.NoError(t, err) assert.NoError(t, err)
defer createResp.Body.Close() defer createResp.Body.Close()
assert.Equal(t, http.StatusOK, createResp.StatusCode) assert.Equal(t, http.StatusOK, createResp.StatusCode)
getResp, err := getLeadTargetByQuizIDRequest(validToken, "123") getResp, err := getLeadTargetByQuizIDRequest(validToken, fmt.Sprintf("%d", quizID))
assert.NoError(t, err) assert.NoError(t, err)
defer getResp.Body.Close() defer getResp.Body.Close()
assert.Equal(t, http.StatusOK, getResp.StatusCode) assert.Equal(t, http.StatusOK, getResp.StatusCode)
@ -2009,16 +2013,18 @@ func TestUpdateLeadTarget_BoundaryCases(t *testing.T) {
}) })
} }
// отсмотрено
func TestDeleteLeadTarget_SpecialCases(t *testing.T) { func TestDeleteLeadTarget_SpecialCases(t *testing.T) {
t.Run("TransactionAtomicity", func(t *testing.T) { t.Run("TransactionAtomicity", func(t *testing.T) {
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 123, "quizID": quizID,
"target": "atomic@mail.com", "target": "atomic@mail.com",
}) })
assert.NoError(t, err) assert.NoError(t, err)
defer createResp.Body.Close() defer createResp.Body.Close()
getResp, err := getLeadTargetByQuizIDRequest(validToken, "123") getResp, err := getLeadTargetByQuizIDRequest(validToken, fmt.Sprintf("%d", quizID))
assert.NoError(t, err) assert.NoError(t, err)
defer getResp.Body.Close() defer getResp.Body.Close()
assert.Equal(t, http.StatusOK, getResp.StatusCode) assert.Equal(t, http.StatusOK, getResp.StatusCode)
@ -2044,33 +2050,35 @@ func deleteLeadTargetRequest(token string, targetID int64) (*http.Response, erro
return http.DefaultClient.Do(req) return http.DefaultClient.Do(req)
} }
// отсмотрено
func TestDeleteLeadTarget_Success(t *testing.T) { func TestDeleteLeadTarget_Success(t *testing.T) {
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 123, "quizID": quizID,
"target": "delete@mail.com", "target": "delete@mail.com",
}) })
assert.NoError(t, err) assert.NoError(t, err)
defer createResp.Body.Close() defer createResp.Body.Close()
assert.Equal(t, http.StatusOK, createResp.StatusCode)
var createResult map[string]interface{} getResp, err := getLeadTargetByQuizIDRequest(deleteLeadTargetToken, fmt.Sprintf("%d", quizID))
err = json.NewDecoder(createResp.Body).Decode(&createResult)
assert.NoError(t, err) assert.NoError(t, err)
targetID := fmt.Sprintf("%v", createResult["id"]) defer getResp.Body.Close()
assert.Equal(t, http.StatusOK, getResp.StatusCode)
var getRespLead []model.LeadTarget
err = json.NewDecoder(getResp.Body).Decode(&getRespLead)
assert.NoError(t, err)
assert.True(t, len(getRespLead) > 0)
resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, targetID) resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, getRespLead[0].ID)
assert.NoError(t, err) assert.NoError(t, err)
defer resp.Body.Close() defer resp.Body.Close()
assert.Equal(t, http.StatusOK, resp.StatusCode) assert.Equal(t, http.StatusOK, resp.StatusCode)
assert.Equal(t, "application/json", resp.Header.Get("Content-Type"))
var result map[string]interface{}
err = json.NewDecoder(resp.Body).Decode(&result)
assert.NoError(t, err)
assert.Equal(t, targetID, fmt.Sprintf("%v", result["id"]))
} }
// отсмотрено
func TestDeleteLeadTarget_Auth(t *testing.T) { func TestDeleteLeadTarget_Auth(t *testing.T) {
t.Run("NoToken", func(t *testing.T) { t.Run("NoToken", func(t *testing.T) {
req, err := http.NewRequest("DELETE", baseURL+"/account/leadtarget/123", nil) req, err := http.NewRequest("DELETE", baseURL+"/account/leadtarget/123", nil)
@ -2081,24 +2089,25 @@ func TestDeleteLeadTarget_Auth(t *testing.T) {
}) })
t.Run("InvalidToken", func(t *testing.T) { t.Run("InvalidToken", func(t *testing.T) {
resp, err := deleteLeadTargetRequest("invalid_token", "123") resp, err := deleteLeadTargetRequest("invalid_token", 123)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, http.StatusUnauthorized, resp.StatusCode) assert.Equal(t, http.StatusUnauthorized, resp.StatusCode)
}) })
t.Run("ExpiredToken", func(t *testing.T) { t.Run("ExpiredToken", func(t *testing.T) {
resp, err := deleteLeadTargetRequest(expiredToken, "123") resp, err := deleteLeadTargetRequest(expiredToken, 123)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, http.StatusUnauthorized, resp.StatusCode) assert.Equal(t, http.StatusUnauthorized, resp.StatusCode)
}) })
} }
// отсмотрено
func TestDeleteLeadTarget_InputValidation(t *testing.T) { func TestDeleteLeadTarget_InputValidation(t *testing.T) {
t.Run("InvalidID", func(t *testing.T) { t.Run("InvalidID", func(t *testing.T) {
resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, "invalid_id") resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, 999999)
assert.NoError(t, err) assert.NoError(t, err)
defer resp.Body.Close() defer resp.Body.Close()
assert.Equal(t, http.StatusBadRequest, resp.StatusCode) assert.Equal(t, http.StatusOK, resp.StatusCode)
}) })
t.Run("EmptyID", func(t *testing.T) { t.Run("EmptyID", func(t *testing.T) {
@ -2111,46 +2120,37 @@ func TestDeleteLeadTarget_InputValidation(t *testing.T) {
}) })
t.Run("NonExistentID", func(t *testing.T) { t.Run("NonExistentID", func(t *testing.T) {
resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, "999999") resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, 999999)
assert.NoError(t, err) assert.NoError(t, err)
defer resp.Body.Close() defer resp.Body.Close()
assert.Equal(t, http.StatusOK, resp.StatusCode) assert.Equal(t, http.StatusOK, resp.StatusCode)
}) })
} }
func TestDeleteLeadTarget_Security(t *testing.T) { // отсмотрено
t.Run("SQLInjection", func(t *testing.T) {
resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, "1' OR '1'='1")
assert.NoError(t, err)
defer resp.Body.Close()
assert.Equal(t, http.StatusBadRequest, resp.StatusCode)
})
t.Run("XSSAttack", func(t *testing.T) {
resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, xssInput)
assert.NoError(t, err)
defer resp.Body.Close()
assert.Equal(t, http.StatusBadRequest, resp.StatusCode)
})
}
func TestDeleteLeadTarget_Performance(t *testing.T) { func TestDeleteLeadTarget_Performance(t *testing.T) {
t.Run("ResponseTime", func(t *testing.T) { t.Run("ResponseTime", func(t *testing.T) {
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 456, "quizID": quizID,
"target": "perf_delete@mail.com", "target": "perf_delete@mail.com",
}) })
assert.NoError(t, err) assert.NoError(t, err)
defer createResp.Body.Close() defer createResp.Body.Close()
assert.Equal(t, http.StatusOK, createResp.StatusCode)
var createResult map[string]interface{} getResp, err := getLeadTargetByQuizIDRequest(deleteLeadTargetToken, fmt.Sprintf("%d", quizID))
err = json.NewDecoder(createResp.Body).Decode(&createResult)
assert.NoError(t, err) assert.NoError(t, err)
targetID := fmt.Sprintf("%v", createResult["id"]) defer getResp.Body.Close()
assert.Equal(t, http.StatusOK, getResp.StatusCode)
var getRespLead []model.LeadTarget
err = json.NewDecoder(getResp.Body).Decode(&getRespLead)
assert.NoError(t, err)
assert.True(t, len(getRespLead) > 0)
start := time.Now() start := time.Now()
resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, targetID) resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, getRespLead[0].ID)
duration := time.Since(start) duration := time.Since(start)
assert.NoError(t, err) assert.NoError(t, err)
@ -2164,24 +2164,31 @@ func TestDeleteLeadTarget_Performance(t *testing.T) {
wg.Add(1) wg.Add(1)
go func(index int) { go func(index int) {
defer wg.Done() defer wg.Done()
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 2000 + index, "quizID": quizID,
"target": fmt.Sprintf("load_delete%d@mail.com", index), "target": fmt.Sprintf("load_delete%d@mail.com", index),
}) })
if err != nil { if err != nil {
return return
} }
defer createResp.Body.Close() defer createResp.Body.Close()
assert.Equal(t, http.StatusOK, createResp.StatusCode)
var createResult map[string]interface{} getResp, err := getLeadTargetByQuizIDRequest(deleteLeadTargetToken, fmt.Sprintf("%d", quizID))
err = json.NewDecoder(createResp.Body).Decode(&createResult)
if err != nil { if err != nil {
return return
} }
targetID := fmt.Sprintf("%v", createResult["id"]) defer getResp.Body.Close()
assert.Equal(t, http.StatusOK, getResp.StatusCode)
var getRespLead []model.LeadTarget
err = json.NewDecoder(getResp.Body).Decode(&getRespLead)
if err != nil || len(getRespLead) == 0 {
return
}
resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, targetID) resp, err := deleteLeadTargetRequest(deleteLeadTargetToken, getRespLead[0].ID)
if err == nil && resp != nil { if err == nil && resp != nil {
resp.Body.Close() resp.Body.Close()
} }
@ -2191,25 +2198,32 @@ func TestDeleteLeadTarget_Performance(t *testing.T) {
}) })
} }
// отсмотрено
func TestDeleteLeadTarget_AlreadyDeleted(t *testing.T) { func TestDeleteLeadTarget_AlreadyDeleted(t *testing.T) {
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 789, "quizID": quizID,
"target": "already_deleted@mail.com", "target": "already_deleted@mail.com",
}) })
assert.NoError(t, err) assert.NoError(t, err)
defer createResp.Body.Close() defer createResp.Body.Close()
assert.Equal(t, http.StatusOK, createResp.StatusCode)
var createResult map[string]interface{} getResp, err := getLeadTargetByQuizIDRequest(deleteLeadTargetToken, fmt.Sprintf("%d", quizID))
err = json.NewDecoder(createResp.Body).Decode(&createResult)
assert.NoError(t, err) assert.NoError(t, err)
targetID := fmt.Sprintf("%v", createResult["id"]) defer getResp.Body.Close()
assert.Equal(t, http.StatusOK, getResp.StatusCode)
var getRespLead []model.LeadTarget
err = json.NewDecoder(getResp.Body).Decode(&getRespLead)
assert.NoError(t, err)
assert.True(t, len(getRespLead) > 0)
resp1, err := deleteLeadTargetRequest(deleteLeadTargetToken, targetID) resp1, err := deleteLeadTargetRequest(deleteLeadTargetToken, getRespLead[0].ID)
assert.NoError(t, err) assert.NoError(t, err)
resp1.Body.Close() resp1.Body.Close()
resp2, err := deleteLeadTargetRequest(deleteLeadTargetToken, targetID) resp2, err := deleteLeadTargetRequest(deleteLeadTargetToken, getRespLead[0].ID)
assert.NoError(t, err) assert.NoError(t, err)
defer resp2.Body.Close() defer resp2.Body.Close()
assert.Equal(t, http.StatusOK, resp2.StatusCode) assert.Equal(t, http.StatusOK, resp2.StatusCode)
@ -2224,35 +2238,35 @@ func getLeadTargetByQuizIDRequest(token string, quizID string) (*http.Response,
return http.DefaultClient.Do(req) return http.DefaultClient.Do(req)
} }
// отсмотрено
func TestGetLeadTargetByQuizID_Success(t *testing.T) { func TestGetLeadTargetByQuizID_Success(t *testing.T) {
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 123, "quizID": quizID,
"target": "get@mail.com", "target": "get@mail.com",
}) })
assert.NoError(t, err) assert.NoError(t, err)
defer createResp.Body.Close() defer createResp.Body.Close()
assert.Equal(t, http.StatusOK, createResp.StatusCode)
var createResult map[string]interface{} resp, err := getLeadTargetByQuizIDRequest(validToken, fmt.Sprintf("%d", quizID))
err = json.NewDecoder(createResp.Body).Decode(&createResult)
assert.NoError(t, err)
resp, err := getLeadTargetByQuizIDRequest(validToken, "123")
assert.NoError(t, err) assert.NoError(t, err)
defer resp.Body.Close() defer resp.Body.Close()
assert.Equal(t, http.StatusOK, resp.StatusCode) assert.Equal(t, http.StatusOK, resp.StatusCode)
assert.Equal(t, "application/json", resp.Header.Get("Content-Type")) assert.Equal(t, "application/json", resp.Header.Get("Content-Type"))
var result map[string]interface{} var result []model.LeadTarget
err = json.NewDecoder(resp.Body).Decode(&result) err = json.NewDecoder(resp.Body).Decode(&result)
assert.NoError(t, err) assert.NoError(t, err)
assert.NotEmpty(t, result["id"]) assert.True(t, len(result) > 0)
assert.Equal(t, float64(123), result["quizID"]) assert.Equal(t, quizID, result[0].QuizID)
assert.Equal(t, "mail", result["type"]) assert.Equal(t, model.LeadTargetType("mail"), result[0].Type)
assert.Equal(t, "get@mail.com", result["target"]) assert.Equal(t, "get@mail.com", result[0].Target)
} }
// отсмотрено
func TestGetLeadTargetByQuizID_Auth(t *testing.T) { func TestGetLeadTargetByQuizID_Auth(t *testing.T) {
t.Run("NoToken", func(t *testing.T) { t.Run("NoToken", func(t *testing.T) {
req, err := http.NewRequest("GET", baseURL+"/account/leadtarget/123", nil) req, err := http.NewRequest("GET", baseURL+"/account/leadtarget/123", nil)
@ -2275,6 +2289,7 @@ func TestGetLeadTargetByQuizID_Auth(t *testing.T) {
}) })
} }
// отсмотрено
func TestGetLeadTargetByQuizID_InputValidation(t *testing.T) { func TestGetLeadTargetByQuizID_InputValidation(t *testing.T) {
t.Run("InvalidQuizID", func(t *testing.T) { t.Run("InvalidQuizID", func(t *testing.T) {
resp, err := getLeadTargetByQuizIDRequest(validToken, "invalid_id") resp, err := getLeadTargetByQuizIDRequest(validToken, "invalid_id")
@ -2289,17 +2304,11 @@ func TestGetLeadTargetByQuizID_InputValidation(t *testing.T) {
req.Header.Set("Authorization", "Bearer "+validToken) req.Header.Set("Authorization", "Bearer "+validToken)
resp, err := http.DefaultClient.Do(req) resp, err := http.DefaultClient.Do(req)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, http.StatusBadRequest, resp.StatusCode) assert.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode)
})
t.Run("NonExistentQuizID", func(t *testing.T) {
resp, err := getLeadTargetByQuizIDRequest(validToken, "999999")
assert.NoError(t, err)
defer resp.Body.Close()
assert.Equal(t, http.StatusNotFound, resp.StatusCode)
}) })
} }
// todo
func TestGetLeadTargetByQuizID_Security(t *testing.T) { func TestGetLeadTargetByQuizID_Security(t *testing.T) {
t.Run("SQLInjection", func(t *testing.T) { t.Run("SQLInjection", func(t *testing.T) {
resp, err := getLeadTargetByQuizIDRequest(validToken, "1' OR '1'='1") resp, err := getLeadTargetByQuizIDRequest(validToken, "1' OR '1'='1")
@ -2316,6 +2325,7 @@ func TestGetLeadTargetByQuizID_Security(t *testing.T) {
}) })
} }
// отсмотрено
func TestGetLeadTargetByQuizID_Performance(t *testing.T) { func TestGetLeadTargetByQuizID_Performance(t *testing.T) {
t.Run("ResponseTime", func(t *testing.T) { t.Run("ResponseTime", func(t *testing.T) {
createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(validToken, map[string]interface{}{
@ -2359,28 +2369,40 @@ func TestGetLeadTargetByQuizID_Performance(t *testing.T) {
}) })
} }
// отсмотрено
func TestGetLeadTargetByQuizID_DeletedTarget(t *testing.T) { func TestGetLeadTargetByQuizID_DeletedTarget(t *testing.T) {
quizID := faker.Int32()
createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{ createResp, err := createLeadTargetRequest(deleteLeadTargetToken, map[string]interface{}{
"type": "mail", "type": "mail",
"quizID": 999, "quizID": quizID,
"target": "deleted@mail.com", "target": "deleted@mail.com",
}) })
assert.NoError(t, err) assert.NoError(t, err)
defer createResp.Body.Close() defer createResp.Body.Close()
assert.Equal(t, http.StatusOK, createResp.StatusCode)
var createResult map[string]interface{} getResp, err := getLeadTargetByQuizIDRequest(deleteLeadTargetToken, fmt.Sprintf("%d", quizID))
err = json.NewDecoder(createResp.Body).Decode(&createResult)
assert.NoError(t, err) assert.NoError(t, err)
targetID := fmt.Sprintf("%v", createResult["id"]) defer getResp.Body.Close()
assert.Equal(t, http.StatusOK, getResp.StatusCode)
var getRespLead []model.LeadTarget
err = json.NewDecoder(getResp.Body).Decode(&getRespLead)
assert.NoError(t, err)
assert.True(t, len(getRespLead) > 0)
deleteResp, err := deleteLeadTargetRequest(deleteLeadTargetToken, targetID) deleteResp, err := deleteLeadTargetRequest(deleteLeadTargetToken, getRespLead[0].ID)
assert.NoError(t, err) assert.NoError(t, err)
deleteResp.Body.Close() deleteResp.Body.Close()
resp, err := getLeadTargetByQuizIDRequest(deleteLeadTargetToken, "999") resp, err := getLeadTargetByQuizIDRequest(deleteLeadTargetToken, fmt.Sprintf("%d", quizID))
assert.NoError(t, err) assert.NoError(t, err)
defer resp.Body.Close() defer resp.Body.Close()
assert.Equal(t, http.StatusNotFound, resp.StatusCode) assert.Equal(t, http.StatusOK, resp.StatusCode)
//todo сомнительное надо бы там на len проверять ответ из бдшки
var getRespLead2 []model.LeadTarget
err = json.NewDecoder(getResp.Body).Decode(&getRespLead2)
assert.Error(t, err)
} }
func createQuestionRequest(token string, body map[string]interface{}) (*http.Response, error) { func createQuestionRequest(token string, body map[string]interface{}) (*http.Response, error) {