@@ -508,76 +508,73 @@ TEST_F(ConnectTest, Success) {
508
508
ASSERT_MEMORY_OK ();
509
509
}
510
510
511
- TEST_F (ConnectTest, Success_v4) {
512
- RunServer ([](int sockfd) {
513
- // Perform handshake.
514
- {
515
- char handshake[20 ];
516
- ASSERT_EQ (RecvData (sockfd, handshake, 20 ), 0 );
517
- ASSERT_EQ (std::string (handshake, 4 ), " \x60\x60\xB0\x17 " s);
518
- ASSERT_EQ (std::string (handshake + 4 , 4 ), " \x00\x00\x01\x04 " s);
519
- ASSERT_EQ (std::string (handshake + 8 , 4 ), " \x00\x00\x00\x01 " s);
520
- ASSERT_EQ (std::string (handshake + 12 , 4 ), " \x00\x00\x00\x00 " s);
521
- ASSERT_EQ (std::string (handshake + 16 , 4 ), " \x00\x00\x00\x00 " s);
511
+ auto run_v4_server_success = [](int sockfd) {
512
+ // Perform handshake.
513
+ {
514
+ char handshake[20 ];
515
+ ASSERT_EQ (RecvData (sockfd, handshake, 20 ), 0 );
516
+ ASSERT_EQ (std::string (handshake, 4 ), " \x60\x60\xB0\x17 " s);
517
+ ASSERT_EQ (std::string (handshake + 4 , 4 ), " \x00\x00\x01\x04 " s);
518
+ ASSERT_EQ (std::string (handshake + 8 , 4 ), " \x00\x00\x00\x01 " s);
519
+ ASSERT_EQ (std::string (handshake + 12 , 4 ), " \x00\x00\x00\x00 " s);
520
+ ASSERT_EQ (std::string (handshake + 16 , 4 ), " \x00\x00\x00\x00 " s);
522
521
523
- uint32_t version = htobe32 (0x0104 );
524
- ASSERT_EQ (SendData (sockfd, (char *)&version, 4 ), 0 );
525
- }
522
+ uint32_t version = htobe32 (1 );
523
+ ASSERT_EQ (SendData (sockfd, (char *)&version, 4 ), 0 );
524
+ }
526
525
527
- mg_session *session = mg_session_init (&mg_system_allocator);
528
- ASSERT_TRUE (session);
529
- session->version = 4 ;
530
- mg_raw_transport_init (sockfd, (mg_raw_transport **)&session->transport ,
531
- &mg_system_allocator);
526
+ mg_session *session = mg_session_init (&mg_system_allocator);
527
+ ASSERT_TRUE (session);
528
+ session->version = 1 ;
529
+ mg_raw_transport_init (sockfd, (mg_raw_transport **)&session->transport ,
530
+ &mg_system_allocator);
532
531
533
- // Read HELLO message.
532
+ // Read INIT message.
533
+ {
534
+ mg_message *message;
535
+ ASSERT_EQ (mg_session_receive_message (session), 0 );
536
+ ASSERT_EQ (mg_session_read_bolt_message (session, &message), 0 );
537
+ ASSERT_EQ (message->type , MG_MESSAGE_TYPE_INIT);
538
+
539
+ mg_message_init *msg_init = message->init_v ;
540
+ EXPECT_EQ (
541
+ std::string (msg_init->client_name ->data , msg_init->client_name ->size ),
542
+ MG_USER_AGENT);
534
543
{
535
- mg_message *message;
536
- ASSERT_EQ (mg_session_receive_message (session), 0 );
537
- ASSERT_EQ (mg_session_read_bolt_message (session, &message), 0 );
538
- ASSERT_EQ (message->type , MG_MESSAGE_TYPE_HELLO);
539
-
540
- mg_message_hello *msg_hello = message->hello_v ;
541
- {
542
- ASSERT_EQ (mg_map_size (msg_hello->extra ), 4u );
543
-
544
- const mg_value *user_agent_val =
545
- mg_map_at (msg_hello->extra , " user_agent" );
546
- ASSERT_TRUE (user_agent_val);
547
- ASSERT_EQ (mg_value_get_type (user_agent_val), MG_VALUE_TYPE_STRING);
548
- const mg_string *user_agent = mg_value_string (user_agent_val);
549
- ASSERT_EQ (std::string (user_agent->data , user_agent->size ),
550
- MG_USER_AGENT);
551
-
552
- const mg_value *scheme_val = mg_map_at (msg_hello->extra , " scheme" );
553
- ASSERT_TRUE (scheme_val);
554
- ASSERT_EQ (mg_value_get_type (scheme_val), MG_VALUE_TYPE_STRING);
555
- const mg_string *scheme = mg_value_string (scheme_val);
556
- ASSERT_EQ (std::string (scheme->data , scheme->size ), " basic" );
557
-
558
- const mg_value *principal_val =
559
- mg_map_at (msg_hello->extra , " principal" );
560
- ASSERT_TRUE (principal_val);
561
- ASSERT_EQ (mg_value_get_type (principal_val), MG_VALUE_TYPE_STRING);
562
- const mg_string *principal = mg_value_string (principal_val);
563
- ASSERT_EQ (std::string (principal->data , principal->size ), " user" );
544
+ ASSERT_EQ (mg_map_size (msg_init->auth_token ), 3u );
545
+
546
+ const mg_value *scheme_val = mg_map_at (msg_init->auth_token , " scheme" );
547
+ ASSERT_TRUE (scheme_val);
548
+ ASSERT_EQ (mg_value_get_type (scheme_val), MG_VALUE_TYPE_STRING);
549
+ const mg_string *scheme = mg_value_string (scheme_val);
550
+ ASSERT_EQ (std::string (scheme->data , scheme->size ), " basic" );
551
+
552
+ const mg_value *principal_val =
553
+ mg_map_at (msg_init->auth_token , " principal" );
554
+ ASSERT_TRUE (principal_val);
555
+ ASSERT_EQ (mg_value_get_type (principal_val), MG_VALUE_TYPE_STRING);
556
+ const mg_string *principal = mg_value_string (principal_val);
557
+ ASSERT_EQ (std::string (principal->data , principal->size ), " user" );
558
+
559
+ const mg_value *credentials_val =
560
+ mg_map_at (msg_init->auth_token , " credentials" );
561
+ ASSERT_TRUE (credentials_val);
562
+ ASSERT_EQ (mg_value_get_type (credentials_val), MG_VALUE_TYPE_STRING);
563
+ const mg_string *credentials = mg_value_string (credentials_val);
564
+ ASSERT_EQ (std::string (credentials->data , credentials->size ), " pass" );
565
+ }
566
+
567
+ mg_message_destroy_ca (message, session->decoder_allocator );
568
+ }
564
569
565
- const mg_value *credentials_val =
566
- mg_map_at (msg_hello->extra , " credentials" );
567
- ASSERT_TRUE (credentials_val);
568
- ASSERT_EQ (mg_value_get_type (credentials_val), MG_VALUE_TYPE_STRING);
569
- const mg_string *credentials = mg_value_string (credentials_val);
570
- ASSERT_EQ (std::string (credentials->data , credentials->size ), " pass" );
571
- }
570
+ // Send SUCCESS message.
571
+ ASSERT_EQ (mg_session_send_success_message (session, &mg_empty_map), 0 );
572
572
573
- mg_message_destroy_ca (message, session->decoder_allocator );
574
- }
575
-
576
- // Send SUCCESS message.
577
- ASSERT_EQ (mg_session_send_success_message (session, &mg_empty_map), 0 );
573
+ mg_session_destroy (session);
574
+ };
578
575
579
- mg_session_destroy (session);
580
- } );
576
+ TEST_F (ConnectTest, Success_v4) {
577
+ RunServer (run_v4_server_success );
581
578
mg_session_params *params = mg_session_params_make ();
582
579
mg_session_params_set_host (params, " 127.0.0.1" );
583
580
mg_session_params_set_port (params, port);
@@ -592,70 +589,7 @@ TEST_F(ConnectTest, Success_v4) {
592
589
}
593
590
594
591
TEST_F (ConnectTest, SuccessWithSSL) {
595
- RunServer ([](int sockfd) {
596
- // Perform handshake.
597
- {
598
- char handshake[20 ];
599
- ASSERT_EQ (RecvData (sockfd, handshake, 20 ), 0 );
600
- ASSERT_EQ (std::string (handshake, 4 ), " \x60\x60\xB0\x17 " s);
601
- ASSERT_EQ (std::string (handshake + 4 , 4 ), " \x00\x00\x01\x04 " s);
602
- ASSERT_EQ (std::string (handshake + 8 , 4 ), " \x00\x00\x00\x01 " s);
603
- ASSERT_EQ (std::string (handshake + 12 , 4 ), " \x00\x00\x00\x00 " s);
604
- ASSERT_EQ (std::string (handshake + 16 , 4 ), " \x00\x00\x00\x00 " s);
605
-
606
- uint32_t version = htobe32 (1 );
607
- ASSERT_EQ (SendData (sockfd, (char *)&version, 4 ), 0 );
608
- }
609
-
610
- mg_session *session = mg_session_init (&mg_system_allocator);
611
- ASSERT_TRUE (session);
612
- session->version = 1 ;
613
- mg_raw_transport_init (sockfd, (mg_raw_transport **)&session->transport ,
614
- &mg_system_allocator);
615
-
616
- // Read INIT message.
617
- {
618
- mg_message *message;
619
- ASSERT_EQ (mg_session_receive_message (session), 0 );
620
- ASSERT_EQ (mg_session_read_bolt_message (session, &message), 0 );
621
- ASSERT_EQ (message->type , MG_MESSAGE_TYPE_INIT);
622
-
623
- mg_message_init *msg_init = message->init_v ;
624
- EXPECT_EQ (
625
- std::string (msg_init->client_name ->data , msg_init->client_name ->size ),
626
- MG_USER_AGENT);
627
- {
628
- ASSERT_EQ (mg_map_size (msg_init->auth_token ), 3u );
629
-
630
- const mg_value *scheme_val = mg_map_at (msg_init->auth_token , " scheme" );
631
- ASSERT_TRUE (scheme_val);
632
- ASSERT_EQ (mg_value_get_type (scheme_val), MG_VALUE_TYPE_STRING);
633
- const mg_string *scheme = mg_value_string (scheme_val);
634
- ASSERT_EQ (std::string (scheme->data , scheme->size ), " basic" );
635
-
636
- const mg_value *principal_val =
637
- mg_map_at (msg_init->auth_token , " principal" );
638
- ASSERT_TRUE (principal_val);
639
- ASSERT_EQ (mg_value_get_type (principal_val), MG_VALUE_TYPE_STRING);
640
- const mg_string *principal = mg_value_string (principal_val);
641
- ASSERT_EQ (std::string (principal->data , principal->size ), " user" );
642
-
643
- const mg_value *credentials_val =
644
- mg_map_at (msg_init->auth_token , " credentials" );
645
- ASSERT_TRUE (credentials_val);
646
- ASSERT_EQ (mg_value_get_type (credentials_val), MG_VALUE_TYPE_STRING);
647
- const mg_string *credentials = mg_value_string (credentials_val);
648
- ASSERT_EQ (std::string (credentials->data , credentials->size ), " pass" );
649
- }
650
-
651
- mg_message_destroy_ca (message, session->decoder_allocator );
652
- }
653
-
654
- // Send SUCCESS message.
655
- ASSERT_EQ (mg_session_send_success_message (session, &mg_empty_map), 0 );
656
-
657
- mg_session_destroy (session);
658
- });
592
+ RunServer (run_v4_server_success);
659
593
660
594
mg_secure_transport_init_called = 0 ;
661
595
trust_callback_ok = 0 ;
@@ -681,6 +615,22 @@ TEST_F(ConnectTest, SuccessWithSSL) {
681
615
ASSERT_MEMORY_OK ();
682
616
}
683
617
618
+ TEST_F (ConnectTest, CustomScheme) {
619
+ RunServer (run_v4_server_success);
620
+ mg_session_params *params = mg_session_params_make ();
621
+ mg_session_params_set_host (params, " 127.0.0.1" );
622
+ mg_session_params_set_port (params, port);
623
+ mg_session_params_set_scheme (params, " custom_scheme" );
624
+ mg_session_params_set_username (params, " user" );
625
+ mg_session_params_set_password (params, " pass" );
626
+ mg_session *session;
627
+ ASSERT_EQ (mg_connect_ca (params, &session, (mg_allocator *)&allocator), 0 );
628
+ EXPECT_EQ (mg_session_status (session), MG_SESSION_READY);
629
+ mg_session_params_destroy (params);
630
+ mg_session_destroy (session);
631
+ ASSERT_MEMORY_OK ();
632
+ }
633
+
684
634
class RunTest : public ::testing::Test {
685
635
protected:
686
636
virtual void SetUp () override {
0 commit comments