package JUnit;
import static org.junit.Assert.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import org.junit.Before;
import org.junit.Test;
import protocol.ProtoHead;
import protocol.Msg.RegisterMsg;
import protocol.Msg.PersonalSettingsMsg.PersonalSettingsRsp;
import protocol.Msg.RegisterMsg.RegisterRsp;
import server.NetworkPacket;
import client.SocketClientTest;
/**
* 对注册功能的测试(要先开服务器)
* @author Feng
*
*/
public class TestRegister {
// String host = "192.168.45.11"; // 要连接的服务端IP地址
// String host = "192.168.45.34"; // 要连接的服务端IP地址
// int port = 8080; // 要连接的服务端对应的监听端口
//
// public Socket socket;
// public InputStream inputStream;
// public OutputStream outputStream;
// public SocketClientTest client;
//
// @Before
// public void init() throws UnknownHostException, IOException {
// client = new SocketClientTest();
// client.link();
// }
//
// private void link() throws IOException {
// socket = new Socket(host, port);
// inputStream = socket.getInputStream();
// outputStream = socket.getOutputStream();
// }
/**
* 测试注册功能(由JUnit调用)
*
* @author Feng
* @return
* @throws IOException
*/
private RegisterRsp.ResultCode testRegister_JUint(ClientSocket client, String userId, String userPassword, String userName) throws IOException {
RegisterMsg.RegisterReq.Builder builder = RegisterMsg.RegisterReq.newBuilder();
builder.setUserId(userId);
builder.setUserPassword(userPassword);
builder.setUserName(userName);
byte[] byteArray = NetworkPacket.packMessage(ProtoHead.ENetworkMessage.REGISTER_REQ.getNumber(), builder.build()
.toByteArray());
client.writeToServer(byteArray);
for (int i=0; i<10; i++) {
byteArray = client.readFromServerWithoutKeepAlive();
System.out.println(NetworkPacket.getMessageType(byteArray).toString());
if (NetworkPacket.getMessageType(byteArray) != ProtoHead.ENetworkMessage.REGISTER_RSP)
continue;
return RegisterRsp.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)).getResultCode();
}
return RegisterRsp.ResultCode.USER_EXIST;
}
/**
* 测试注册功能
*
* @author Feng
* @throws IOException
*/
@Test
public void testRegister() throws IOException {
ClientSocket client = new ClientSocket();
// String randomData = (((int) (Math.random() * 100000)) + "").substring(0, 5);
String randomData = "AutoResponse";
RegisterRsp.ResultCode resultCode = testRegister_JUint(client, randomData, randomData, randomData);
assertEquals(RegisterMsg.RegisterRsp.ResultCode.SUCCESS, resultCode);
resultCode = testRegister_JUint(client, randomData, randomData, randomData);
assertEquals(RegisterMsg.RegisterRsp.ResultCode.USER_EXIST, resultCode);
client.close();
}
}