forked from ebhomengo/niki
				
			chore(agent-kindbox-e2e): adding e2e test for get api
This commit is contained in:
		
							parent
							
								
									4f4ae64100
								
							
						
					
					
						commit
						6c82aac02d
					
				| 
						 | 
					@ -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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,10 @@
 | 
				
			||||||
-- +migrate Up
 | 
					-- +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
 | 
					VALUES
 | 
				
			||||||
        -- delivered kindbox for benefactor 1
 | 
					        -- 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
 | 
					-- +migrate Down
 | 
				
			||||||
DELETE FROM `kind_boxes`;
 | 
					DELETE FROM `kind_boxes`;
 | 
				
			||||||
		Loading…
	
		Reference in New Issue