]> git.ipfire.org Git - thirdparty/strongswan.git/blobdiff - src/libcharon/tests/suites/test_child_rekey.c
unit-tests: Ensure listeners can track SAs via ike/child_updown/rekey()
[thirdparty/strongswan.git] / src / libcharon / tests / suites / test_child_rekey.c
index 513d9452d554a931ade646656fb67868ec51b6a6..bf37cfb0e672f13ce351bf268aa377a2b77a7602 100644 (file)
@@ -60,6 +60,8 @@ START_TEST(test_regular)
        ike_sa_t *a, *b;
        uint32_t spi_a = _i+1, spi_b = 2-_i;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -127,6 +129,7 @@ START_TEST(test_regular)
 
        /* child_updown */
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -154,6 +157,8 @@ START_TEST(test_regular_multi_ke)
        ike_sa_t *a, *b;
        uint32_t spi_a = _i+1, spi_b = 2-_i;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -239,6 +244,7 @@ START_TEST(test_regular_multi_ke)
 
        /* child_updown */
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -263,6 +269,8 @@ START_TEST(test_regular_ke_invalid)
        ike_sa_t *a, *b;
        uint32_t spi_a = _i+1, spi_b = 2-_i;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -399,6 +407,7 @@ START_TEST(test_regular_ke_invalid)
 
        /* child_updown */
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -423,6 +432,8 @@ START_TEST(test_regular_ke_invalid_multi_ke)
        ike_sa_t *a, *b;
        uint32_t spi_a = _i+1, spi_b = 2-_i;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -596,6 +607,7 @@ START_TEST(test_regular_ke_invalid_multi_ke)
 
        /* child_updown */
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -610,6 +622,8 @@ START_TEST(test_regular_responder_ignore_soft_expire)
 {
        ike_sa_t *a, *b;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
        initiate_rekey(a, 1);
@@ -676,6 +690,7 @@ START_TEST(test_regular_responder_ignore_soft_expire)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -691,6 +706,8 @@ START_TEST(test_regular_responder_handle_hard_expire)
 {
        ike_sa_t *a, *b;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
        initiate_rekey(a, 1);
@@ -755,6 +772,7 @@ START_TEST(test_regular_responder_handle_hard_expire)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -770,6 +788,8 @@ START_TEST(test_regular_responder_delete)
 {
        ike_sa_t *a, *b;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
        initiate_rekey(a, 1);
@@ -869,6 +889,7 @@ START_TEST(test_regular_responder_delete)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 0);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -883,6 +904,8 @@ START_TEST(test_regular_responder_lost_sa)
 {
        ike_sa_t *a, *b;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
        initiate_rekey(a, 1);
@@ -925,6 +948,9 @@ START_TEST(test_regular_responder_lost_sa)
 
        /* child_rekey */
        assert_hook();
+       /* the additional CHILD_SA here is the one we destroyed on b without
+        * triggering an event */
+       assert_track_sas(2, 3);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -985,6 +1011,8 @@ START_TEST(test_regular_responder_incorrect_delete)
        ike_sa_t *a, *b;
        message_t *msg;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
        initiate_rekey(a, 1);
@@ -1054,6 +1082,7 @@ START_TEST(test_regular_responder_incorrect_delete)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -1068,6 +1097,8 @@ START_TEST(test_collision)
 {
        ike_sa_t *a, *b;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
 
@@ -1279,6 +1310,7 @@ START_TEST(test_collision)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -1293,6 +1325,8 @@ START_TEST(test_collision_multi_ke)
 {
        ike_sa_t *a, *b;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, &multi_ke_conf);
 
@@ -1481,6 +1515,7 @@ START_TEST(test_collision_multi_ke)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -1504,6 +1539,8 @@ START_TEST(test_collision_mixed)
        };
        ike_sa_t *a, *b;
 
+       assert_track_sas_start();
+
        /* let's accept what the peer proposes first */
        lib->settings->set_bool(lib->settings, "%s.prefer_configured_proposals",
                                                        FALSE, lib->ns);
@@ -1742,6 +1779,7 @@ START_TEST(test_collision_mixed)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -1769,6 +1807,8 @@ START_TEST(test_collision_delayed_response)
        ike_sa_t *a, *b;
        message_t *msg;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
 
@@ -1980,6 +2020,7 @@ START_TEST(test_collision_delayed_response)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -2007,6 +2048,8 @@ START_TEST(test_collision_delayed_response_delete)
        ike_sa_t *a, *b;
        message_t *msg;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
 
@@ -2258,6 +2301,7 @@ START_TEST(test_collision_delayed_response_delete)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 0);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -2296,6 +2340,8 @@ START_TEST(test_collision_delayed_response_multi_ke)
 
        _i %= 2;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, &multi_ke_conf);
 
@@ -2435,6 +2481,7 @@ START_TEST(test_collision_delayed_response_multi_ke)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -2473,6 +2520,8 @@ START_TEST(test_collision_delayed_request)
 
        _i %= 3;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
 
@@ -2610,6 +2659,7 @@ START_TEST(test_collision_delayed_request)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -2638,6 +2688,8 @@ START_TEST(test_collision_delayed_request_more)
        ike_sa_t *a, *b;
        message_t *msg;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
 
@@ -2737,6 +2789,7 @@ START_TEST(test_collision_delayed_request_more)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -2767,6 +2820,8 @@ START_TEST(test_collision_delayed_request_more_delete)
        ike_sa_t *a, *b;
        message_t *msg;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
 
@@ -2902,6 +2957,7 @@ START_TEST(test_collision_delayed_request_more_delete)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 0);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -2938,6 +2994,8 @@ START_TEST(test_collision_delayed_request_multi_ke)
 
        _i %= 3;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, &multi_ke_conf);
 
