package JUnit;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.io.IOException;
import java.net.UnknownHostException;
import org.junit.Test;
import protocol.ProtoHead;
import protocol.Msg.AddFriendMsg;
import protocol.Msg.AddFriendMsg.AddFriendRsp;
import protocol.Msg.LoginMsg.LoginRsp;
import server.NetworkPacket;
/**
* 对添加好友的测试
* @author wangfei
*
*/
public class TestAddFriend {
/**
* 测试添加好友
* @author wangfei
* @throws IOException
*/
@Test
public void testAddFriend() throws IOException{
System.out.println("TestAddFriend1:双方不是好友关系添加好友");
String user1="a3",password1="aa",friend1="a";
AddFriendRsp addFriendRsp1 = getResponse(user1,password1,friend1);
System.out.println("服务器返回结果:"+addFriendRsp1.getResultCode().toString());
assertEquals(addFriendRsp1.getResultCode().getNumber(), AddFriendRsp.ResultCode.SUCCESS_VALUE);
System.out.println("TestAddFriend2:双方已经是好友关系继续添加好友");
String user2="a",password2="a",friend2="newuser1";
AddFriendRsp addFriendRsp2 = getResponse(user2,password2,friend2);
System.out.println("服务器返回结果:"+addFriendRsp2.getResultCode().toString());
assertEquals(addFriendRsp2.getResultCode().getNumber(), AddFriendRsp.ResultCode.SUCCESS_VALUE);
System.out.println("TestAddFriend3:添加不存在的用户为好友");
String user3="newuser1",password3="123",friend3="ttttttt";
AddFriendRsp addFriendRsp3 = getResponse(user3,password3,friend3);
System.out.println("服务器返回结果:"+addFriendRsp3.getResultCode().toString());
assertEquals(addFriendRsp3.getResultCode().getNumber(), AddFriendRsp.ResultCode.FAIL_VALUE);
}
private AddFriendRsp getResponse(String user,String password,String friend) throws UnknownHostException, IOException{
ClientSocket clientSocket = new ClientSocket();
byte[] response;
// 登陆
if (clientSocket.login(user, password) != LoginRsp.ResultCode.SUCCESS)
fail("登陆结果错误!");
AddFriendMsg.AddFriendReq.Builder builder = AddFriendMsg.AddFriendReq.newBuilder();
builder.setFriendUserId(friend);
byte[] byteArray = NetworkPacket.packMessage(ProtoHead.ENetworkMessage.ADD_FRIEND_REQ.getNumber(), builder.build()
.toByteArray());
//发消息
clientSocket.writeToServer(byteArray);
//接收回复
while (true) {
response = clientSocket.readFromServerWithoutKeepAlive();
ProtoHead.ENetworkMessage type = NetworkPacket.getMessageType(response);
if(ProtoHead.ENetworkMessage.ADD_FRIEND_RSP != type)
continue;
AddFriendRsp addFriendRsp = AddFriendRsp.parseFrom(NetworkPacket.getMessageObjectBytes(response));
clientSocket.close();
return addFriendRsp;
}
}
}