Lines 412-426
BOOST_AUTO_TEST_CASE( blank_consume ) {
Link Here
|
412 |
|
412 |
|
413 |
std::string raw; |
413 |
std::string raw; |
414 |
|
414 |
|
415 |
bool exception = false; |
415 |
websocketpp::lib::error_code ec; |
416 |
|
416 |
r.consume(raw.c_str(),raw.size(),ec); |
417 |
try { |
417 |
|
418 |
r.consume(raw.c_str(),raw.size()); |
418 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
419 |
} catch (...) { |
|
|
420 |
exception = true; |
421 |
} |
422 |
|
423 |
BOOST_CHECK( exception == false ); |
424 |
BOOST_CHECK( r.ready() == false ); |
419 |
BOOST_CHECK( r.ready() == false ); |
425 |
} |
420 |
} |
426 |
|
421 |
|
Lines 429-443
BOOST_AUTO_TEST_CASE( blank_request ) {
Link Here
|
429 |
|
424 |
|
430 |
std::string raw = "\r\n\r\n"; |
425 |
std::string raw = "\r\n\r\n"; |
431 |
|
426 |
|
432 |
bool exception = false; |
427 |
websocketpp::lib::error_code ec; |
|
|
428 |
r.consume(raw.c_str(),raw.size(),ec); |
433 |
|
429 |
|
434 |
try { |
430 |
BOOST_CHECK_EQUAL(ec, websocketpp::http::error::make_error_code(websocketpp::http::error::incomplete_request)); |
435 |
r.consume(raw.c_str(),raw.size()); |
|
|
436 |
} catch (...) { |
437 |
exception = true; |
438 |
} |
439 |
|
440 |
BOOST_CHECK( exception == true ); |
441 |
BOOST_CHECK( r.ready() == false ); |
431 |
BOOST_CHECK( r.ready() == false ); |
442 |
} |
432 |
} |
443 |
|
433 |
|
Lines 446-460
BOOST_AUTO_TEST_CASE( bad_request_no_hos
Link Here
|
446 |
|
436 |
|
447 |
std::string raw = "GET / HTTP/1.1\r\n\r\n"; |
437 |
std::string raw = "GET / HTTP/1.1\r\n\r\n"; |
448 |
|
438 |
|
449 |
bool exception = false; |
439 |
websocketpp::lib::error_code ec; |
|
|
440 |
r.consume(raw.c_str(),raw.size(),ec); |
450 |
|
441 |
|
451 |
try { |
442 |
BOOST_CHECK_EQUAL(ec, websocketpp::http::error::make_error_code(websocketpp::http::error::incomplete_request)); |
452 |
r.consume(raw.c_str(),raw.size()); |
|
|
453 |
} catch (...) { |
454 |
exception = true; |
455 |
} |
456 |
|
457 |
BOOST_CHECK( exception == true ); |
458 |
BOOST_CHECK( r.ready() == false ); |
443 |
BOOST_CHECK( r.ready() == false ); |
459 |
} |
444 |
} |
460 |
|
445 |
|
Lines 463-479
BOOST_AUTO_TEST_CASE( basic_request ) {
Link Here
|
463 |
|
448 |
|
464 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"; |
449 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"; |
465 |
|
450 |
|
466 |
bool exception = false; |
|
|
467 |
size_t pos = 0; |
451 |
size_t pos = 0; |
468 |
|
452 |
|
469 |
try { |
453 |
websocketpp::lib::error_code ec; |
470 |
pos = r.consume(raw.c_str(),raw.size()); |
454 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
471 |
} catch (std::exception &e) { |
|
|
472 |
exception = true; |
473 |
std::cout << e.what() << std::endl; |
474 |
} |
475 |
|
455 |
|
476 |
BOOST_CHECK( exception == false ); |
456 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
477 |
BOOST_CHECK( pos == 41 ); |
457 |
BOOST_CHECK( pos == 41 ); |
478 |
BOOST_CHECK( r.ready() == true ); |
458 |
BOOST_CHECK( r.ready() == true ); |
479 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
459 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
Lines 487-503
BOOST_AUTO_TEST_CASE( basic_request_with
Link Here
|
487 |
|
467 |
|
488 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\nContent-Length: 5\r\n\r\nabcdef"; |
468 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\nContent-Length: 5\r\n\r\nabcdef"; |
489 |
|
469 |
|
490 |
bool exception = false; |
|
|
491 |
size_t pos = 0; |
470 |
size_t pos = 0; |
492 |
|
471 |
|
493 |
try { |
472 |
websocketpp::lib::error_code ec; |
494 |
pos = r.consume(raw.c_str(),raw.size()); |
473 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
495 |
} catch (std::exception &e) { |
|
|
496 |
exception = true; |
497 |
std::cout << e.what() << std::endl; |
498 |
} |
499 |
|
474 |
|
500 |
BOOST_CHECK( exception == false ); |
475 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
501 |
BOOST_CHECK_EQUAL( pos, 65 ); |
476 |
BOOST_CHECK_EQUAL( pos, 65 ); |
502 |
BOOST_CHECK( r.ready() == true ); |
477 |
BOOST_CHECK( r.ready() == true ); |
503 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
478 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
Lines 526-543
BOOST_AUTO_TEST_CASE( basic_request_with
Link Here
|
526 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\nContent-Length: 6\r\n\r\nabc"; |
501 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\nContent-Length: 6\r\n\r\nabc"; |
527 |
std::string raw2 = "def"; |
502 |
std::string raw2 = "def"; |
528 |
|
503 |
|
529 |
bool exception = false; |
|
|
530 |
size_t pos = 0; |
504 |
size_t pos = 0; |
531 |
|
505 |
|
532 |
try { |
506 |
websocketpp::lib::error_code ec; |
533 |
pos += r.consume(raw.c_str(),raw.size()); |
507 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
534 |
pos += r.consume(raw2.c_str(),raw2.size()); |
508 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
535 |
} catch (std::exception &e) { |
509 |
|
536 |
exception = true; |
510 |
pos += r.consume(raw2.c_str(),raw2.size(),ec); |
537 |
std::cout << e.what() << std::endl; |
511 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
538 |
} |
|
|
539 |
|
512 |
|
540 |
BOOST_CHECK( exception == false ); |
|
|
541 |
BOOST_CHECK_EQUAL( pos, 66 ); |
513 |
BOOST_CHECK_EQUAL( pos, 66 ); |
542 |
BOOST_CHECK( r.ready() == true ); |
514 |
BOOST_CHECK( r.ready() == true ); |
543 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
515 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
Lines 555-570
BOOST_AUTO_TEST_CASE( trailing_body_char
Link Here
|
555 |
|
527 |
|
556 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\na"; |
528 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\na"; |
557 |
|
529 |
|
558 |
bool exception = false; |
|
|
559 |
size_t pos = 0; |
530 |
size_t pos = 0; |
560 |
|
531 |
|
561 |
try { |
532 |
websocketpp::lib::error_code ec; |
562 |
pos = r.consume(raw.c_str(),raw.size()); |
533 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
563 |
} catch (...) { |
|
|
564 |
exception = true; |
565 |
} |
566 |
|
534 |
|
567 |
BOOST_CHECK( exception == false ); |
535 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
568 |
BOOST_CHECK( pos == 41 ); |
536 |
BOOST_CHECK( pos == 41 ); |
569 |
BOOST_CHECK( r.ready() == true ); |
537 |
BOOST_CHECK( r.ready() == true ); |
570 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
538 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
Lines 579-594
BOOST_AUTO_TEST_CASE( trailing_body_char
Link Here
|
579 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"; |
547 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"; |
580 |
raw.append(websocketpp::http::max_header_size,'*'); |
548 |
raw.append(websocketpp::http::max_header_size,'*'); |
581 |
|
549 |
|
582 |
bool exception = false; |
|
|
583 |
size_t pos = 0; |
550 |
size_t pos = 0; |
584 |
|
551 |
|
585 |
try { |
552 |
websocketpp::lib::error_code ec; |
586 |
pos = r.consume(raw.c_str(),raw.size()); |
553 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
587 |
} catch (...) { |
|
|
588 |
exception = true; |
589 |
} |
590 |
|
554 |
|
591 |
BOOST_CHECK( exception == false ); |
555 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
592 |
BOOST_CHECK( pos == 41 ); |
556 |
BOOST_CHECK( pos == 41 ); |
593 |
BOOST_CHECK( r.ready() == true ); |
557 |
BOOST_CHECK( r.ready() == true ); |
594 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
558 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
Lines 603-620
BOOST_AUTO_TEST_CASE( basic_split1 ) {
Link Here
|
603 |
std::string raw = "GET / HTTP/1.1\r\n"; |
567 |
std::string raw = "GET / HTTP/1.1\r\n"; |
604 |
std::string raw2 = "Host: www.example.com\r\n\r\na"; |
568 |
std::string raw2 = "Host: www.example.com\r\n\r\na"; |
605 |
|
569 |
|
606 |
bool exception = false; |
|
|
607 |
size_t pos = 0; |
570 |
size_t pos = 0; |
608 |
|
571 |
|
609 |
try { |
572 |
websocketpp::lib::error_code ec; |
610 |
pos += r.consume(raw.c_str(),raw.size()); |
573 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
611 |
pos += r.consume(raw2.c_str(),raw2.size()); |
574 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
612 |
} catch (std::exception &e) { |
575 |
BOOST_CHECK( pos == raw.size() ); |
613 |
exception = true; |
576 |
|
614 |
std::cout << e.what() << std::endl; |
577 |
pos += r.consume(raw2.c_str(),raw2.size(),ec); |
615 |
} |
578 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
616 |
|
579 |
|
617 |
BOOST_CHECK( exception == false ); |
|
|
618 |
BOOST_CHECK( pos == 41 ); |
580 |
BOOST_CHECK( pos == 41 ); |
619 |
BOOST_CHECK( r.ready() == true ); |
581 |
BOOST_CHECK( r.ready() == true ); |
620 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
582 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
Lines 629-646
BOOST_AUTO_TEST_CASE( basic_split2 ) {
Link Here
|
629 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r"; |
591 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r"; |
630 |
std::string raw2 = "\n\r\na"; |
592 |
std::string raw2 = "\n\r\na"; |
631 |
|
593 |
|
632 |
bool exception = false; |
|
|
633 |
size_t pos = 0; |
594 |
size_t pos = 0; |
634 |
|
595 |
|
635 |
try { |
596 |
websocketpp::lib::error_code ec; |
636 |
pos += r.consume(raw.c_str(),raw.size()); |
597 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
637 |
pos += r.consume(raw2.c_str(),raw2.size()); |
598 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
638 |
} catch (std::exception &e) { |
599 |
BOOST_CHECK( pos == raw.size() ); |
639 |
exception = true; |
600 |
|
640 |
std::cout << e.what() << std::endl; |
601 |
pos += r.consume(raw2.c_str(),raw2.size(),ec); |
641 |
} |
602 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
642 |
|
603 |
|
643 |
BOOST_CHECK( exception == false ); |
|
|
644 |
BOOST_CHECK( pos == 41 ); |
604 |
BOOST_CHECK( pos == 41 ); |
645 |
BOOST_CHECK( r.ready() == true ); |
605 |
BOOST_CHECK( r.ready() == true ); |
646 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
606 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
Lines 655-672
BOOST_AUTO_TEST_CASE( max_header_len ) {
Link Here
|
655 |
std::string raw(websocketpp::http::max_header_size-1,'*'); |
615 |
std::string raw(websocketpp::http::max_header_size-1,'*'); |
656 |
raw += "\r\n"; |
616 |
raw += "\r\n"; |
657 |
|
617 |
|
658 |
bool exception = false; |
618 |
websocketpp::lib::error_code ec; |
659 |
size_t pos = 0; |
619 |
r.consume(raw.c_str(),raw.size(),ec); |
660 |
|
620 |
|
661 |
try { |
621 |
BOOST_CHECK_EQUAL(ec, websocketpp::http::error::make_error_code( |
662 |
pos += r.consume(raw.c_str(),raw.size()); |
622 |
websocketpp::http::error::request_header_fields_too_large)); |
663 |
} catch (const websocketpp::http::exception& e) { |
|
|
664 |
if (e.m_error_code == websocketpp::http::status_code::request_header_fields_too_large) { |
665 |
exception = true; |
666 |
} |
667 |
} |
668 |
|
669 |
BOOST_CHECK( exception == true ); |
670 |
} |
623 |
} |
671 |
|
624 |
|
672 |
BOOST_AUTO_TEST_CASE( max_header_len_split ) { |
625 |
BOOST_AUTO_TEST_CASE( max_header_len_split ) { |
Lines 675-693
BOOST_AUTO_TEST_CASE( max_header_len_spl
Link Here
|
675 |
std::string raw(websocketpp::http::max_header_size-1,'*'); |
628 |
std::string raw(websocketpp::http::max_header_size-1,'*'); |
676 |
std::string raw2(2,'*'); |
629 |
std::string raw2(2,'*'); |
677 |
|
630 |
|
678 |
bool exception = false; |
|
|
679 |
size_t pos = 0; |
631 |
size_t pos = 0; |
|
|
632 |
websocketpp::lib::error_code ec; |
680 |
|
633 |
|
681 |
try { |
634 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
682 |
pos += r.consume(raw.c_str(),raw.size()); |
635 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
683 |
pos += r.consume(raw2.c_str(),raw2.size()); |
636 |
BOOST_CHECK_EQUAL(pos, raw.size()); |
684 |
} catch (const websocketpp::http::exception& e) { |
637 |
|
685 |
if (e.m_error_code == websocketpp::http::status_code::request_header_fields_too_large) { |
638 |
r.consume(raw2.c_str(),raw2.size(),ec); |
686 |
exception = true; |
639 |
BOOST_CHECK_EQUAL(ec, websocketpp::http::error::make_error_code( |
687 |
} |
640 |
websocketpp::http::error::request_header_fields_too_large)); |
688 |
} |
|
|
689 |
|
690 |
BOOST_CHECK( exception == true ); |
691 |
} |
641 |
} |
692 |
|
642 |
|
693 |
BOOST_AUTO_TEST_CASE( max_body_len ) { |
643 |
BOOST_AUTO_TEST_CASE( max_body_len ) { |
Lines 697-714
BOOST_AUTO_TEST_CASE( max_body_len ) {
Link Here
|
697 |
|
647 |
|
698 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\nContent-Length: 6\r\n\r\nabcdef"; |
648 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\nContent-Length: 6\r\n\r\nabcdef"; |
699 |
|
649 |
|
700 |
bool exception = false; |
650 |
websocketpp::lib::error_code ec; |
701 |
size_t pos = 0; |
651 |
r.consume(raw.c_str(),raw.size(),ec); |
702 |
|
|
|
703 |
try { |
704 |
pos += r.consume(raw.c_str(),raw.size()); |
705 |
} catch (websocketpp::http::exception const & e) { |
706 |
exception = true; |
707 |
BOOST_CHECK_EQUAL(e.m_error_code,websocketpp::http::status_code::request_entity_too_large); |
708 |
} |
709 |
|
652 |
|
|
|
653 |
BOOST_CHECK_EQUAL(ec, websocketpp::http::error::make_error_code( |
654 |
websocketpp::http::error::body_too_large)); |
710 |
BOOST_CHECK_EQUAL(r.get_max_body_size(),5); |
655 |
BOOST_CHECK_EQUAL(r.get_max_body_size(),5); |
711 |
BOOST_CHECK( exception == true ); |
|
|
712 |
} |
656 |
} |
713 |
|
657 |
|
714 |
BOOST_AUTO_TEST_CASE( firefox_full_request ) { |
658 |
BOOST_AUTO_TEST_CASE( firefox_full_request ) { |
Lines 716-748
BOOST_AUTO_TEST_CASE( firefox_full_reque
Link Here
|
716 |
|
660 |
|
717 |
std::string raw = "GET / HTTP/1.1\r\nHost: localhost:5000\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0) Gecko/20100101 Firefox/10.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive, Upgrade\r\nSec-WebSocket-Version: 8\r\nSec-WebSocket-Origin: http://zaphoyd.com\r\nSec-WebSocket-Key: pFik//FxwFk0riN4ZiPFjQ==\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nUpgrade: websocket\r\n\r\n"; |
661 |
std::string raw = "GET / HTTP/1.1\r\nHost: localhost:5000\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0) Gecko/20100101 Firefox/10.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\nConnection: keep-alive, Upgrade\r\nSec-WebSocket-Version: 8\r\nSec-WebSocket-Origin: http://zaphoyd.com\r\nSec-WebSocket-Key: pFik//FxwFk0riN4ZiPFjQ==\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nUpgrade: websocket\r\n\r\n"; |
718 |
|
662 |
|
719 |
bool exception = false; |
|
|
720 |
size_t pos = 0; |
663 |
size_t pos = 0; |
721 |
|
664 |
|
722 |
try { |
665 |
websocketpp::lib::error_code ec; |
723 |
pos += r.consume(raw.c_str(),raw.size()); |
666 |
|
724 |
} catch (...) { |
667 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
725 |
exception = true; |
668 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
726 |
} |
|
|
727 |
|
669 |
|
728 |
BOOST_CHECK( exception == false ); |
670 |
BOOST_CHECK_EQUAL( pos, 482 ); |
729 |
BOOST_CHECK( pos == 482 ); |
|
|
730 |
BOOST_CHECK( r.ready() == true ); |
671 |
BOOST_CHECK( r.ready() == true ); |
731 |
BOOST_CHECK( r.get_version() == "HTTP/1.1" ); |
672 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
732 |
BOOST_CHECK( r.get_method() == "GET" ); |
673 |
BOOST_CHECK_EQUAL( r.get_method(), "GET" ); |
733 |
BOOST_CHECK( r.get_uri() == "/" ); |
674 |
BOOST_CHECK_EQUAL( r.get_uri(), "/" ); |
734 |
BOOST_CHECK( r.get_header("Host") == "localhost:5000" ); |
675 |
BOOST_CHECK_EQUAL( r.get_header("Host"), "localhost:5000" ); |
735 |
BOOST_CHECK( r.get_header("User-Agent") == "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0) Gecko/20100101 Firefox/10.0" ); |
676 |
BOOST_CHECK_EQUAL( r.get_header("User-Agent"), "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0) Gecko/20100101 Firefox/10.0" ); |
736 |
BOOST_CHECK( r.get_header("Accept") == "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ); |
677 |
BOOST_CHECK_EQUAL( r.get_header("Accept"), "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ); |
737 |
BOOST_CHECK( r.get_header("Accept-Language") == "en-us,en;q=0.5" ); |
678 |
BOOST_CHECK_EQUAL( r.get_header("Accept-Language"), "en-us,en;q=0.5" ); |
738 |
BOOST_CHECK( r.get_header("Accept-Encoding") == "gzip, deflate" ); |
679 |
BOOST_CHECK_EQUAL( r.get_header("Accept-Encoding"), "gzip, deflate" ); |
739 |
BOOST_CHECK( r.get_header("Connection") == "keep-alive, Upgrade" ); |
680 |
BOOST_CHECK_EQUAL( r.get_header("Connection"), "keep-alive, Upgrade" ); |
740 |
BOOST_CHECK( r.get_header("Sec-WebSocket-Version") == "8" ); |
681 |
BOOST_CHECK_EQUAL( r.get_header("Sec-WebSocket-Version"), "8" ); |
741 |
BOOST_CHECK( r.get_header("Sec-WebSocket-Origin") == "http://zaphoyd.com" ); |
682 |
BOOST_CHECK_EQUAL( r.get_header("Sec-WebSocket-Origin"),"http://zaphoyd.com" ); |
742 |
BOOST_CHECK( r.get_header("Sec-WebSocket-Key") == "pFik//FxwFk0riN4ZiPFjQ==" ); |
683 |
BOOST_CHECK_EQUAL( r.get_header("Sec-WebSocket-Key"), "pFik//FxwFk0riN4ZiPFjQ==" ); |
743 |
BOOST_CHECK( r.get_header("Pragma") == "no-cache" ); |
684 |
BOOST_CHECK_EQUAL( r.get_header("Pragma"), "no-cache" ); |
744 |
BOOST_CHECK( r.get_header("Cache-Control") == "no-cache" ); |
685 |
BOOST_CHECK_EQUAL( r.get_header("Cache-Control"), "no-cache" ); |
745 |
BOOST_CHECK( r.get_header("Upgrade") == "websocket" ); |
686 |
BOOST_CHECK_EQUAL( r.get_header("Upgrade"),"websocket" ); |
746 |
} |
687 |
} |
747 |
|
688 |
|
748 |
BOOST_AUTO_TEST_CASE( bad_method ) { |
689 |
BOOST_AUTO_TEST_CASE( bad_method ) { |
Lines 750-764
BOOST_AUTO_TEST_CASE( bad_method ) {
Link Here
|
750 |
|
691 |
|
751 |
std::string raw = "GE]T / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"; |
692 |
std::string raw = "GE]T / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"; |
752 |
|
693 |
|
753 |
bool exception = false; |
694 |
websocketpp::lib::error_code ec; |
754 |
|
695 |
r.consume(raw.c_str(),raw.size(),ec); |
755 |
try { |
|
|
756 |
r.consume(raw.c_str(),raw.size()); |
757 |
} catch (...) { |
758 |
exception = true; |
759 |
} |
760 |
|
696 |
|
761 |
BOOST_CHECK( exception == true ); |
697 |
BOOST_CHECK_EQUAL(ec, websocketpp::http::error::make_error_code( |
|
|
698 |
websocketpp::http::error::invalid_format)); |
762 |
} |
699 |
} |
763 |
|
700 |
|
764 |
BOOST_AUTO_TEST_CASE( bad_header_name ) { |
701 |
BOOST_AUTO_TEST_CASE( bad_header_name ) { |
Lines 766-780
BOOST_AUTO_TEST_CASE( bad_header_name )
Link Here
|
766 |
|
703 |
|
767 |
std::string raw = "GET / HTTP/1.1\r\nHo]st: www.example.com\r\n\r\n"; |
704 |
std::string raw = "GET / HTTP/1.1\r\nHo]st: www.example.com\r\n\r\n"; |
768 |
|
705 |
|
769 |
bool exception = false; |
706 |
websocketpp::lib::error_code ec; |
|
|
707 |
r.consume(raw.c_str(),raw.size(),ec); |
770 |
|
708 |
|
771 |
try { |
709 |
BOOST_CHECK_EQUAL(ec, websocketpp::http::error::make_error_code( |
772 |
r.consume(raw.c_str(),raw.size()); |
710 |
websocketpp::http::error::invalid_header_name)); |
773 |
} catch (...) { |
|
|
774 |
exception = true; |
775 |
} |
776 |
|
777 |
BOOST_CHECK( exception == true ); |
778 |
} |
711 |
} |
779 |
|
712 |
|
780 |
BOOST_AUTO_TEST_CASE( old_http_version ) { |
713 |
BOOST_AUTO_TEST_CASE( old_http_version ) { |
Lines 782-797
BOOST_AUTO_TEST_CASE( old_http_version )
Link Here
|
782 |
|
715 |
|
783 |
std::string raw = "GET / HTTP/1.0\r\nHost: www.example.com\r\n\r\n"; |
716 |
std::string raw = "GET / HTTP/1.0\r\nHost: www.example.com\r\n\r\n"; |
784 |
|
717 |
|
785 |
bool exception = false; |
|
|
786 |
size_t pos = 0; |
718 |
size_t pos = 0; |
|
|
719 |
websocketpp::lib::error_code ec; |
787 |
|
720 |
|
788 |
try { |
721 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
789 |
pos = r.consume(raw.c_str(),raw.size()); |
722 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
790 |
} catch (...) { |
|
|
791 |
exception = true; |
792 |
} |
793 |
|
723 |
|
794 |
BOOST_CHECK( exception == false ); |
|
|
795 |
BOOST_CHECK_EQUAL( pos, 41 ); |
724 |
BOOST_CHECK_EQUAL( pos, 41 ); |
796 |
BOOST_CHECK( r.ready() == true ); |
725 |
BOOST_CHECK( r.ready() == true ); |
797 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.0" ); |
726 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.0" ); |
Lines 805-820
BOOST_AUTO_TEST_CASE( new_http_version1
Link Here
|
805 |
|
734 |
|
806 |
std::string raw = "GET / HTTP/1.12\r\nHost: www.example.com\r\n\r\n"; |
735 |
std::string raw = "GET / HTTP/1.12\r\nHost: www.example.com\r\n\r\n"; |
807 |
|
736 |
|
808 |
bool exception = false; |
|
|
809 |
size_t pos = 0; |
737 |
size_t pos = 0; |
|
|
738 |
websocketpp::lib::error_code ec; |
810 |
|
739 |
|
811 |
try { |
740 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
812 |
pos = r.consume(raw.c_str(),raw.size()); |
741 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
813 |
} catch (...) { |
|
|
814 |
exception = true; |
815 |
} |
816 |
|
742 |
|
817 |
BOOST_CHECK( exception == false ); |
|
|
818 |
BOOST_CHECK_EQUAL( pos, 42 ); |
743 |
BOOST_CHECK_EQUAL( pos, 42 ); |
819 |
BOOST_CHECK( r.ready() == true ); |
744 |
BOOST_CHECK( r.ready() == true ); |
820 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.12" ); |
745 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.12" ); |
Lines 828-843
BOOST_AUTO_TEST_CASE( new_http_version2
Link Here
|
828 |
|
753 |
|
829 |
std::string raw = "GET / HTTP/12.12\r\nHost: www.example.com\r\n\r\n"; |
754 |
std::string raw = "GET / HTTP/12.12\r\nHost: www.example.com\r\n\r\n"; |
830 |
|
755 |
|
831 |
bool exception = false; |
|
|
832 |
size_t pos = 0; |
756 |
size_t pos = 0; |
|
|
757 |
websocketpp::lib::error_code ec; |
833 |
|
758 |
|
834 |
try { |
759 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
835 |
pos = r.consume(raw.c_str(),raw.size()); |
760 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
836 |
} catch (...) { |
|
|
837 |
exception = true; |
838 |
} |
839 |
|
761 |
|
840 |
BOOST_CHECK( exception == false ); |
|
|
841 |
BOOST_CHECK_EQUAL( pos, 43 ); |
762 |
BOOST_CHECK_EQUAL( pos, 43 ); |
842 |
BOOST_CHECK( r.ready() == true ); |
763 |
BOOST_CHECK( r.ready() == true ); |
843 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/12.12" ); |
764 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/12.12" ); |
Lines 870-885
BOOST_AUTO_TEST_CASE( header_whitespace1
Link Here
|
870 |
|
791 |
|
871 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com \r\n\r\n"; |
792 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com \r\n\r\n"; |
872 |
|
793 |
|
873 |
bool exception = false; |
|
|
874 |
size_t pos = 0; |
794 |
size_t pos = 0; |
|
|
795 |
websocketpp::lib::error_code ec; |
875 |
|
796 |
|
876 |
try { |
797 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
877 |
pos = r.consume(raw.c_str(),raw.size()); |
798 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
878 |
} catch (...) { |
|
|
879 |
exception = true; |
880 |
} |
881 |
|
799 |
|
882 |
BOOST_CHECK( exception == false ); |
|
|
883 |
BOOST_CHECK_EQUAL( pos, 43 ); |
800 |
BOOST_CHECK_EQUAL( pos, 43 ); |
884 |
BOOST_CHECK( r.ready() == true ); |
801 |
BOOST_CHECK( r.ready() == true ); |
885 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
802 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
Lines 893-908
BOOST_AUTO_TEST_CASE( header_whitespace2
Link Here
|
893 |
|
810 |
|
894 |
std::string raw = "GET / HTTP/1.1\r\nHost:www.example.com\r\n\r\n"; |
811 |
std::string raw = "GET / HTTP/1.1\r\nHost:www.example.com\r\n\r\n"; |
895 |
|
812 |
|
896 |
bool exception = false; |
|
|
897 |
size_t pos = 0; |
813 |
size_t pos = 0; |
|
|
814 |
websocketpp::lib::error_code ec; |
898 |
|
815 |
|
899 |
try { |
816 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
900 |
pos = r.consume(raw.c_str(),raw.size()); |
817 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
901 |
} catch (...) { |
|
|
902 |
exception = true; |
903 |
} |
904 |
|
818 |
|
905 |
BOOST_CHECK( exception == false ); |
|
|
906 |
BOOST_CHECK_EQUAL( pos, 40 ); |
819 |
BOOST_CHECK_EQUAL( pos, 40 ); |
907 |
BOOST_CHECK( r.ready() == true ); |
820 |
BOOST_CHECK( r.ready() == true ); |
908 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
821 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
Lines 916-931
BOOST_AUTO_TEST_CASE( header_aggregation
Link Here
|
916 |
|
829 |
|
917 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\nFoo: bar\r\nFoo: bat\r\n\r\n"; |
830 |
std::string raw = "GET / HTTP/1.1\r\nHost: www.example.com\r\nFoo: bar\r\nFoo: bat\r\n\r\n"; |
918 |
|
831 |
|
919 |
bool exception = false; |
|
|
920 |
size_t pos = 0; |
832 |
size_t pos = 0; |
|
|
833 |
websocketpp::lib::error_code ec; |
921 |
|
834 |
|
922 |
try { |
835 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
923 |
pos = r.consume(raw.c_str(),raw.size()); |
836 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
924 |
} catch (...) { |
|
|
925 |
exception = true; |
926 |
} |
927 |
|
837 |
|
928 |
BOOST_CHECK( exception == false ); |
|
|
929 |
BOOST_CHECK_EQUAL( pos, 61 ); |
838 |
BOOST_CHECK_EQUAL( pos, 61 ); |
930 |
BOOST_CHECK( r.ready() == true ); |
839 |
BOOST_CHECK( r.ready() == true ); |
931 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
840 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
Lines 939-955
BOOST_AUTO_TEST_CASE( wikipedia_example_
Link Here
|
939 |
|
848 |
|
940 |
std::string raw = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=\r\nSec-WebSocket-Protocol: chat\r\n\r\n"; |
849 |
std::string raw = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=\r\nSec-WebSocket-Protocol: chat\r\n\r\n"; |
941 |
|
850 |
|
942 |
bool exception = false; |
|
|
943 |
size_t pos = 0; |
851 |
size_t pos = 0; |
|
|
852 |
websocketpp::lib::error_code ec; |
944 |
|
853 |
|
945 |
try { |
854 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
946 |
pos += r.consume(raw.c_str(),raw.size()); |
855 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
947 |
} catch (std::exception &e) { |
|
|
948 |
exception = true; |
949 |
std::cout << e.what() << std::endl; |
950 |
} |
951 |
|
856 |
|
952 |
BOOST_CHECK( exception == false ); |
|
|
953 |
BOOST_CHECK_EQUAL( pos, 159 ); |
857 |
BOOST_CHECK_EQUAL( pos, 159 ); |
954 |
BOOST_CHECK( r.headers_ready() == true ); |
858 |
BOOST_CHECK( r.headers_ready() == true ); |
955 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
859 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
Lines 967-983
BOOST_AUTO_TEST_CASE( wikipedia_example_
Link Here
|
967 |
std::string raw = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=\r\nSec-WebSocket-Protocol: chat\r\n\r\n"; |
871 |
std::string raw = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=\r\nSec-WebSocket-Protocol: chat\r\n\r\n"; |
968 |
raw += "a"; |
872 |
raw += "a"; |
969 |
|
873 |
|
970 |
bool exception = false; |
|
|
971 |
size_t pos = 0; |
874 |
size_t pos = 0; |
|
|
875 |
websocketpp::lib::error_code ec; |
972 |
|
876 |
|
973 |
try { |
877 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
974 |
pos += r.consume(raw.c_str(),raw.size()); |
878 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
975 |
} catch (std::exception &e) { |
|
|
976 |
exception = true; |
977 |
std::cout << e.what() << std::endl; |
978 |
} |
979 |
|
879 |
|
980 |
BOOST_CHECK( exception == false ); |
|
|
981 |
BOOST_CHECK_EQUAL( pos, 159 ); |
880 |
BOOST_CHECK_EQUAL( pos, 159 ); |
982 |
BOOST_CHECK( r.headers_ready() == true ); |
881 |
BOOST_CHECK( r.headers_ready() == true ); |
983 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
882 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
Lines 995-1011
BOOST_AUTO_TEST_CASE( wikipedia_example_
Link Here
|
995 |
std::string raw = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=\r\nSec-WebSocket-Protocol: chat\r\n\r\n"; |
894 |
std::string raw = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=\r\nSec-WebSocket-Protocol: chat\r\n\r\n"; |
996 |
raw.append(websocketpp::http::max_header_size,'*'); |
895 |
raw.append(websocketpp::http::max_header_size,'*'); |
997 |
|
896 |
|
998 |
bool exception = false; |
|
|
999 |
size_t pos = 0; |
897 |
size_t pos = 0; |
|
|
898 |
websocketpp::lib::error_code ec; |
1000 |
|
899 |
|
1001 |
try { |
900 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
1002 |
pos += r.consume(raw.c_str(),raw.size()); |
901 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1003 |
} catch (std::exception &e) { |
|
|
1004 |
exception = true; |
1005 |
std::cout << e.what() << std::endl; |
1006 |
} |
1007 |
|
902 |
|
1008 |
BOOST_CHECK( exception == false ); |
|
|
1009 |
BOOST_CHECK_EQUAL( pos, 159 ); |
903 |
BOOST_CHECK_EQUAL( pos, 159 ); |
1010 |
BOOST_CHECK( r.headers_ready() == true ); |
904 |
BOOST_CHECK( r.headers_ready() == true ); |
1011 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
905 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
Lines 1022-1038
BOOST_AUTO_TEST_CASE( response_with_non_
Link Here
|
1022 |
|
916 |
|
1023 |
std::string raw = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept:HSmrc0sMlYUkAGmm5OPpG2HaGWk=\r\nSec-WebSocket-Protocol: chat\r\n\r\n"; |
917 |
std::string raw = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept:HSmrc0sMlYUkAGmm5OPpG2HaGWk=\r\nSec-WebSocket-Protocol: chat\r\n\r\n"; |
1024 |
|
918 |
|
1025 |
bool exception = false; |
|
|
1026 |
size_t pos = 0; |
919 |
size_t pos = 0; |
|
|
920 |
websocketpp::lib::error_code ec; |
1027 |
|
921 |
|
1028 |
try { |
922 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
1029 |
pos += r.consume(raw.c_str(),raw.size()); |
923 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1030 |
} catch (std::exception &e) { |
|
|
1031 |
exception = true; |
1032 |
std::cout << e.what() << std::endl; |
1033 |
} |
1034 |
|
924 |
|
1035 |
BOOST_CHECK( exception == false ); |
|
|
1036 |
BOOST_CHECK_EQUAL( pos, 158 ); |
925 |
BOOST_CHECK_EQUAL( pos, 158 ); |
1037 |
BOOST_CHECK( r.headers_ready() ); |
926 |
BOOST_CHECK( r.headers_ready() ); |
1038 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
927 |
BOOST_CHECK_EQUAL( r.get_version(), "HTTP/1.1" ); |
Lines 1049-1065
BOOST_AUTO_TEST_CASE( plain_http_respons
Link Here
|
1049 |
|
938 |
|
1050 |
std::string raw = "HTTP/1.1 200 OK\r\nDate: Thu, 10 May 2012 11:59:25 GMT\r\nServer: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2 PHP/5.3.8 with Suhosin-Patch\r\nLast-Modified: Tue, 30 Mar 2010 17:41:28 GMT\r\nETag: \"16799d-55-4830823a78200\"\r\nAccept-Ranges: bytes\r\nContent-Length: 85\r\nVary: Accept-Encoding\r\nContent-Type: text/html\r\n\r\n<!doctype html>\n<html>\n<head>\n<title>Thor</title>\n</head>\n<body> \n<p>Thor</p>\n</body>"; |
939 |
std::string raw = "HTTP/1.1 200 OK\r\nDate: Thu, 10 May 2012 11:59:25 GMT\r\nServer: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2 PHP/5.3.8 with Suhosin-Patch\r\nLast-Modified: Tue, 30 Mar 2010 17:41:28 GMT\r\nETag: \"16799d-55-4830823a78200\"\r\nAccept-Ranges: bytes\r\nContent-Length: 85\r\nVary: Accept-Encoding\r\nContent-Type: text/html\r\n\r\n<!doctype html>\n<html>\n<head>\n<title>Thor</title>\n</head>\n<body> \n<p>Thor</p>\n</body>"; |
1051 |
|
940 |
|
1052 |
bool exception = false; |
|
|
1053 |
size_t pos = 0; |
941 |
size_t pos = 0; |
|
|
942 |
websocketpp::lib::error_code ec; |
1054 |
|
943 |
|
1055 |
try { |
944 |
pos += r.consume(raw.c_str(),raw.size(),ec); |
1056 |
pos += r.consume(raw.c_str(),raw.size()); |
945 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1057 |
} catch (std::exception &e) { |
|
|
1058 |
exception = true; |
1059 |
std::cout << e.what() << std::endl; |
1060 |
} |
1061 |
|
946 |
|
1062 |
BOOST_CHECK( exception == false ); |
|
|
1063 |
BOOST_CHECK_EQUAL( pos, 405 ); |
947 |
BOOST_CHECK_EQUAL( pos, 405 ); |
1064 |
BOOST_CHECK( r.headers_ready() == true ); |
948 |
BOOST_CHECK( r.headers_ready() == true ); |
1065 |
BOOST_CHECK( r.ready() == true ); |
949 |
BOOST_CHECK( r.ready() == true ); |
Lines 1084-1100
BOOST_AUTO_TEST_CASE( parse_istream ) {
Link Here
|
1084 |
|
968 |
|
1085 |
s << "HTTP/1.1 200 OK\r\nDate: Thu, 10 May 2012 11:59:25 GMT\r\nServer: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2 PHP/5.3.8 with Suhosin-Patch\r\nLast-Modified: Tue, 30 Mar 2010 17:41:28 GMT\r\nETag: \"16799d-55-4830823a78200\"\r\nAccept-Ranges: bytes\r\nContent-Length: 85\r\nVary: Accept-Encoding\r\nContent-Type: text/html\r\n\r\n<!doctype html>\n<html>\n<head>\n<title>Thor</title>\n</head>\n<body> \n<p>Thor</p>\n</body>"; |
969 |
s << "HTTP/1.1 200 OK\r\nDate: Thu, 10 May 2012 11:59:25 GMT\r\nServer: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2 PHP/5.3.8 with Suhosin-Patch\r\nLast-Modified: Tue, 30 Mar 2010 17:41:28 GMT\r\nETag: \"16799d-55-4830823a78200\"\r\nAccept-Ranges: bytes\r\nContent-Length: 85\r\nVary: Accept-Encoding\r\nContent-Type: text/html\r\n\r\n<!doctype html>\n<html>\n<head>\n<title>Thor</title>\n</head>\n<body> \n<p>Thor</p>\n</body>"; |
1086 |
|
970 |
|
1087 |
bool exception = false; |
|
|
1088 |
size_t pos = 0; |
971 |
size_t pos = 0; |
|
|
972 |
websocketpp::lib::error_code ec; |
1089 |
|
973 |
|
1090 |
try { |
974 |
pos += r.consume(s,ec); |
1091 |
pos += r.consume(s); |
975 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1092 |
} catch (std::exception &e) { |
|
|
1093 |
exception = true; |
1094 |
std::cout << e.what() << std::endl; |
1095 |
} |
1096 |
|
976 |
|
1097 |
BOOST_CHECK_EQUAL( exception, false ); |
|
|
1098 |
BOOST_CHECK_EQUAL( pos, 405 ); |
977 |
BOOST_CHECK_EQUAL( pos, 405 ); |
1099 |
BOOST_CHECK_EQUAL( r.headers_ready(), true ); |
978 |
BOOST_CHECK_EQUAL( r.headers_ready(), true ); |
1100 |
BOOST_CHECK_EQUAL( r.ready(), true ); |
979 |
BOOST_CHECK_EQUAL( r.ready(), true ); |
Lines 1104-1126
BOOST_AUTO_TEST_CASE( write_request_basi
Link Here
|
1104 |
websocketpp::http::parser::request r; |
983 |
websocketpp::http::parser::request r; |
1105 |
|
984 |
|
1106 |
std::string raw = "GET / HTTP/1.1\r\n\r\n"; |
985 |
std::string raw = "GET / HTTP/1.1\r\n\r\n"; |
|
|
986 |
websocketpp::lib::error_code ec; |
987 |
|
988 |
ec = r.set_version("HTTP/1.1"); |
989 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
990 |
|
991 |
ec = r.set_method("GET"); |
992 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1107 |
|
993 |
|
1108 |
r.set_version("HTTP/1.1"); |
994 |
ec = r.set_uri("/"); |
1109 |
r.set_method("GET"); |
995 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1110 |
r.set_uri("/"); |
|
|
1111 |
|
996 |
|
1112 |
BOOST_CHECK_EQUAL( r.raw(), raw ); |
997 |
BOOST_CHECK_EQUAL( r.raw(), raw ); |
1113 |
} |
998 |
} |
1114 |
|
999 |
|
|
|
1000 |
BOOST_AUTO_TEST_CASE( write_request_bad_method ) { |
1001 |
websocketpp::http::parser::request r; |
1002 |
|
1003 |
websocketpp::lib::error_code ec; |
1004 |
|
1005 |
ec = r.set_method("foo bar"); |
1006 |
BOOST_CHECK_EQUAL(ec, websocketpp::http::error::make_error_code( |
1007 |
websocketpp::http::error::invalid_format)); |
1008 |
} |
1009 |
|
1115 |
BOOST_AUTO_TEST_CASE( write_request_with_header ) { |
1010 |
BOOST_AUTO_TEST_CASE( write_request_with_header ) { |
1116 |
websocketpp::http::parser::request r; |
1011 |
websocketpp::http::parser::request r; |
1117 |
|
1012 |
|
1118 |
std::string raw = "GET / HTTP/1.1\r\nHost: http://example.com\r\n\r\n"; |
1013 |
std::string raw = "GET / HTTP/1.1\r\nHost: http://example.com\r\n\r\n"; |
|
|
1014 |
websocketpp::lib::error_code ec; |
1015 |
|
1016 |
ec = r.set_version("HTTP/1.1"); |
1017 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1018 |
|
1019 |
ec = r.set_method("GET"); |
1020 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1021 |
|
1022 |
ec = r.set_uri("/"); |
1023 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1119 |
|
1024 |
|
1120 |
r.set_version("HTTP/1.1"); |
1025 |
ec = r.replace_header("Host","http://example.com"); |
1121 |
r.set_method("GET"); |
1026 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1122 |
r.set_uri("/"); |
|
|
1123 |
r.replace_header("Host","http://example.com"); |
1124 |
|
1027 |
|
1125 |
BOOST_CHECK_EQUAL( r.raw(), raw ); |
1028 |
BOOST_CHECK_EQUAL( r.raw(), raw ); |
1126 |
} |
1029 |
} |
Lines 1129-1141
BOOST_AUTO_TEST_CASE( write_request_with
Link Here
|
1129 |
websocketpp::http::parser::request r; |
1032 |
websocketpp::http::parser::request r; |
1130 |
|
1033 |
|
1131 |
std::string raw = "POST / HTTP/1.1\r\nContent-Length: 48\r\nContent-Type: application/x-www-form-urlencoded\r\nHost: http://example.com\r\n\r\nlicenseID=string&content=string¶msXML=string"; |
1034 |
std::string raw = "POST / HTTP/1.1\r\nContent-Length: 48\r\nContent-Type: application/x-www-form-urlencoded\r\nHost: http://example.com\r\n\r\nlicenseID=string&content=string¶msXML=string"; |
|
|
1035 |
websocketpp::lib::error_code ec; |
1036 |
|
1037 |
ec = r.set_version("HTTP/1.1"); |
1038 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1039 |
|
1040 |
ec = r.set_method("POST"); |
1041 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1042 |
|
1043 |
ec = r.set_uri("/"); |
1044 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1045 |
|
1046 |
ec = r.replace_header("Host","http://example.com"); |
1047 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1048 |
|
1049 |
ec = r.replace_header("Content-Type","application/x-www-form-urlencoded"); |
1050 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1132 |
|
1051 |
|
1133 |
r.set_version("HTTP/1.1"); |
1052 |
ec = r.set_body("licenseID=string&content=string¶msXML=string"); |
1134 |
r.set_method("POST"); |
1053 |
BOOST_CHECK_EQUAL(ec, websocketpp::lib::error_code()); |
1135 |
r.set_uri("/"); |
|
|
1136 |
r.replace_header("Host","http://example.com"); |
1137 |
r.replace_header("Content-Type","application/x-www-form-urlencoded"); |
1138 |
r.set_body("licenseID=string&content=string¶msXML=string"); |
1139 |
|
1054 |
|
1140 |
BOOST_CHECK_EQUAL( r.raw(), raw ); |
1055 |
BOOST_CHECK_EQUAL( r.raw(), raw ); |
1141 |
} |
1056 |
} |