@@ -3075,6 +3133,7 @@ START_TEST(test_collision_delayed_request_multi_ke)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -3101,6 +3160,8 @@ START_TEST(test_collision_ke_invalid)
        };
        ike_sa_t *a, *b;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, &conf);
 
@@ -3312,6 +3373,7 @@ START_TEST(test_collision_ke_invalid)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -3338,6 +3400,8 @@ START_TEST(test_collision_ke_invalid_delayed_retry)
        ike_sa_t *a, *b;
        message_t *msg;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, &conf);
 
@@ -3468,6 +3532,7 @@ START_TEST(test_collision_ke_invalid_delayed_retry)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -3489,6 +3554,8 @@ START_TEST(test_collision_responder_incorrect_delete)
        ike_sa_t *a, *b;
        message_t *msg;
 
+       assert_track_sas_start();
+
        exchange_test_helper->establish_sa(exchange_test_helper,
                                                                           &a, &b, NULL);
 
@@ -3612,6 +3679,7 @@ START_TEST(test_collision_responder_incorrect_delete)
        /* child_rekey/child_updown */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        call_ikesa(a, destroy);
        call_ikesa(b, destroy);
@@ -3634,6 +3702,8 @@ START_TEST(test_collision_delete)
        ike_sa_t *a, *b;
        uint32_t spi_a = _i+1, spi_b = 2-_i;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -3696,6 +3766,7 @@ START_TEST(test_collision_delete)
 
        /* child_rekey */
        assert_hook();
+       assert_track_sas(2, 0);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -3722,6 +3793,8 @@ START_TEST(test_collision_delete_multi_ke)
        ike_sa_t *a, *b;
        uint32_t spi_a = _i+1, spi_b = 2-_i;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -3786,6 +3859,7 @@ START_TEST(test_collision_delete_multi_ke)
 
        /* child_rekey */
        assert_hook();
+       assert_track_sas(2, 0);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -3814,6 +3888,8 @@ START_TEST(test_collision_delete_drop_delete)
        message_t *msg;
        uint32_t spi_a = _i+1, spi_b = 2-_i;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -3872,6 +3948,7 @@ START_TEST(test_collision_delete_drop_delete)
 
        /* child_rekey */
        assert_hook();
+       assert_track_sas(2, 0);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -3899,6 +3976,8 @@ START_TEST(test_collision_delete_drop_rekey)
        message_t *msg;
        uint32_t spi_a = _i+1, spi_b = 2-_i;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -3962,6 +4041,7 @@ START_TEST(test_collision_delete_drop_rekey)
 
        /* child_rekey */
        assert_hook();
+       assert_track_sas(2, 0);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -3989,6 +4069,8 @@ START_TEST(test_collision_delete_delayed_response)
        message_t *msg;
        uint32_t spi_a = _i+1, spi_b = 2-_i;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -4091,6 +4173,7 @@ START_TEST(test_collision_delete_delayed_response)
 
        /* child_rekey */
        assert_hook();
+       assert_track_sas(2, 0);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -4116,6 +4199,8 @@ START_TEST(test_collision_ike_rekey)
        ike_sa_t *a, *b;
        uint32_t spi_a = _i+1;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -4172,6 +4257,7 @@ START_TEST(test_collision_ike_rekey)
        /* ike_rekey/child_rekey */
        assert_hook();
        assert_hook();
+       assert_track_sas(2, 2);
 
        assert_sa_idle(a);
        assert_sa_idle(b);
@@ -4199,6 +4285,8 @@ START_TEST(test_collision_ike_delete)
        message_t *msg;
        status_t s;
 
+       assert_track_sas_start();
+
        if (_i)
        {       /* responder rekeys the CHILD_SA (SPI 2) */
                exchange_test_helper->establish_sa(exchange_test_helper,
@@ -4259,6 +4347,7 @@ START_TEST(test_collision_ike_delete)
 
        /* child_rekey */
        assert_hook();
+       assert_track_sas(0, 0);
 }
 END_TEST