93 lines
2.9 KiB
Java
93 lines
2.9 KiB
Java
package dev.peerat.backend.routes;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.BufferedWriter;
|
|
import java.io.File;
|
|
import java.io.FileReader;
|
|
import java.io.InputStreamReader;
|
|
import java.io.OutputStreamWriter;
|
|
import java.net.Socket;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import dev.peerat.framework.RequestType;
|
|
|
|
public class StateTestCase{
|
|
|
|
@Test
|
|
void main() throws Exception{
|
|
String host = "127.0.0.1";
|
|
int port = 80;
|
|
|
|
File dir = new File("./route-test/");
|
|
for(File cases : dir.listFiles()){
|
|
if(!cases.isDirectory()) continue;
|
|
List<File> responses = new ArrayList<>();
|
|
File dbsetup = null;
|
|
for(File file : cases.listFiles()){
|
|
if(file.getName().endsWith(".class")) dbsetup = file; else responses.add(file);
|
|
}
|
|
// Class<?> clazz = new URLClassLoader(new URL[]{cases.toURI().toURL()}).loadClass(dbsetup.getAbsolutePath().substring(cases.getAbsolutePath().length()+1).replace("/", ".").replace("\\", ".").replace(".class", ""));
|
|
//setup database with clazz
|
|
for(File file : responses){
|
|
StateCase state = new StateCase(file);
|
|
state.execute(host, port);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static class StateCase{
|
|
|
|
private String path;
|
|
private RequestType type;
|
|
private List<String> headers;
|
|
private String payload;
|
|
|
|
private int responseCode;
|
|
private List<String> responseHeaders;
|
|
private String responsePayload;
|
|
|
|
public StateCase(File file) throws Exception{
|
|
BufferedReader reader = new BufferedReader(new FileReader(file));
|
|
String line;
|
|
String payloadBuffer;
|
|
this.headers = new ArrayList<>();
|
|
this.responseHeaders = new ArrayList<>();
|
|
|
|
this.path = reader.readLine();
|
|
this.type = RequestType.valueOf(reader.readLine());
|
|
|
|
while(((line = reader.readLine() )!= null) && (!line.isEmpty())) headers.add(line);
|
|
|
|
payloadBuffer = "";
|
|
while(((line = reader.readLine() )!= null) && (!line.isEmpty())) payloadBuffer+=line;
|
|
this.payload = payloadBuffer;
|
|
|
|
this.responseCode = Integer.parseInt(reader.readLine());
|
|
while(((line = reader.readLine() )!= null) && (!line.isEmpty())) responseHeaders.add(line);
|
|
|
|
payloadBuffer = "";
|
|
while(((line = reader.readLine() )!= null) && (!line.isEmpty())) payloadBuffer+=line;
|
|
this.responsePayload = payloadBuffer;
|
|
}
|
|
|
|
public void execute(String host, int port) throws Exception{
|
|
Socket socket = new Socket(host, port);
|
|
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
|
|
writer.write(this.type.toString()+" "+path+" HTTP/1.1\n");
|
|
for(String header : headers) writer.write(header+"\n");
|
|
writer.write("\n");
|
|
if(payload != null) writer.write(payload+"\n");
|
|
writer.flush();
|
|
|
|
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
|
String line;
|
|
while((line = reader.readLine()) != null) System.out.println(line);
|
|
|
|
socket.close();
|
|
}
|
|
}
|
|
|
|
}
|