fix: coords translation - validate whether server exists
continuous-integration/drone/push Build is failing Details

This commit is contained in:
Dawid Wysokiński 2023-07-13 06:43:06 +02:00
parent 7ed3bbb0d4
commit 8eb7032689
Signed by: Kichiyaki
GPG Key ID: B5445E357FB8B892
4 changed files with 36 additions and 7 deletions

View File

@ -68,6 +68,20 @@ func (t *TWHelpHTTP) listServers(ctx context.Context, version string, params twh
}
func (t *TWHelpHTTP) GetOpenServer(ctx context.Context, versionCode, serverKey string) (domain.TWServer, error) {
server, err := t.GetServer(ctx, versionCode, serverKey)
if err != nil {
return domain.TWServer{}, err
}
if !server.Open {
return domain.TWServer{}, domain.TWServerNotFoundError{
VersionCode: versionCode,
Key: serverKey,
}
}
return server, nil
}
func (t *TWHelpHTTP) GetServer(ctx context.Context, versionCode, serverKey string) (domain.TWServer, error) {
server, err := t.client.GetServer(ctx, versionCode, serverKey)
if err != nil {
var apiErr twhelp.APIError
@ -79,12 +93,6 @@ func (t *TWHelpHTTP) GetOpenServer(ctx context.Context, versionCode, serverKey s
Key: serverKey,
}
}
if !server.Open {
return domain.TWServer{}, domain.TWServerNotFoundError{
VersionCode: versionCode,
Key: serverKey,
}
}
return t.convertServerToDomain(server), nil
}

View File

@ -15,6 +15,7 @@ type TWHelpService interface {
ListOpenServers(ctx context.Context, version string, offset, limit int32) ([]domain.TWServer, error)
ListClosedServers(ctx context.Context, version string, offset, limit int32) ([]domain.TWServer, error)
GetOpenServer(ctx context.Context, versionCode, serverKey string) (domain.TWServer, error)
GetServer(ctx context.Context, versionCode, serverKey string) (domain.TWServer, error)
GetTribeByID(ctx context.Context, versionCode, serverKey string, id int64) (domain.Tribe, error)
GetExistingTribeByTag(ctx context.Context, versionCode, serverKey, tribeTag string) (domain.Tribe, error)
ListTribesByTag(ctx context.Context, versionCode, serverKey string, tribeTags []string, offset, limit int32) ([]domain.Tribe, error)

View File

@ -34,6 +34,10 @@ func (v *Village) TranslateCoords(
return domain.TranslateVillageCoordsResult{}, domain.LessEqualThanError{Field: "page", Threshold: int(params.MaxPage())}
}
if _, err := v.twhelpSvc.GetServer(ctx, params.VersionCode(), params.ServerKey()); err != nil {
return domain.TranslateVillageCoordsResult{}, err
}
if err := v.repo.SaveTranslateCoordsParams(ctx, params); err != nil {
return domain.TranslateVillageCoordsResult{}, err
}

View File

@ -19,6 +19,13 @@ func TestVillage_TranslateCoords(t *testing.T) {
t.Run("OK", func(t *testing.T) {
t.Parallel()
server := domain.TWServer{
Key: "pl181",
URL: "https://pl181.plemiona.pl",
Open: true,
}
versionCode := server.Key[:2]
villages := []domain.Village{
{
X: 123,
@ -49,7 +56,7 @@ func TestVillage_TranslateCoords(t *testing.T) {
builderCoordsStr.WriteString(coords + " ")
}
params, err := domain.NewTranslateVillageCoordsParams("pl", "pl181", builderCoordsStr.String(), 2)
params, err := domain.NewTranslateVillageCoordsParams(versionCode, server.Key, builderCoordsStr.String(), 2)
require.NoError(t, err)
tests := []struct {
@ -121,6 +128,15 @@ func TestVillage_TranslateCoords(t *testing.T) {
return res, nil
})
twhelpSvc.GetServerCalls(func(ctx context.Context, versionCode string, serverKey string) (domain.TWServer, error) {
if versionCode != params.VersionCode() || serverKey != params.ServerKey() {
return domain.TWServer{}, domain.TWServerNotFoundError{
VersionCode: params.VersionCode(),
Key: params.ServerKey(),
}
}
return server, nil
})
res, err := service.NewVillage(&mock.FakeVillageRepository{}, twhelpSvc).
TranslateCoords(context.Background(), params, tt.page)