]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Cleanup the go secure test
authorViktor Krykun <viktor@krykun.com>
Fri, 15 Jun 2012 07:23:46 +0000 (10:23 +0300)
committerTravis Cross <tc@traviscross.com>
Mon, 11 Feb 2013 16:41:58 +0000 (16:41 +0000)
Modified-by: Travis Cross <tc@traviscross.com>
Signed-off-by: Travis Cross <tc@traviscross.com>
libs/libzrtp/test/go_secure_test.c

index ab6740d3cca1fca76bfaafcec5f9cc4f32268219..be0f28583dd37cc66d9f8e6794ef5d5cf56f1e0e 100644 (file)
@@ -38,10 +38,10 @@ static void teardown() {
        zrtp_test_endpoint_destroy(g_bob);
 }
 
-static void go_secure_test() {
+static void prepare_alice_bob() {
        zrtp_status_t s;
 
-       zrtp_test_channel_info_t channel_info;
+       //zrtp_test_channel_info_t channel_info;
        zrtp_test_session_cfg_t session_config;
        zrtp_test_session_config_defaults(&session_config);
 
@@ -60,12 +60,24 @@ static void go_secure_test() {
        s = zrtp_test_channel_create2(g_alice_sid, g_bob_sid, 0, &g_secure_audio_channel);
        assert_int_equal(zrtp_status_ok, s);
        assert_int_not_equal(ZRTP_TEST_UNKNOWN_ID, g_secure_audio_channel);
+}
+
+static void release_alice_bob() {
+       zrtp_test_session_destroy(g_alice_sid);
+       zrtp_test_session_destroy(g_bob_sid);
+
+       zrtp_test_channel_destroy(g_secure_audio_channel);
+}
+
+static void start_alice_bob_and_wait4secure() {
+       zrtp_status_t s;
+       zrtp_test_channel_info_t channel_info;
 
        /* Everything is ready. Let's start the stream and give it few seconds to switch secure. */
        s = zrtp_test_channel_start(g_secure_audio_channel);
        assert_int_equal(zrtp_status_ok, s);
 
-       int i = 30;
+       unsigned i = 30;
        for (; i>0; i--) {
                usleep(100*1000);
        }
@@ -73,18 +85,73 @@ static void go_secure_test() {
        s = zrtp_test_channel_get(g_secure_audio_channel, &channel_info);
        assert_int_equal(zrtp_status_ok, s);
 
-       /* Both, Alice and Bob should switch secure */
        assert_true(channel_info.is_secure);
+}
 
-       zrtp_test_session_destroy(g_alice_sid);
-       zrtp_test_session_destroy(g_bob_sid);
 
-       zrtp_test_channel_destroy(g_secure_audio_channel);
+static void go_secure_test() {
+       /*
+        * Create two test sessions, one for Alice and one for Bob and link them
+        * into test secure channel
+        */
+       prepare_alice_bob();
+       start_alice_bob_and_wait4secure();
+       release_alice_bob();
+}
+
+static void go_secure_flags_test() {
+       zrtp_status_t s;
+       zrtp_test_session_info_t alice_ses_info;
+
+       prepare_alice_bob();
+
+       start_alice_bob_and_wait4secure();
+
+       /* All flags should be clear */
+       s = zrtp_test_session_get(g_alice_sid, &alice_ses_info);
+       assert_int_equal(zrtp_status_ok, s);
+
+       assert_int_equal(0, alice_ses_info.zrtp.matches_flags);
+       assert_int_equal(0, alice_ses_info.zrtp.cached_flags);
+       assert_int_equal(0, alice_ses_info.zrtp.wrongs_flags);
+
+       /*
+        * Now let's make one more call, RS1 should match and cached
+        */
+       release_alice_bob();
+
+       prepare_alice_bob();
+
+       start_alice_bob_and_wait4secure();
+
+       s = zrtp_test_session_get(g_alice_sid, &alice_ses_info);
+       assert_int_equal(zrtp_status_ok, s);
+
+       assert_int_equal((int)ZRTP_BIT_RS1, alice_ses_info.zrtp.matches_flags);
+       assert_int_equal((int)ZRTP_BIT_RS1, alice_ses_info.zrtp.cached_flags);
+       assert_int_equal(0, alice_ses_info.zrtp.wrongs_flags);
+
+       /*
+        * And one more time.. both RS1 and RS2 should be cached and should match.
+        */
+       release_alice_bob();
+
+       prepare_alice_bob();
+
+       start_alice_bob_and_wait4secure();
+
+       s = zrtp_test_session_get(g_alice_sid, &alice_ses_info);
+       assert_int_equal(zrtp_status_ok, s);
+
+       assert_int_equal((int)(ZRTP_BIT_RS1 | ZRTP_BIT_RS2) , alice_ses_info.zrtp.matches_flags);
+       assert_int_equal((int)(ZRTP_BIT_RS1 | ZRTP_BIT_RS2), alice_ses_info.zrtp.cached_flags);
+       assert_int_equal(0, alice_ses_info.zrtp.wrongs_flags);
 }
 
 int main(void) {
        const UnitTest tests[] = {
                unit_test_setup_teardown(go_secure_test, setup, teardown),
+               unit_test_setup_teardown(go_secure_flags_test, setup, teardown),
        };
 
        return run_tests(tests);