Пример #1
0
		public void Teardown()
		{
			handler = null;
			server = null;
			observer = null;
			context = null;
		}
Пример #2
0
		public void KickUserFromServer()
		{
			var cs = provider.GetConnections (GablarskiProtocol.Instance);
			var s = new ServerConnectionBuffer (cs.Item2);
			var c = new ConnectionBuffer (cs.Item1);

			var admin = JoinAsGuest (s, c, "admin");
			client.DequeueAndAssertMessage<UserJoinedMessage>();
			permissions.EnablePermissions (admin.UserId, PermissionName.KickPlayerFromServer);
			
			var target = JoinAsGuest (server, client, "target");
			c.DequeueAndAssertMessage<UserJoinedMessage>();

			handler.OnKickUserMessage (new MessageEventArgs<KickUserMessage> (s,
				new KickUserMessage (target, true)));

			var kicked = client.DequeueAndAssertMessage<UserKickedMessage>();
			Assert.AreEqual (target.UserId, kicked.UserId);
			Assert.AreEqual (true, kicked.FromServer);

			kicked = c.DequeueAndAssertMessage<UserKickedMessage>();
			Assert.AreEqual (target.UserId, kicked.UserId);
			Assert.AreEqual (true, kicked.FromServer);

			Assert.AreEqual (target.UserId, c.DequeueAndAssertMessage<UserDisconnectedMessage>().UserId);
		}
Пример #3
0
		public void Setup()
		{
			permissions = new MockPermissionsProvider();
			users = new MockUserProvider();

			provider = new MockConnectionProvider (GablarskiProtocol.Instance);

			context = new MockServerContext (provider)
			{
				Settings = new ServerSettings(),
				UserProvider = users,
				PermissionsProvider = permissions,
				ChannelsProvider = new LobbyChannelProvider(),
			};

			context.Sources = new ServerSourceHandler (context, new ServerSourceManager (context));
			context.Channels = new ServerChannelHandler (context);
			context.UserManager = new ServerUserManager();
			context.Users = handler = new ServerUserHandler (context, context.UserManager);

			context.Start();

			var cs = provider.GetConnections (GablarskiProtocol.Instance);
			server = new ServerConnectionBuffer (cs.Item2);
			client = new ConnectionBuffer (cs.Item1);

			var observers = provider.GetConnections (GablarskiProtocol.Instance);
			sobserver = observers.Item2;
			observer = new ConnectionBuffer (observers.Item1);
		}
Пример #4
0
		public void KickUserFromChannel()
		{
			var cs = provider.GetConnections (GablarskiProtocol.Instance);
			var s = new ServerConnectionBuffer (cs.Item2);
			var c = new ConnectionBuffer (cs.Item1);

			var admin = JoinAsGuest (s, c, "admin");
			client.DequeueAndAssertMessage<UserJoinedMessage>();
			permissions.EnablePermissions (admin.UserId, PermissionName.KickPlayerFromChannel);
			
			var target = JoinAsGuest (server, client, "target");
			c.DequeueAndAssertMessage<UserJoinedMessage>();
			
			IChannelInfo altChannel = new ChannelInfo { Name = "Channel 2" };
			context.ChannelsProvider.SaveChannel (altChannel);
			c.DequeueAndAssertMessage<ChannelListMessage>();
			client.DequeueAndAssertMessage<ChannelListMessage>();
			altChannel = context.ChannelsProvider.GetChannels().Single (ch => ch.Name == "Channel 2");
			handler.Move (target, altChannel);
			var moved = client.DequeueAndAssertMessage<UserChangedChannelMessage>();
			Assert.AreEqual (altChannel.ChannelId, moved.ChangeInfo.TargetChannelId);
			Assert.AreEqual (target.UserId, moved.ChangeInfo.TargetUserId);

			handler.OnKickUserMessage (new MessageEventArgs<KickUserMessage> (s,
				new KickUserMessage (target, false)));

			var kicked = client.DequeueAndAssertMessage<UserKickedMessage>();
			Assert.AreEqual (target.UserId, kicked.UserId);
			Assert.AreEqual (false, kicked.FromServer);

			moved = client.DequeueAndAssertMessage<UserChangedChannelMessage>();
			Assert.AreEqual (context.ChannelsProvider.DefaultChannel.ChannelId, moved.ChangeInfo.TargetChannelId);
			Assert.AreEqual (target.UserId, moved.ChangeInfo.TargetUserId);
		}