Marco
d7c4f28f3a
Had to add several helpers (e.g. passphrase ones) to make the endpoint for getting lobby id work. Moved all handler functions into handler package. Added test for getting lobby from passphrase.
58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
package handler
|
|
|
|
import (
|
|
"encoding/json"
|
|
"mchess_server/api"
|
|
"mchess_server/utils"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/google/uuid"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_GetLobbyFromPassphraseHandler(t *testing.T) {
|
|
var passphraseURLParameter string
|
|
var hostedLobbyId uuid.UUID
|
|
|
|
t.Run("host a lobby", func(t *testing.T) {
|
|
r1 := httptest.NewRecorder()
|
|
ctx1, e1 := gin.CreateTestContext(r1)
|
|
e1.GET("/api/hostPrivate", HostPrivateGameHandler)
|
|
hostGameRequest, _ := http.NewRequest("GET", "/api/hostPrivate", nil)
|
|
ctx1.Request = hostGameRequest
|
|
|
|
e1.ServeHTTP(r1, hostGameRequest)
|
|
|
|
playerInfo := api.PlayerInfo{}
|
|
err := json.Unmarshal(r1.Body.Bytes(), &playerInfo)
|
|
assert.NoError(t, err)
|
|
|
|
receivedPhrase := *playerInfo.Passphrase
|
|
hostedLobbyId = *playerInfo.LobbyID
|
|
|
|
passphrase := utils.NewPassphraseFromString(receivedPhrase)
|
|
passphraseURLParameter = passphrase.AsURLParam()
|
|
})
|
|
|
|
t.Run("see if the lobby can be fetched by using the passphrase", func(t *testing.T) {
|
|
r2 := httptest.NewRecorder()
|
|
ctx2, engine := gin.CreateTestContext(r2)
|
|
engine.GET("/api/getLobbyForPassphrase/:phrase", GetLobbyForPassphraseHandler)
|
|
|
|
url := "/api/getLobbyForPassphrase/" + passphraseURLParameter
|
|
getLobbyRequest, _ := http.NewRequest("GET", url, nil)
|
|
ctx2.Request = getLobbyRequest
|
|
|
|
engine.ServeHTTP(r2, getLobbyRequest)
|
|
|
|
lobbyInfo := api.LobbyInfo{}
|
|
err := json.Unmarshal(r2.Body.Bytes(), &lobbyInfo)
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, hostedLobbyId, *lobbyInfo.ID)
|
|
})
|
|
}
|