added test for DELETE /account/delete
This commit is contained in:
parent
454f5b4d5f
commit
c53d26abf7
@ -5,7 +5,6 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"gitea.pena/SQuiz/common/model"
|
"gitea.pena/SQuiz/common/model"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"io"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
@ -16,6 +15,7 @@ import (
|
|||||||
var baseURL = os.Getenv("API_BASE_URL")
|
var baseURL = os.Getenv("API_BASE_URL")
|
||||||
var validToken = os.Getenv("VALID_JWT_TOKEN")
|
var validToken = os.Getenv("VALID_JWT_TOKEN")
|
||||||
var expiredToken = os.Getenv("EXPIRED_JWT_TOKEN")
|
var expiredToken = os.Getenv("EXPIRED_JWT_TOKEN")
|
||||||
|
var validTokenForDelete = os.Getenv("VALID_JWT_TOKEN_FOR_DELETE")
|
||||||
|
|
||||||
var existingUserID = os.Getenv("EXISTING_USER_ID")
|
var existingUserID = os.Getenv("EXISTING_USER_ID")
|
||||||
var testUserID = os.Getenv("TEST_USER_ID")
|
var testUserID = os.Getenv("TEST_USER_ID")
|
||||||
@ -35,10 +35,8 @@ func TestGetAccount_Success(t *testing.T) {
|
|||||||
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"))
|
||||||
|
|
||||||
body, err := io.ReadAll(resp.Body)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
var acc model.Account
|
var acc model.Account
|
||||||
err = json.Unmarshal(body, &acc)
|
err = json.NewDecoder(resp.Body).Decode(&acc)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotEmpty(t, acc.ID)
|
assert.NotEmpty(t, acc.ID)
|
||||||
assert.NotEmpty(t, acc.UserID)
|
assert.NotEmpty(t, acc.UserID)
|
||||||
@ -238,3 +236,106 @@ func createAccountRequest(t *testing.T, token string, payload map[string]interfa
|
|||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
return resp
|
return resp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDeleteAccount_Success(t *testing.T) {
|
||||||
|
req, err := http.NewRequest("DELETE", baseURL+"/account/delete", nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
req.Header.Set("Authorization", "Bearer "+validTokenForDelete)
|
||||||
|
|
||||||
|
client := &http.Client{Timeout: 5 * time.Second}
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
||||||
|
assert.Equal(t, "application/json", resp.Header.Get("Content-Type"))
|
||||||
|
|
||||||
|
var result map[string]string
|
||||||
|
err = json.NewDecoder(resp.Body).Decode(&result)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotEmpty(t, result["accountId"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteAccount_Auth(t *testing.T) {
|
||||||
|
t.Run("NoToken", func(t *testing.T) {
|
||||||
|
req, err := http.NewRequest("DELETE", baseURL+"/account/delete", nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, http.StatusUnauthorized, resp.StatusCode)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("InvalidToken", func(t *testing.T) {
|
||||||
|
req, err := http.NewRequest("DELETE", baseURL+"/account/delete", nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
req.Header.Set("Authorization", "Bearer invalid_token")
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, http.StatusUnauthorized, resp.StatusCode)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("ExpiredToken", func(t *testing.T) {
|
||||||
|
req, err := http.NewRequest("DELETE", baseURL+"/account/delete", nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
req.Header.Set("Authorization", "Bearer "+expiredToken)
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, http.StatusUnauthorized, resp.StatusCode)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteAccount_AlreadyDeleted(t *testing.T) {
|
||||||
|
req, err := http.NewRequest("DELETE", baseURL+"/account/delete", nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
req.Header.Set("Authorization", "Bearer "+validTokenForDelete)
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteAccount_NonExistent(t *testing.T) {
|
||||||
|
req, err := http.NewRequest("DELETE", baseURL+"/account/delete", nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
req.Header.Set("Authorization", "Bearer "+validTokenForDelete)
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo 3.3.4 3.3.5
|
||||||
|
|
||||||
|
func TestDeleteAccount_Performance(t *testing.T) {
|
||||||
|
t.Run("ResponseTime", func(t *testing.T) {
|
||||||
|
req, _ := http.NewRequest("DELETE", baseURL+"/account/delete", nil)
|
||||||
|
req.Header.Set("Authorization", "Bearer "+validToken)
|
||||||
|
|
||||||
|
start := time.Now()
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
duration := time.Since(start)
|
||||||
|
assert.Less(t, duration.Milliseconds(), int64(500))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteAccount_Load(t *testing.T) {
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
for i := 0; i < 50; i++ {
|
||||||
|
wg.Add(1)
|
||||||
|
go func() {
|
||||||
|
defer wg.Done()
|
||||||
|
req, err := http.NewRequest("DELETE", baseURL+"/account/delete", nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
req.Header.Set("Authorization", "Bearer "+validToken)
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
if resp != nil {
|
||||||
|
defer resp.Body.Close()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo 3.3.7 3.3.8 3.4
|
||||||
|
Loading…
Reference in New Issue
Block a user