package JUnit; import static org.junit.Assert.*; import java.io.IOException; import java.net.UnknownHostException; import org.junit.Test; import protocol.ProtoHead; import protocol.Data.ChatData.ChatItem; import protocol.Data.GroupData.GroupItem; import protocol.Msg.ChangeGroupMsg.ChangeGroupReq; import protocol.Msg.ChangeGroupMsg.ChangeGroupReq.ChangeType; import protocol.Msg.ChangeGroupMsg.ChangeGroupRsp; import protocol.Msg.ChangeGroupMsg.ChangeGroupSync; import protocol.Msg.LoginMsg.LoginRsp; import protocol.Msg.LogoutMsg.LogoutRsp; import protocol.Msg.ReceiveChatMsg.ReceiveChatSync; import server.NetworkPacket; import tools.DataTypeTranslater; /** * 对“修改群聊用户”功能的测试 * * @author Feng * */ public class TestChangeGroup { private ChangeGroupRsp sendRequest(ClientSocket clientSocket, ChangeGroupReq.Builder builder) throws IOException { clientSocket.writeToServer(NetworkPacket.packMessage(ProtoHead.ENetworkMessage.CHANGE_GROUP_REQ_VALUE, builder.build() .toByteArray())); byte[] byteArray = clientSocket.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.CHANGE_GROUP_RSP); return ChangeGroupRsp.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)); } /** * 测试添加新用户(无权限) * * @author Feng * @throws IOException * @throws UnknownHostException */ // @Test public void addMember1() throws UnknownHostException, IOException { String groupId = "13"; ClientSocket clientSocket1 = new ClientSocket(); ChangeGroupReq.Builder builder = ChangeGroupReq.newBuilder(); builder.setChangeType(ChangeType.ADD); builder.setGroupId(groupId); builder.addUserId("d"); builder.addUserId("e"); // 无权限添加 ChangeGroupRsp response = sendRequest(clientSocket1, builder); assertEquals(response.getResultCode(), ChangeGroupRsp.ResultCode.NO_AUTHORITY); clientSocket1.close(); } /** * 测试添加新用户(有权限,成功) * * @author Feng * @throws IOException * @throws UnknownHostException */ // @Test public void addMember2() throws UnknownHostException, IOException { String groupId = "13", user1 = "b", user2 = "c"; ClientSocket clientSocket1 = new ClientSocket(); ClientSocket clientSocket2 = new ClientSocket(); ChangeGroupReq.Builder builder = ChangeGroupReq.newBuilder(); builder.setChangeType(ChangeType.ADD); builder.setGroupId(groupId); builder.addUserId("d"); builder.addUserId("e"); // 登陆 assertEquals(clientSocket1.login(user1, user1), LoginRsp.ResultCode.SUCCESS); assertEquals(clientSocket2.login(user2, user2), LoginRsp.ResultCode.SUCCESS); System.out.println(user1 + " , " + user2 + " Login Over!"); // 发送增加成员请求 ChangeGroupRsp response = sendRequest(clientSocket1, builder); assertEquals(response.getResultCode(), ChangeGroupRsp.ResultCode.SUCCESS); // user1 接收同步数据(CHANGE_GROUP_SYNC)包 byte[] byteArray = clientSocket1.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.CHANGE_GROUP_SYNC); assertNotNull(byteArray); ChangeGroupSync sync = ChangeGroupSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)); GroupItem groupItem = sync.getGroupItem(); // log System.out.println("CHANGE_GROUP_SYNC : " + user1 + " : " + ClientSocket.getGroupItemInfo(groupItem)); // user2上线收消息 // 收取群数据更新 byteArray = clientSocket2.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.CHANGE_GROUP_SYNC); assertNotNull(byteArray); sync = ChangeGroupSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)); groupItem = sync.getGroupItem(); // log System.out.println("CHANGE_GROUP_SYNC : " + user2 + " : " + ClientSocket.getGroupItemInfo(groupItem)); byteArray = clientSocket2.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.RECEIVE_CHAT_SYNC); ReceiveChatSync receiveChatting = ReceiveChatSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)); ChatItem chatItem2 = receiveChatting.getChatData(0); // 收到群聊消息(A 我已经把 B,C 拉入群聊) System.out.println("RECEIVE_CHAT_SYNC : " + user2 + " : " + ClientSocket.getChatItemInfo(chatItem2)); clientSocket1.close(); clientSocket2.close(); } /** * 测试删除群聊成员(无权限 * * @throws UnknownHostException * @throws IOException * @author Feng */ // @Test public void deleteMember1() throws UnknownHostException, IOException { String groupId = "13"; ClientSocket clientSocket1 = new ClientSocket(); ChangeGroupReq.Builder builder = ChangeGroupReq.newBuilder(); builder.setChangeType(ChangeType.DELETE); builder.setGroupId(groupId); // builder.addUserId("d"); // builder.addUserId("e"); clientSocket1.writeToServer(NetworkPacket.packMessage(ProtoHead.ENetworkMessage.CHANGE_GROUP_REQ_VALUE, builder.build() .toByteArray())); // 未登录,无权限 ChangeGroupRsp response = sendRequest(clientSocket1, builder); assertEquals(response.getResultCode(), ChangeGroupRsp.ResultCode.NO_AUTHORITY); System.out.println(response.getResultCode().toString()); clientSocket1.close(); } /** * 测试删除群聊成员 * * @throws UnknownHostException * @throws IOException * @author Feng */ // @Test public void deleteMember2() throws UnknownHostException, IOException { String groupId = "13"; String user1 = "d", user2 = "a"; ClientSocket clientSocket1 = new ClientSocket(); ClientSocket clientSocket2 = new ClientSocket(); ChangeGroupReq.Builder builder = ChangeGroupReq.newBuilder(); builder.setChangeType(ChangeType.DELETE); builder.setGroupId(groupId); // builder.addUserId("d"); // builder.addUserId("e"); // 登陆 assertEquals(clientSocket1.login(user1, user1), LoginRsp.ResultCode.SUCCESS); assertEquals(clientSocket2.login(user2, user2), LoginRsp.ResultCode.SUCCESS); System.out.println(user1 + " , " + user2 + " login"); // 请求自删 ChangeGroupRsp response = sendRequest(clientSocket1, builder); assertEquals(response.getResultCode(), ChangeGroupRsp.ResultCode.SUCCESS); // user2上线收消息 byte[] byteArray = clientSocket2.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.CHANGE_GROUP_SYNC); assertNotNull(byteArray); ChangeGroupSync sync = ChangeGroupSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)); System.out.println("CHANGE_GROUP_SYNC : " + user2 + " : " + ClientSocket.getGroupItemInfo(sync.getGroupItem())); // 获取user1的系统退出消息 byteArray = clientSocket2.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.RECEIVE_CHAT_SYNC); assertNotNull(byteArray); ChatItem chatItem = ReceiveChatSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)).getChatData(0); System.out.println("CHANGE_GROUP_SYNC : " + user2 + " : " + ClientSocket.getChatItemInfo(chatItem)); clientSocket1.close(); clientSocket2.close(); } /** * 无权限修改群数据 * * @author Feng * @throws IOException * @throws UnknownHostException */ // @Test public void reviseGroupInfo1() throws UnknownHostException, IOException { String groupId = "13"; ClientSocket clientSocket1 = new ClientSocket(); ChangeGroupReq.Builder builder = ChangeGroupReq.newBuilder(); builder.setChangeType(ChangeType.UPDATE_INFO); builder.setGroupId(groupId); builder.setGroupName("Fucking"); // 无权限添加 ChangeGroupRsp response = sendRequest(clientSocket1, builder); assertEquals(response.getResultCode(), ChangeGroupRsp.ResultCode.NO_AUTHORITY); clientSocket1.close(); } /** * 有权限修改群数据 * * @author Feng * @throws IOException * @throws UnknownHostException */ @Test public void reviseGroupInfo2() throws UnknownHostException, IOException { String groupId = "13"; String user1 = "a", user2 = "b"; ClientSocket clientSocket1 = new ClientSocket(); ClientSocket clientSocket2 = new ClientSocket(); ChangeGroupReq.Builder builder = ChangeGroupReq.newBuilder(); builder.setChangeType(ChangeType.UPDATE_INFO); builder.setGroupId(groupId); builder.setGroupName("Fucking"); // 登陆 // assertEquals(clientSocket2.login(user1, user1), LoginRsp.ResultCode.SUCCESS); assertEquals(clientSocket1.login(user1, user1), LoginRsp.ResultCode.SUCCESS); assertEquals(clientSocket2.login(user2, user2), LoginRsp.ResultCode.SUCCESS); System.out.println(user1 + " , " + user2 + " login"); // 请求修改 ChangeGroupRsp response = sendRequest(clientSocket1, builder); assertEquals(response.getResultCode(), ChangeGroupRsp.ResultCode.SUCCESS); System.out.println("请求完毕!"); // user1上线收同步数据包 byte[] byteArray = clientSocket1.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.CHANGE_GROUP_SYNC); assertNotNull(byteArray); ChangeGroupSync sync = ChangeGroupSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)); System.out.println("CHANGE_GROUP_SYNC : " + user1 + " : " + ClientSocket.getGroupItemInfo(sync.getGroupItem())); // user2上线收同步数据包 byteArray = clientSocket2.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.CHANGE_GROUP_SYNC); assertNotNull(byteArray); sync = ChangeGroupSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)); System.out.println("CHANGE_GROUP_SYNC : " + user2 + " : " + ClientSocket.getGroupItemInfo(sync.getGroupItem())); // 获取系统消息 byteArray = clientSocket2.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.RECEIVE_CHAT_SYNC); assertNotNull(byteArray); ChatItem chatItem = ReceiveChatSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)).getChatData(0); System.out.println("CHANGE_GROUP_SYNC : " + user2 + " : " + ClientSocket.getChatItemInfo(chatItem)); clientSocket1.close(); clientSocket2.close(); } }