Skip to content

Commit 7e621eb

Browse files
Add votes log tests
1 parent d284ce4 commit 7e621eb

File tree

3 files changed

+93
-7
lines changed

3 files changed

+93
-7
lines changed

internal/test/main_test.go

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import (
4949

5050
var (
5151
container *postgresContainer
52+
testServer domain.Server
5253
configUC domain.ConfigUsecase
5354
wikiUC domain.WikiUsecase
5455
personUC domain.PersonUsecase
@@ -72,6 +73,7 @@ var (
7273
serversUC domain.ServersUsecase
7374
stateUC domain.StateUsecase
7475
votesUC domain.VoteUsecase
76+
votesRepo domain.VoteRepository
7577
wordFilterUC domain.WordFilterUsecase
7678
)
7779

@@ -135,10 +137,34 @@ func TestMain(m *testing.M) {
135137

136138
matchUC = match.NewMatchUsecase(match.NewMatchRepository(eventBroadcaster, databaseConn, personUC, serversUC, discordUC, stateUC, weaponsMap), stateUC, serversUC, discordUC)
137139
chatUC = chat.NewChatUsecase(configUC, chat.NewChatRepository(databaseConn, personUC, wordFilterUC, matchUC, eventBroadcaster), wordFilterUC, stateUC, banSteamUC, personUC, discordUC)
138-
votesUC = votes.NewVoteUsecase(votes.NewVoteRepository(databaseConn), personUC, matchUC, discordUC, configUC, eventBroadcaster)
140+
votesRepo = votes.NewVoteRepository(databaseConn)
141+
votesUC = votes.NewVoteUsecase(votesRepo, personUC, matchUC, discordUC, configUC, eventBroadcaster)
139142

140143
container = dbContainer
141144

145+
server, errServer := serversUC.Save(context.Background(), domain.RequestServerUpdate{
146+
ServerName: stringutil.SecureRandomString(20),
147+
ServerNameShort: stringutil.SecureRandomString(5),
148+
Host: "1.2.3.4",
149+
Port: 27015,
150+
ReservedSlots: 8,
151+
Password: stringutil.SecureRandomString(8),
152+
RCON: stringutil.SecureRandomString(8),
153+
Lat: 10,
154+
Lon: 10,
155+
CC: "de",
156+
Region: "eu",
157+
IsEnabled: true,
158+
EnableStats: false,
159+
LogSecret: 23456789,
160+
})
161+
162+
if errServer != nil {
163+
panic(errStore)
164+
}
165+
166+
testServer = server
167+
142168
m.Run()
143169
}
144170

@@ -159,6 +185,7 @@ func testRouter() *gin.Engine {
159185
steamgroup.NewSteamgroupHandler(router, banGroupUC, authUC)
160186
news.NewNewsHandler(router, newsUC, discordUC, authUC)
161187
wiki.NewWIkiHandler(router, wikiUC, authUC)
188+
votes.NewVoteHandler(router, votesUC, authUC)
162189

163190
return router
164191
}

internal/test/servers_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ func TestServers(t *testing.T) {
1717

1818
var servers []domain.Server
1919
testEndpointWithReceiver(t, router, http.MethodGet, "/api/servers_admin", nil, http.StatusOK, owner, &servers)
20-
require.Empty(t, servers)
20+
require.Len(t, servers, 1)
2121

2222
var safeServers []domain.ServerInfoSafe
2323
testEndpointWithReceiver(t, router, http.MethodGet, "/api/servers", nil, http.StatusOK, user, &safeServers)
24-
require.Empty(t, servers)
24+
require.Len(t, safeServers, 1)
2525

2626
newServer := domain.RequestServerUpdate{
2727
ServerName: "test-1 long",
@@ -59,10 +59,10 @@ func TestServers(t *testing.T) {
5959
require.Equal(t, newServer.LogSecret, server.LogSecret)
6060

6161
testEndpointWithReceiver(t, router, http.MethodGet, "/api/servers_admin", nil, http.StatusOK, owner, &servers)
62-
require.NotEmpty(t, servers)
62+
require.Len(t, servers, 2)
6363

6464
testEndpointWithReceiver(t, router, http.MethodGet, "/api/servers", nil, http.StatusOK, user, &safeServers)
65-
require.NotEmpty(t, servers)
65+
require.Len(t, safeServers, 2)
6666

6767
update := domain.RequestServerUpdate{
6868
ServerName: "test-2 long",
@@ -119,14 +119,14 @@ func TestServersPermissions(t *testing.T) {
119119
levels: admin,
120120
},
121121
{
122-
path: "/api/servers/:server_id",
122+
path: "/api/servers/1",
123123
method: http.MethodDelete,
124124
code: http.StatusForbidden,
125125
levels: admin,
126126
},
127127
{
128128
path: "/api/servers_admin",
129-
method: http.MethodPost,
129+
method: http.MethodGet,
130130
code: http.StatusForbidden,
131131
levels: admin,
132132
},

internal/test/votes_test.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package test_test
2+
3+
import (
4+
"context"
5+
"net/http"
6+
"testing"
7+
"time"
8+
9+
"github.com/leighmacdonald/gbans/internal/domain"
10+
"github.com/leighmacdonald/gbans/pkg/logparse"
11+
"github.com/stretchr/testify/require"
12+
)
13+
14+
func TestVotes(t *testing.T) {
15+
t.Parallel()
16+
17+
router := testRouter()
18+
source := getUser()
19+
target := getUser()
20+
moderator := loginUser(getModerator())
21+
22+
var results domain.LazyResult
23+
req := domain.VoteQueryFilter{
24+
Success: -1,
25+
}
26+
testEndpointWithReceiver(t, router, http.MethodPost, "/api/votes", req, http.StatusOK, moderator, &results)
27+
require.Empty(t, results.Data)
28+
29+
require.NoError(t, votesRepo.AddResult(context.Background(), domain.VoteResult{
30+
SourceID: source.SteamID,
31+
SourceName: source.PersonaName,
32+
SourceAvatarHash: source.AvatarHash,
33+
TargetID: target.SteamID,
34+
TargetName: target.PersonaName,
35+
TargetAvatarHash: target.AvatarHash,
36+
Name: "kick",
37+
Success: false,
38+
ServerID: testServer.ServerID,
39+
ServerName: testServer.ShortName,
40+
Code: logparse.VoteCodeFailNoOutnumberYes,
41+
CreatedOn: time.Now(),
42+
}))
43+
44+
testEndpointWithReceiver(t, router, http.MethodPost, "/api/votes", req, http.StatusOK, moderator, &results)
45+
require.NotEmpty(t, results.Data)
46+
}
47+
48+
func TestVotesPermissions(t *testing.T) {
49+
t.Parallel()
50+
51+
testPermissions(t, testRouter(), []permTestValues{
52+
{
53+
path: "/api/votes",
54+
method: http.MethodPost,
55+
code: http.StatusForbidden,
56+
levels: moderators,
57+
},
58+
})
59+
}

0 commit comments

Comments
 (0)