Skip to content

Commit 38b6a3c

Browse files
liebmandevyte
authored andcommitted
use OrderedDict to force order of get params (#5414)
refactor to share request handler code in tests
1 parent 0db6ec4 commit 38b6a3c

File tree

2 files changed

+25
-40
lines changed

2 files changed

+25
-40
lines changed

tests/device/test_http_server/test_http_server.ino

+23-39
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ static ESP8266WebServer server(80);
1111
static uint32_t siteHits = 0;
1212
static String siteData = "";
1313

14+
1415
void setup()
1516
{
1617
Serial.begin(115200);
@@ -26,21 +27,27 @@ void setup()
2627
BS_RUN(Serial);
2728
}
2829

30+
void handle_request()
31+
{
32+
for (uint8_t i=0; i<server.args(); i++){
33+
// skip "plain" which is automatically added during arg parsing for post's
34+
if (server.argName(i) == "plain")
35+
continue;
36+
if(i > 0)
37+
siteData += "\n";
38+
siteData += server.argName(i) + " = " + server.arg(i);
39+
}
40+
siteHits++;
41+
server.send(200, "text/plain", siteData);
42+
}
43+
2944

3045
TEST_CASE("HTTP GET Parameters", "[HTTPServer]")
3146
{
3247
{
3348
siteHits = 0;
34-
server.on("/get", HTTP_GET, [](){
35-
siteData = "";
36-
for (uint8_t i=0; i<server.args(); i++){
37-
if(i > 0)
38-
siteData += "\n";
39-
siteData += server.argName(i) + " = " + server.arg(i);
40-
}
41-
siteHits++;
42-
server.send(200, "text/plain", siteData);
43-
});
49+
siteData = "";
50+
server.on("/get", HTTP_GET, &handle_request);
4451
uint32_t startTime = millis();
4552
while(siteHits == 0 && (millis() - startTime) < 10000)
4653
server.handleClient();
@@ -52,16 +59,8 @@ TEST_CASE("HTTP POST Parameters", "[HTTPServer]")
5259
{
5360
{
5461
siteHits = 0;
55-
server.on("/post", HTTP_POST, [](){
56-
siteData = "";
57-
for (uint8_t i=0; i<server.args(); i++){
58-
if(i > 0)
59-
siteData += "\n";
60-
siteData += server.argName(i) + " = " + server.arg(i);
61-
}
62-
siteHits++;
63-
server.send(200, "text/plain", siteData);
64-
});
62+
siteData = "";
63+
server.on("/post", HTTP_POST, &handle_request);
6564
uint32_t startTime = millis();
6665
while(siteHits == 0 && (millis() - startTime) < 10000)
6766
server.handleClient();
@@ -73,16 +72,8 @@ TEST_CASE("HTTP GET+POST Parameters", "[HTTPServer]")
7372
{
7473
{
7574
siteHits = 0;
76-
server.on("/get_and_post", HTTP_POST, [](){
77-
siteData = "";
78-
for (uint8_t i=0; i<server.args(); i++){
79-
if(i > 0)
80-
siteData += "\n";
81-
siteData += server.argName(i) + " = " + server.arg(i);
82-
}
83-
siteHits++;
84-
server.send(200, "text/plain", siteData);
85-
});
75+
siteData = "";
76+
server.on("/get_and_post", HTTP_POST, &handle_request);
8677
uint32_t startTime = millis();
8778
while(siteHits == 0 && (millis() - startTime) < 10000)
8879
server.handleClient();
@@ -94,15 +85,8 @@ TEST_CASE("HTTP Upload", "[HTTPServer]")
9485
{
9586
{
9687
siteHits = 0;
97-
server.on("/upload", HTTP_POST, [](){
98-
for (uint8_t i=0; i<server.args(); i++){
99-
if(i > 0)
100-
siteData += "\n";
101-
siteData += server.argName(i) + " = " + server.arg(i);
102-
}
103-
siteHits++;
104-
server.send(200, "text/plain", siteData);
105-
}, [](){
88+
siteData = "";
89+
server.on("/upload", HTTP_POST, &handle_request, [](){
10690
HTTPUpload& upload = server.upload();
10791
if(upload.status == UPLOAD_FILE_START){
10892
siteData = upload.filename;

tests/device/test_http_server/test_http_server.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from collections import OrderedDict
12
from mock_decorators import setup, teardown
23
from threading import Thread
34
from poster.encode import MultipartParam
@@ -24,7 +25,7 @@ def http_test(res, url, get=None, post=None):
2425
@setup('HTTP GET Parameters')
2526
def setup_http_get_params(e):
2627
def testRun():
27-
return http_test('var1 = val with spaces\nva=r+ = so&me%', 'http://etd.local/get', {'var1' : 'val with spaces', 'va=r+' : 'so&me%'})
28+
return http_test('var1 = val with spaces\nva=r+ = so&me%', 'http://etd.local/get', OrderedDict([('var1', 'val with spaces'), ('va=r+', 'so&me%')]))
2829
Thread(target=testRun).start()
2930

3031
@teardown('HTTP GET Parameters')

0 commit comments

Comments
 (0)