test/apple_mail_test.cc
author Roker <roker@pep-project.org>
Tue, 02 May 2017 08:48:35 +0200
branchENGINE-198
changeset 1741 5bd49bd73192
parent 1660 e153b77f3e52
child 1807 795d1b201b6f
permissions -rw-r--r--
add more assertions
krista@1543
     1
#include <iostream>
krista@1543
     2
#include <iostream>
krista@1543
     3
#include <fstream>
krista@1543
     4
#include <string>
krista@1543
     5
#include <cstring> // for strcmp()
krista@1543
     6
#include <assert.h>
krista@1543
     7
#include "blacklist.h"
krista@1543
     8
#include "keymanagement.h"
krista@1543
     9
#include "message_api.h"
krista@1543
    10
#include "mime.h"
roker@1660
    11
#include "test_util.h" // for slurp()
krista@1543
    12
krista@1543
    13
using namespace std;
krista@1543
    14
krista@1543
    15
int main(int argc, char** argv) {
krista@1545
    16
krista@1543
    17
    const char* mailfile = "test_mails/apple_mail_TC_signed_encrypted.eml";
krista@1543
    18
    
krista@1543
    19
    PEP_SESSION session;
krista@1543
    20
    
krista@1543
    21
    cout << "calling init()\n";
krista@1543
    22
    PEP_STATUS status1 = init(&session);   
krista@1543
    23
    assert(status1 == PEP_STATUS_OK);
krista@1543
    24
    assert(session);
krista@1543
    25
    cout << "init() completed.\n";
krista@1543
    26
roker@1660
    27
    const string keytextkey1 = slurp("test_keys/pub/pep-test-apple-0x1CCBC7D7_pub.asc");
roker@1660
    28
    const string keytextkey2 = slurp("test_keys/priv/pep-test-recip-0x08DB0AEE_priv.asc");
krista@1545
    29
krista@1545
    30
    PEP_STATUS statuskey1 = import_key(session, keytextkey1.c_str(), keytextkey1.length(), NULL);
krista@1545
    31
    PEP_STATUS statuskey2 = import_key(session, keytextkey2.c_str(), keytextkey2.length(), NULL);
krista@1543
    32
        
roker@1660
    33
    const string mailtext = slurp(mailfile);
krista@1543
    34
    pEp_identity * me = new_identity("pep.test.recip@kgrothoff.org", NULL, PEP_OWN_USERID, "pEp Test Recipient");    
krista@1543
    35
    me->me = true;    
krista@1543
    36
    PEP_STATUS status = update_identity(session, me);
krista@1616
    37
    trust_personal_key(session, me);    
krista@1616
    38
    status = update_identity(session, me);
krista@1638
    39
    
krista@1543
    40
    pEp_identity * you = new_identity("pep.test.apple@pep-project.org", NULL, "TOFU_pep.test.apple@pep-project.org", "pEp Test Recipient");    
krista@1543
    41
    you->me = false;    
krista@1543
    42
    status = update_identity(session, you);
krista@1543
    43
krista@1543
    44
    trust_personal_key(session, you);
krista@1543
    45
    
krista@1543
    46
    status = update_identity(session, you);
krista@1543
    47
    
krista@1543
    48
    message* msg_ptr = nullptr;
krista@1543
    49
    message* dest_msg = nullptr;
krista@1543
    50
    message* final_ptr = nullptr;
krista@1543
    51
    stringlist_t* keylist = nullptr;
krista@1543
    52
    PEP_rating rating;
krista@1543
    53
    PEP_decrypt_flags_t flags;
krista@1543
    54
    
krista@1543
    55
    status = mime_decode_message(mailtext.c_str(), mailtext.length(), &msg_ptr);
krista@1543
    56
    assert(status == PEP_STATUS_OK);
krista@1543
    57
    assert(msg_ptr);
krista@1543
    58
    final_ptr = msg_ptr;
krista@1543
    59
    status = decrypt_message(session, msg_ptr, &dest_msg, &keylist, &rating, &flags);
krista@1543
    60
    final_ptr = dest_msg ? dest_msg : msg_ptr;
krista@1543
    61
  
krista@1543
    62
    cout << "shortmsg: " << final_ptr->shortmsg << endl << endl;
krista@1543
    63
    cout << "longmsg: " << final_ptr->longmsg << endl << endl;
krista@1543
    64
    cout << "longmsg_formatted: " << (final_ptr->longmsg_formatted ? final_ptr->longmsg_formatted : "(empty)") << endl << endl;
krista@1543
    65
krista@1543
    66
    assert(color_from_rating(rating) == PEP_color_green);
krista@1543
    67
krista@1543
    68
    if (final_ptr == dest_msg)
krista@1543
    69
    	free_message(dest_msg);
krista@1543
    70
    free_message(msg_ptr);
krista@1543
    71
    free_stringlist(keylist);
krista@1543
    72
krista@1543
    73
    msg_ptr = nullptr;
krista@1543
    74
    dest_msg = nullptr;
krista@1543
    75
    final_ptr = nullptr;
krista@1543
    76
    keylist = nullptr;
krista@1543
    77
    rating = PEP_rating_unreliable;
krista@1543
    78
    
krista@1543
    79
    const char* mailfile2 = "test_mails/apple_mail_TC_html_signed_encrypted.eml";
roker@1660
    80
    const string mailtext2 = slurp(mailfile2);
krista@1543
    81
    
krista@1543
    82
    status = mime_decode_message(mailtext2.c_str(), mailtext2.length(), &msg_ptr);
krista@1543
    83
    assert(status == PEP_STATUS_OK);
krista@1543
    84
    assert(msg_ptr);
krista@1543
    85
    final_ptr = msg_ptr;
krista@1543
    86
    status = decrypt_message(session, msg_ptr, &dest_msg, &keylist, &rating, &flags);
krista@1543
    87
    final_ptr = dest_msg ? dest_msg : msg_ptr;
krista@1543
    88
  
krista@1543
    89
    cout << "shortmsg: " << final_ptr->shortmsg << endl << endl;
krista@1543
    90
    cout << "longmsg: " << final_ptr->longmsg << endl << endl;
krista@1543
    91
    cout << "longmsg_formatted: " << (final_ptr->longmsg_formatted ? final_ptr->longmsg_formatted : "(empty)") << endl << endl;
krista@1543
    92
krista@1543
    93
    assert(color_from_rating(rating) == PEP_color_green);
krista@1543
    94
krista@1543
    95
    if (final_ptr == dest_msg)
krista@1543
    96
    	free_message(dest_msg);
krista@1543
    97
    free_message(msg_ptr);
krista@1543
    98
    free_stringlist(keylist);
krista@1543
    99
krista@1545
   100
    msg_ptr = nullptr;
krista@1545
   101
    dest_msg = nullptr;
krista@1545
   102
    final_ptr = nullptr;
krista@1545
   103
    keylist = nullptr;
krista@1545
   104
    rating = PEP_rating_unreliable;
krista@1545
   105
        
krista@1543
   106
    cout << "calling release()\n";
krista@1543
   107
    release(session);
krista@1543
   108
    return 0;
krista@1543
   109
}