@@ -55,6 +55,7 @@ impl FfiClient {
55
55
unsafe fn new (
56
56
api_address_ptr : * const libc:: c_char ,
57
57
hostname : * const libc:: c_char ,
58
+ #[ cfg( debug_assertions) ] disable_tls : bool ,
58
59
) -> Result < Self , MullvadApiError > {
59
60
// SAFETY: addr_str must be a valid pointer to a null-terminated string.
60
61
let addr_str = unsafe { string_from_raw_ptr ( api_address_ptr) ? } ;
@@ -71,6 +72,8 @@ impl FfiClient {
71
72
let endpoint = ApiEndpoint {
72
73
host : Some ( api_hostname. clone ( ) ) ,
73
74
address : Some ( api_address) ,
75
+ #[ cfg( debug_assertions) ]
76
+ disable_tls,
74
77
} ;
75
78
76
79
let mut runtime_builder = tokio:: runtime:: Builder :: new_multi_thread ( ) ;
@@ -238,8 +241,16 @@ pub unsafe extern "C" fn mullvad_api_client_initialize(
238
241
client_ptr : * mut MullvadApiClient ,
239
242
api_address_ptr : * const libc:: c_char ,
240
243
hostname : * const libc:: c_char ,
244
+ #[ cfg( debug_assertions) ] disable_tls : bool ,
241
245
) -> MullvadApiError {
242
- match unsafe { FfiClient :: new ( api_address_ptr, hostname) } {
246
+ match unsafe {
247
+ FfiClient :: new (
248
+ api_address_ptr,
249
+ hostname,
250
+ #[ cfg( debug_assertions) ]
251
+ disable_tls,
252
+ )
253
+ } {
243
254
Ok ( client) => {
244
255
unsafe {
245
256
std:: ptr:: write ( client_ptr, MullvadApiClient :: new ( client) ) ;
@@ -445,24 +456,29 @@ unsafe fn string_from_raw_ptr(ptr: *const libc::c_char) -> Result<String, Mullva
445
456
446
457
#[ cfg( test) ]
447
458
mod test {
448
- use std:: mem:: MaybeUninit ;
459
+ use super :: * ;
460
+ use std:: time:: Duration ;
461
+ use httpmock:: prelude:: * ;
462
+ use std:: { mem:: MaybeUninit , net:: Ipv4Addr , thread} ;
449
463
450
464
use super :: * ;
451
465
const STAGING_SOCK_ADDR : & [ u8 ] = b"185.217.116.129:443\0 " ;
452
466
const STAGING_HOSTNAME : & [ u8 ] = b"api-app.stagemole.eu\0 " ;
453
467
454
468
#[ test]
455
469
fn test_initialization ( ) {
456
- let _ = create_client ( ) ;
470
+ let _ = create_client ( & SocketAddr :: new ( Ipv4Addr :: UNSPECIFIED . into ( ) , 1 ) ) ;
457
471
}
458
472
459
- fn create_client ( ) -> MullvadApiClient {
473
+ fn create_client ( addr : & SocketAddr ) -> MullvadApiClient {
460
474
let mut client = MaybeUninit :: < MullvadApiClient > :: uninit ( ) ;
475
+ let cstr_address = CString :: new ( addr. to_string ( ) ) . unwrap ( ) ;
461
476
let _client = unsafe {
462
477
mullvad_api_client_initialize (
463
478
client. as_mut_ptr ( ) ,
464
- STAGING_SOCK_ADDR . as_ptr ( ) . cast ( ) ,
479
+ cstr_address . as_ptr ( ) . cast ( ) ,
465
480
STAGING_HOSTNAME . as_ptr ( ) . cast ( ) ,
481
+ true ,
466
482
)
467
483
. unwrap ( ) ;
468
484
} ;
@@ -471,10 +487,34 @@ mod test {
471
487
472
488
#[ test]
473
489
fn test_create_delete_account ( ) {
474
- let client = create_client ( ) ;
490
+ let server = test_server ( ) ;
491
+ let client = create_client ( server. address ( ) ) ;
492
+
493
+ println ! ( "SERVER ADDR: {}" , server. address( ) ) ;
475
494
476
- let mut account_buf = vec ! [ ( 0 as libc:: c_char) ; 100 ] ;
495
+ let mut account_buf = vec ! [ 0 as libc:: c_char; 100 ] ;
477
496
478
497
unsafe { mullvad_api_create_account ( client, ( & account_buf. as_mut_ptr ( ) ) . cast ( ) ) . unwrap ( ) } ;
479
498
}
499
+
500
+ fn test_server ( ) -> MockServer {
501
+ let expected_create_account_response = br#"{"id":"085df870-0fc2-47cb-9e8c-cb43c1bdaac0","expiry":"2024-12-11T12:56:32+00:00","max_ports":0,"can_add_ports":false,"max_devices":5,"can_add_devices":true,"number":"6705749539195318"}"}"# ;
502
+ let server = MockServer :: start ( ) ;
503
+ let mock = server. mock ( |when, then| {
504
+ // when.method(POST)
505
+ // .header("content-type", "application/json")
506
+ // .path(crate::ACCOUNTS_URL_PREFIX.to_owned() + "/accounts");
507
+ when. any_request ( ) ;
508
+ then. status ( 201 )
509
+ . body ( expected_create_account_response)
510
+ . header ( "content-type" , "application/json" )
511
+ . header (
512
+ "content-length" ,
513
+ & format ! ( "{}" , expected_create_account_response. len( ) ) ,
514
+ )
515
+ ;
516
+ } ) ;
517
+
518
+ server
519
+ }
480
520
}
0 commit comments