still working on telnet tester
This commit is contained in:
20
compare.txt
Normal file
20
compare.txt
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
telnet> Trying 127.0.0.1...
|
||||||
|
Connected to localhost.
|
||||||
|
Escape character is '^]'.
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Server: Webserv/0.1
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: text/html; charset=UTF-8
|
||||||
|
Content-Length: 193
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Le Webserv</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 style="text-align:center">Le index (˘ ͜ʖ˘)</h1>
|
||||||
|
<hr>
|
||||||
|
<p style="text-align:center">(˚3˚)</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -18,18 +18,6 @@ server {
|
|||||||
|
|
||||||
# something to do with /upload
|
# something to do with /upload
|
||||||
|
|
||||||
location /upload {
|
|
||||||
root ./www/test/;
|
|
||||||
index submit_form.html;
|
|
||||||
# upload_dir ./www/uploaded/;
|
|
||||||
# cgi_ext php;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /uploaded {
|
|
||||||
# autoindex on;
|
|
||||||
root ./www/uploaded/;
|
|
||||||
upload_dir ./www/uploaded/;
|
|
||||||
}
|
|
||||||
|
|
||||||
# location /srcs/cgi-bin/ {
|
# location /srcs/cgi-bin/ {
|
||||||
# root ./srcs/cgi-bin/;
|
# root ./srcs/cgi-bin/;
|
||||||
@@ -46,11 +34,6 @@ server {
|
|||||||
cgi_ext cpp php sh;
|
cgi_ext cpp php sh;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /cgi-bin {
|
|
||||||
root ./srcs/cgi-bin/;
|
|
||||||
cgi_ext cpp php sh;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /upload {
|
location /upload {
|
||||||
allow_methods POST;
|
allow_methods POST;
|
||||||
autoindex on;
|
autoindex on;
|
||||||
|
|||||||
20
expected_results/expected_path_test.txt
Normal file
20
expected_results/expected_path_test.txt
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
telnet> Trying 127.0.0.1...
|
||||||
|
Connected to localhost.
|
||||||
|
Escape character is '^]'.
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Server: Webserv/0.1
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: text/html; charset=UTF-8
|
||||||
|
Content-Length: 193
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Le Webserv</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 style="text-align:center">Le index (˘ ͜ʖ˘)</h1>
|
||||||
|
<hr>
|
||||||
|
<p style="text-align:center">(˚3˚)</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
51
main_test.sh
Executable file
51
main_test.sh
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
# import and run all tests
|
||||||
|
|
||||||
|
#test_files=("test_template.sh" "test_header.sh" "test_body.sh")
|
||||||
|
#test_files=("test_template.sh" "test_header.sh" "test_path.sh")
|
||||||
|
test_files=("test_path.sh")
|
||||||
|
|
||||||
|
|
||||||
|
test_all()
|
||||||
|
{
|
||||||
|
rm -rf telnet.out
|
||||||
|
rm -rf webserv.log
|
||||||
|
rm -rf compare.txt
|
||||||
|
rm -rf expected.txt
|
||||||
|
|
||||||
|
for i in "${test_files[@]}"
|
||||||
|
do
|
||||||
|
source $i
|
||||||
|
source telnet_test.sh
|
||||||
|
# echo $host $i
|
||||||
|
./webserv $config_file &>> webserv.log &
|
||||||
|
echo -e "${_GREEN}Running Telnet Test on '$test_name'${_END}"
|
||||||
|
sleep 1
|
||||||
|
# echo "$connect_to_telnet"
|
||||||
|
# run | telnet >> telnet.out
|
||||||
|
run | telnet > compare.txt
|
||||||
|
pkill webserv
|
||||||
|
echo -e "\n\n------\n" &>> webserv.log
|
||||||
|
|
||||||
|
|
||||||
|
# cat compare.txt
|
||||||
|
# cat $expected_result_file
|
||||||
|
DIFF=$(diff -q compare.txt $expected_result_file)
|
||||||
|
if [ "$DIFF" == "" ];
|
||||||
|
then
|
||||||
|
echo "Good diff"
|
||||||
|
else
|
||||||
|
diff compare.txt $expected_result_file
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat compare.txt >> telnet.out
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
test_all
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/07/23 16:08:00 by me #+# #+# */
|
/* Created: 2022/07/23 16:08:00 by me #+# #+# */
|
||||||
/* Updated: 2022/08/12 18:12:23 by lperrey ### ########.fr */
|
/* Updated: 2022/08/14 22:14:06 by erlazo ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -84,6 +84,12 @@ public:
|
|||||||
return (comp_lhs < comp_rhs); // right comparison ? not <= ?
|
return (comp_lhs < comp_rhs); // right comparison ? not <= ?
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool operator==(const LocationConfig& rhs) const
|
||||||
|
{
|
||||||
|
if (path.compare(rhs.path) == 0)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,18 @@ void ConfigParser::_post_processing(std::vector<ServerConfig> *servers)
|
|||||||
|
|
||||||
while (it_l != it->locations.end())
|
while (it_l != it->locations.end())
|
||||||
{
|
{
|
||||||
|
if (it_l->path[it_l->path.size() - 1] == '/'
|
||||||
|
&& it_l->path.size() > 1)
|
||||||
|
it_l->path.erase(it_l->path.size() - 1);
|
||||||
|
|
||||||
|
std::vector<LocationConfig>::const_iterator tmp = it_l + 1;
|
||||||
|
while (tmp != it->locations.end())
|
||||||
|
{
|
||||||
|
if (it_l->path == tmp->path)
|
||||||
|
throw std::invalid_argument("Duplicate locations in config file");
|
||||||
|
++tmp;
|
||||||
|
}
|
||||||
|
|
||||||
if (it_l->root == "")
|
if (it_l->root == "")
|
||||||
it_l->root = it->root;
|
it_l->root = it->root;
|
||||||
|
|
||||||
@@ -57,13 +69,6 @@ void ConfigParser::_post_processing(std::vector<ServerConfig> *servers)
|
|||||||
|
|
||||||
// nothing to be done for cgi_ext, error_pages, redirect
|
// nothing to be done for cgi_ext, error_pages, redirect
|
||||||
|
|
||||||
// if (eval_file_type(it_l->root) == IS_DIR
|
|
||||||
// && it_l->path[it_l->path.size() - 1] != '/')
|
|
||||||
// it_l->path.push_back('/');
|
|
||||||
if (it_l->path[it_l->path.size() - 1] == '/'
|
|
||||||
&& it_l->path.size() > 1)
|
|
||||||
it_l->path.erase(it_l->path.size() - 1);
|
|
||||||
|
|
||||||
++it_l;
|
++it_l;
|
||||||
}
|
}
|
||||||
std::sort(it->locations.begin(), it->locations.end());
|
std::sort(it->locations.begin(), it->locations.end());
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ int main(int ac, char **av)
|
|||||||
|
|
||||||
ConfigParser configParser(config.c_str());
|
ConfigParser configParser(config.c_str());
|
||||||
|
|
||||||
// configParser._print_content();
|
configParser._print_content();
|
||||||
|
|
||||||
// i don't love that servers has to be a pointer...
|
// i don't love that servers has to be a pointer...
|
||||||
std::vector<ServerConfig>* servers = configParser.parse();
|
std::vector<ServerConfig>* servers = configParser.parse();
|
||||||
@@ -29,7 +29,7 @@ int main(int ac, char **av)
|
|||||||
{
|
{
|
||||||
(void)0;
|
(void)0;
|
||||||
// std::cout << it->server_name << " ";
|
// std::cout << it->server_name << " ";
|
||||||
// it->print_all();
|
it->print_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ _WHITE='\033[37m'
|
|||||||
_END='\033[0m'
|
_END='\033[0m'
|
||||||
|
|
||||||
|
|
||||||
test_file=$1
|
#test_file=$1
|
||||||
source $test_file
|
#source $test_file
|
||||||
|
|
||||||
connect_to_telnet="open $host $port"
|
connect_to_telnet="open $host $port"
|
||||||
|
|
||||||
@@ -106,27 +106,26 @@ run_all()
|
|||||||
# This is where stuff is launched
|
# This is where stuff is launched
|
||||||
#######
|
#######
|
||||||
|
|
||||||
rm -rf test.log
|
#rm -rf telnet.out
|
||||||
rm -rf telnet.out
|
|
||||||
|
|
||||||
#./webserv $config_file 2>&1 > webserv.log & run_all
|
#./webserv $config_file 2>&1 > webserv.log & run_all
|
||||||
#./webserv $config_file 2>&1 > webserv.log &
|
#./webserv $config_file 2>&1 > webserv.log &
|
||||||
#./webserv $config_file &> /dev/null &
|
#./webserv $config_file &> /dev/null &
|
||||||
./webserv $config_file &> webserv.log &
|
|
||||||
#./webserv $config_file 1>&1 > webserv.log &
|
#./webserv $config_file 1>&1 > webserv.log &
|
||||||
|
|
||||||
|
#./webserv $config_file &> webserv.log &
|
||||||
|
|
||||||
#run_all
|
#run_all
|
||||||
#run_this_test
|
#run_this_test
|
||||||
|
|
||||||
echo -e "${_GREEN}Running Telnet Test on '$test_name'${_END}"
|
#echo -e "${_GREEN}Running Telnet Test on '$test_name'${_END}"
|
||||||
|
|
||||||
sleep 1
|
#sleep 1
|
||||||
|
|
||||||
run | telnet >> telnet.out
|
#run | telnet >> telnet.out
|
||||||
#run | telnet
|
#run | telnet
|
||||||
|
|
||||||
pkill webserv
|
#pkill webserv
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
55
test_header.sh
Normal file
55
test_header.sh
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
test_name="Header Test"
|
||||||
|
|
||||||
|
config_file="default.config"
|
||||||
|
port=4040
|
||||||
|
host="localhost"
|
||||||
|
|
||||||
|
paths=("/") # you can add many
|
||||||
|
#methods=("GET" "POST" "DELETE")
|
||||||
|
methods=("GET")
|
||||||
|
httpz=("HTTP/1.1")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# the parts we will send to webserv
|
||||||
|
|
||||||
|
|
||||||
|
# let main.sh handle the l1
|
||||||
|
|
||||||
|
l1="${methods[0]} ${paths[0]} ${httpz[0]}"
|
||||||
|
|
||||||
|
header="Host: $host\n"
|
||||||
|
header+="Nonsense: fu\n"
|
||||||
|
|
||||||
|
header_cycle=("Transfer-encoding: fu" "Content-encoding: fu")
|
||||||
|
|
||||||
|
#header+="Transfer-encoding: fu\n"
|
||||||
|
#header+="Content-endcoding: fu\n"
|
||||||
|
body=
|
||||||
|
|
||||||
|
|
||||||
|
run_this_test()
|
||||||
|
{
|
||||||
|
|
||||||
|
for i in "${header_cycle[@]}"
|
||||||
|
do
|
||||||
|
header_send="$header$i"
|
||||||
|
request="$l1\n$header_send\n$body\n"
|
||||||
|
{
|
||||||
|
echo "----- $test_name -----"
|
||||||
|
echo -e "$_RED$request$_END"
|
||||||
|
} >> telnet.out
|
||||||
|
echo -e "$request"
|
||||||
|
sleep 1
|
||||||
|
echo -e "\n\n" >> telnet.out
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# expected result...
|
||||||
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
|
|
||||||
config_file=...
|
|
||||||
port=...
|
|
||||||
|
|
||||||
# Host: ...
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# the correct response
|
|
||||||
...
|
|
||||||
49
test_path.sh
Normal file
49
test_path.sh
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
test_name="Path Test"
|
||||||
|
|
||||||
|
config_file="default.config"
|
||||||
|
port=4040
|
||||||
|
host="localhost"
|
||||||
|
|
||||||
|
#paths=("/" "/test" "/test/" "/list" "list" "/wrong") # you can add many
|
||||||
|
paths=("/") # you can add many
|
||||||
|
methods=("GET" "POST" "DELETE")
|
||||||
|
#methods=("GET")
|
||||||
|
httpz=("HTTP/1.1")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
l1="${methods[0]} ${paths[0]} ${httpz[0]}"
|
||||||
|
|
||||||
|
header="Host: $host"
|
||||||
|
body=
|
||||||
|
|
||||||
|
|
||||||
|
run_this_test()
|
||||||
|
{
|
||||||
|
|
||||||
|
for i in "${paths[@]}"
|
||||||
|
do
|
||||||
|
l1="${methods[0]} $i ${httpz[0]}"
|
||||||
|
request="$l1\n$header\n$body\n"
|
||||||
|
{
|
||||||
|
echo "----- $test_name -----"
|
||||||
|
echo -e "$_RED$request$_END"
|
||||||
|
} >> telnet.out
|
||||||
|
echo -e "$request"
|
||||||
|
sleep 1
|
||||||
|
echo -e "\n\n" >> telnet.out
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# expected result...
|
||||||
|
|
||||||
|
|
||||||
|
expected_result_file="./expected_results/expected_path_test.txt"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ httpz=("HTTP/1.1")
|
|||||||
|
|
||||||
# let main.sh handle the l1
|
# let main.sh handle the l1
|
||||||
|
|
||||||
l1="${methods[0]} ${paths[0]} ${https[0]}"
|
l1="${methods[0]} ${paths[0]} ${httpz[0]}"
|
||||||
|
|
||||||
header="Host: $host"
|
header="Host: $host"
|
||||||
body=
|
body=
|
||||||
@@ -40,6 +40,7 @@ run_this_test()
|
|||||||
# } 2>>&1
|
# } 2>>&1
|
||||||
# } &>> /dev/stdout
|
# } &>> /dev/stdout
|
||||||
echo -e "$request"
|
echo -e "$request"
|
||||||
|
# echo
|
||||||
sleep 1
|
sleep 1
|
||||||
# {
|
# {
|
||||||
# echo -e "\n------\n"
|
# echo -e "\n------\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user