From 6c82aac02d09c290185204864ce192dfeffed3c0 Mon Sep 17 00:00:00 2001 From: mamad Date: Mon, 2 Sep 2024 15:28:58 +0330 Subject: [PATCH] chore(agent-kindbox-e2e): adding e2e test for get api --- .../end2end/agent_kindbox_get_test.go | 79 +++++++++++++++++++ .../5_create-kindboxes-for-benefactor1.sql | 8 +- 2 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 delivery/http_server/end2end/agent_kindbox_get_test.go diff --git a/delivery/http_server/end2end/agent_kindbox_get_test.go b/delivery/http_server/end2end/agent_kindbox_get_test.go new file mode 100644 index 0000000..6a9d12d --- /dev/null +++ b/delivery/http_server/end2end/agent_kindbox_get_test.go @@ -0,0 +1,79 @@ +//go:build end2end +// +build end2end + +package end2end + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "testing" + + "git.gocasts.ir/ebhomengo/niki/delivery/http_server/end2end/setup" + "git.gocasts.ir/ebhomengo/niki/entity" + adminserviceparam "git.gocasts.ir/ebhomengo/niki/param/admin/admin" + param "git.gocasts.ir/ebhomengo/niki/param/agent/kind_box" + "github.com/labstack/echo/v4" + "github.com/stretchr/testify/assert" +) + +const ( + agentPhoneNumber = "09384664403" + agentPassword = "Abc123456" +) + +func TestAgent_KindBox_Get(t *testing.T) { + kindBox := entity.KindBox{ + ID: 2, + SerialNumber: "serial-2", + ReceiverAgentID: 4, + Status: entity.KindBoxAssignedReceiverAgentStatus, + } + url := fmt.Sprintf("/agents/kindboxes/%d", kindBox.ID) + + teardown := setup.SeedMariaDB(testContainer.GetMariaDBConfig()) + t.Cleanup(teardown) + + token, err := getToken() + if err != nil { + t.Fatalf("could not login: %s", err) + } + + resRecord := createRequest(http.MethodGet, url, token) + var res param.GetKindBoxResponse + err = json.NewDecoder(resRecord.Body).Decode(&res) + assert.NoError(t, err, "could not decode response body") + + assert.Equal(t, http.StatusOK, resRecord.Code) + assert.Equal(t, kindBox.ID, res.ID) + assert.Equal(t, kindBox.ReceiverAgentID, res.ReceiverAgentID) + assert.Equal(t, kindBox.SerialNumber, res.SerialNumber) + assert.Equal(t, kindBox.Status, res.Status) +} + +func getToken() (string, error) { + res, err := services.AdminSvc.LoginWithPhoneNumber( + context.Background(), + adminserviceparam.LoginWithPhoneNumberRequest{ + PhoneNumber: agentPhoneNumber, + Password: agentPassword, + }, + ) + if err != nil { + return "", err + } + return res.Tokens.AccessToken, nil +} + +func createRequest(method string, url string, token string) *httptest.ResponseRecorder { + req := httptest.NewRequest(method, url, nil) + req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON) + req.Header.Set(echo.HeaderAuthorization, fmt.Sprintf("Bearer %s", token)) + res := httptest.NewRecorder() + + // Serve the request + testServer.Serve(res, req) + return res +} diff --git a/delivery/http_server/end2end/setup/seed_data/5_create-kindboxes-for-benefactor1.sql b/delivery/http_server/end2end/setup/seed_data/5_create-kindboxes-for-benefactor1.sql index a8fc2e3..3d00241 100644 --- a/delivery/http_server/end2end/setup/seed_data/5_create-kindboxes-for-benefactor1.sql +++ b/delivery/http_server/end2end/setup/seed_data/5_create-kindboxes-for-benefactor1.sql @@ -1,8 +1,10 @@ -- +migrate Up -INSERT INTO `kind_boxes` (`id`, `kind_box_req_id`, `benefactor_id`, `type`, `serial_number`, `status`, `deliver_refer_time_id`, `deliver_refer_date`, `deliver_address_id`, `sender_agent_id`, `delivered_at`) +INSERT INTO `kind_boxes` (`id`, `kind_box_req_id`, `benefactor_id`, `type`, `serial_number`, `status`, `deliver_refer_time_id`, `deliver_refer_date`, `deliver_address_id`, `sender_agent_id`, `receiver_agent_id`, `delivered_at`) + VALUES -- delivered kindbox for benefactor 1 - (1, 1, 1, 'on-table', 'serial-1', 'delivered', 1, NOW() - INTERVAL 7 DAY, 1, 1, NOW()); + (1, 1, 1, 'on-table', 'serial-1', 'delivered', 1, NOW() - INTERVAL 7 DAY, 1, 1, NULL, NOW()), + (2, 1, 1, 'on-table', 'serial-2', 'assigned-receiver-agent', 1, NOW() - INTERVAL 7 DAY, 1, 1, 4, NOW()); -- +migrate Down -DELETE FROM `kind_boxes`; \ No newline at end of file +DELETE FROM `kind_boxes`;