1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-06 03:03:05 +08:00

Update test room manager to not return passwords

This commit is contained in:
smoogipoo 2021-07-19 19:55:08 +09:00
parent c6bc95767d
commit 063f14da98
2 changed files with 37 additions and 22 deletions

View File

@ -9,23 +9,23 @@ namespace osu.Game.Online.Rooms
{ {
public class JoinRoomRequest : APIRequest public class JoinRoomRequest : APIRequest
{ {
private readonly Room room; public readonly Room Room;
private readonly string password; public readonly string Password;
public JoinRoomRequest(Room room, string password) public JoinRoomRequest(Room room, string password)
{ {
this.room = room; Room = room;
this.password = password; Password = password;
} }
protected override WebRequest CreateWebRequest() protected override WebRequest CreateWebRequest()
{ {
var req = base.CreateWebRequest(); var req = base.CreateWebRequest();
req.Method = HttpMethod.Put; req.Method = HttpMethod.Put;
req.AddParameter("password", password); req.AddParameter("password", Password);
return req; return req;
} }
protected override string Target => $"rooms/{room.RoomID.Value}/users/{User.Id}"; protected override string Target => $"rooms/{Room.RoomID.Value}/users/{User.Id}";
} }
} }

View File

@ -45,21 +45,33 @@ namespace osu.Game.Tests.Visual.Multiplayer
switch (req) switch (req)
{ {
case CreateRoomRequest createRoomRequest: case CreateRoomRequest createRoomRequest:
var createdRoom = new APICreatedRoom(); var apiRoom = new Room();
createdRoom.CopyFrom(createRoomRequest.Room); apiRoom.CopyFrom(createRoomRequest.Room);
createdRoom.RoomID.Value ??= currentRoomId++; apiRoom.RoomID.Value ??= currentRoomId++;
for (int i = 0; i < apiRoom.Playlist.Count; i++)
apiRoom.Playlist[i].ID = currentPlaylistItemId++;
for (int i = 0; i < createdRoom.Playlist.Count; i++) var responseRoom = new APICreatedRoom();
createdRoom.Playlist[i].ID = currentPlaylistItemId++; responseRoom.CopyFrom(createResponseRoom(apiRoom, false));
Rooms.Add(createdRoom); Rooms.Add(apiRoom);
createRoomRequest.TriggerSuccess(createdRoom); createRoomRequest.TriggerSuccess(responseRoom);
return true; return true;
case JoinRoomRequest joinRoomRequest: case JoinRoomRequest joinRoomRequest:
{
var room = Rooms.Single(r => r.RoomID.Value == joinRoomRequest.Room.RoomID.Value);
if (joinRoomRequest.Password != room.Password.Value)
{
joinRoomRequest.TriggerFailure(new InvalidOperationException("Invalid password."));
return true;
}
joinRoomRequest.TriggerSuccess(); joinRoomRequest.TriggerSuccess();
return true; return true;
}
case PartRoomRequest partRoomRequest: case PartRoomRequest partRoomRequest:
partRoomRequest.TriggerSuccess(); partRoomRequest.TriggerSuccess();
@ -69,20 +81,13 @@ namespace osu.Game.Tests.Visual.Multiplayer
var roomsWithoutParticipants = new List<Room>(); var roomsWithoutParticipants = new List<Room>();
foreach (var r in Rooms) foreach (var r in Rooms)
{ roomsWithoutParticipants.Add(createResponseRoom(r, false));
var newRoom = new Room();
newRoom.CopyFrom(r);
newRoom.RecentParticipants.Clear();
roomsWithoutParticipants.Add(newRoom);
}
getRoomsRequest.TriggerSuccess(roomsWithoutParticipants); getRoomsRequest.TriggerSuccess(roomsWithoutParticipants);
return true; return true;
case GetRoomRequest getRoomRequest: case GetRoomRequest getRoomRequest:
getRoomRequest.TriggerSuccess(Rooms.Single(r => r.RoomID.Value == getRoomRequest.RoomId)); getRoomRequest.TriggerSuccess(createResponseRoom(Rooms.Single(r => r.RoomID.Value == getRoomRequest.RoomId), true));
return true; return true;
case GetBeatmapSetRequest getBeatmapSetRequest: case GetBeatmapSetRequest getBeatmapSetRequest:
@ -118,6 +123,16 @@ namespace osu.Game.Tests.Visual.Multiplayer
}; };
} }
private Room createResponseRoom(Room room, bool withParticipants)
{
var responseRoom = new Room();
responseRoom.CopyFrom(room);
responseRoom.Password.Value = null;
if (!withParticipants)
responseRoom.RecentParticipants.Clear();
return responseRoom;
}
public new void ClearRooms() => base.ClearRooms(); public new void ClearRooms() => base.ClearRooms();
public new void Schedule(Action action) => base.Schedule(action); public new void Schedule(Action action) => base.Schedule(action);