add some one

This commit is contained in:
Pavel 2024-01-22 22:36:19 +03:00
parent ba4d3d2b01
commit 2508b0fc5e
2 changed files with 51 additions and 11 deletions

@ -47,6 +47,10 @@ func (r *RecoveryController) HandleRecoveryRequest(c *fiber.Ctx) error {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Bad Request"})
}
if req.Email == "" {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "email is required"})
}
referralURL := c.Get("Referrer")
if req.RedirectionURL == "" && referralURL != "" {
@ -113,5 +117,14 @@ func (r *RecoveryController) HandleRecoveryLink(c *fiber.Ctx) error {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "Internal Server Error"})
}
return c.Status(fiber.StatusOK).JSON(tokens)
c.Cookie(&fiber.Cookie{
Name: "refreshToken",
Value: tokens["refreshToken"],
Domain: ".pena.digital",
Expires: time.Now().Add(30 * 24 * time.Hour),
Secure: true,
HTTPOnly: true,
})
return c.Redirect(record.SignUrl + "?auth=" + tokens["accessToken"])
}

@ -3,34 +3,55 @@ package e2e
import (
"codeword/internal/models"
"encoding/json"
"testing"
"fmt"
"github.com/gofiber/fiber/v2"
"github.com/stretchr/testify/assert"
"testing"
)
const BaseUrl = "http://localhost:8080"
// post handler
func TestRecoveryHandler(t *testing.T) {
client := fiber.AcquireClient()
t.Run("HandleRecoveryRequest", func(t *testing.T) {
reqBody := models.RecoveryRequest{
Email: "test@example.com",
Email: "admin",
RedirectionURL: "http://redirect.com",
}
reqJSON, _ := json.Marshal(reqBody)
req := client.Post("/recover").Set("Content-Type", "application/json").Body(reqJSON)
req := client.Post(BaseUrl+"/recover").Set("Content-Type", "application/json").Body(reqJSON)
statusCode, resBody, errs := req.Bytes()
if len(errs) != 0 {
assert.NoError(t, errs[0])
}
assert.Equal(t, fiber.StatusOK, statusCode)
var responseMap map[string]interface{}
err := json.Unmarshal(resBody, &responseMap)
assert.NoError(t, err)
fmt.Println(responseMap)
})
assert.Equal(t, "Recovery email sent successfully", responseMap["message"])
t.Run("HandleRecoveryRequest", func(t *testing.T) {
reqBody := models.RecoveryRequest{
Email: "admin",
RedirectionURL: "http://redirect.com",
}
reqJSON, _ := json.Marshal(reqBody)
req := client.Post(BaseUrl+"/recover").Set("Content-Type", "application/json").Body(reqJSON)
statusCode, _, errs := req.Bytes()
if len(errs) != 0 {
assert.NoError(t, errs[0])
}
assert.Equal(t, fiber.StatusAlreadyReported, statusCode)
})
t.Run("HandleRecoveryRequest_MissingEmail", func(t *testing.T) {
@ -39,10 +60,12 @@ func TestRecoveryHandler(t *testing.T) {
}
reqJSON, _ := json.Marshal(reqBody)
req := client.Post("/recover").Set("Content-Type", "application/json").Body(reqJSON)
req := client.Post(BaseUrl+"/recover").Set("Content-Type", "application/json").Body(reqJSON)
statusCode, _, errs := req.Bytes()
if len(errs) != 0 {
assert.NoError(t, errs[0])
}
assert.Equal(t, fiber.StatusBadRequest, statusCode)
})
@ -54,11 +77,15 @@ func TestRecoveryHandler(t *testing.T) {
}
reqJSON, _ := json.Marshal(reqBody)
req := client.Post("/recover").Set("Content-Type", "application/json").Body(reqJSON)
req := client.Post(BaseUrl+"/recover").Set("Content-Type", "application/json").Body(reqJSON)
statusCode, _, errs := req.Bytes()
if len(errs) != 0 {
assert.NoError(t, errs[0])
}
assert.Equal(t, fiber.StatusNotFound, statusCode)
})
}
// get handler