@@ -1785,35 +1785,8 @@ mod tests {
17851785 use std:: str:: FromStr ;
17861786 use std:: time:: Duration ;
17871787
1788- use torrust_tracker_clock:: clock:: Time ;
1789- use torrust_tracker_configuration:: v2:: core:: PrivateMode ;
1790-
1791- use crate :: core:: auth:: { self , Key } ;
1788+ use crate :: core:: auth:: { self } ;
17921789 use crate :: core:: tests:: the_tracker:: private_tracker;
1793- use crate :: CurrentClock ;
1794-
1795- #[ tokio:: test]
1796- async fn it_should_generate_the_expiring_authentication_keys ( ) {
1797- let tracker = private_tracker ( ) ;
1798-
1799- let key = tracker. generate_auth_key ( Some ( Duration :: from_secs ( 100 ) ) ) . await . unwrap ( ) ;
1800-
1801- assert_eq ! (
1802- key. valid_until,
1803- Some ( CurrentClock :: now_add( & Duration :: from_secs( 100 ) ) . unwrap( ) )
1804- ) ;
1805- }
1806-
1807- #[ tokio:: test]
1808- async fn it_should_authenticate_a_peer_by_using_a_key ( ) {
1809- let tracker = private_tracker ( ) ;
1810-
1811- let expiring_key = tracker. generate_auth_key ( Some ( Duration :: from_secs ( 100 ) ) ) . await . unwrap ( ) ;
1812-
1813- let result = tracker. authenticate ( & expiring_key. key ( ) ) . await ;
1814-
1815- assert ! ( result. is_ok( ) ) ;
1816- }
18171790
18181791 #[ tokio:: test]
18191792 async fn it_should_fail_authenticating_a_peer_when_it_uses_an_unregistered_key ( ) {
@@ -1826,33 +1799,6 @@ mod tests {
18261799 assert ! ( result. is_err( ) ) ;
18271800 }
18281801
1829- #[ tokio:: test]
1830- async fn it_should_verify_a_valid_authentication_key ( ) {
1831- let tracker = private_tracker ( ) ;
1832-
1833- let expiring_key = tracker. generate_auth_key ( Some ( Duration :: from_secs ( 100 ) ) ) . await . unwrap ( ) ;
1834-
1835- assert ! ( tracker. authenticate( & expiring_key. key( ) ) . await . is_ok( ) ) ;
1836- }
1837-
1838- #[ tokio:: test]
1839- async fn it_should_accept_an_expired_key_when_checking_expiration_is_disabled_in_configuration ( ) {
1840- let mut tracker = private_tracker ( ) ;
1841-
1842- tracker. config . private_mode = Some ( PrivateMode {
1843- check_keys_expiration : false ,
1844- } ) ;
1845-
1846- let past_time = Some ( Duration :: ZERO ) ;
1847-
1848- let expiring_key = tracker
1849- . add_auth_key ( Key :: new ( "YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ" ) . unwrap ( ) , past_time)
1850- . await
1851- . unwrap ( ) ;
1852-
1853- assert ! ( tracker. authenticate( & expiring_key. key( ) ) . await . is_ok( ) ) ;
1854- }
1855-
18561802 #[ tokio:: test]
18571803 async fn it_should_fail_verifying_an_unregistered_authentication_key ( ) {
18581804 let tracker = private_tracker ( ) ;
@@ -1888,6 +1834,192 @@ mod tests {
18881834 assert ! ( result. is_ok( ) ) ;
18891835 assert ! ( tracker. verify_auth_key( & expiring_key. key( ) ) . await . is_ok( ) ) ;
18901836 }
1837+
1838+ mod with_expiring_and {
1839+
1840+ mod randomly_generated_keys {
1841+ use std:: time:: Duration ;
1842+
1843+ use torrust_tracker_clock:: clock:: Time ;
1844+ use torrust_tracker_configuration:: v2:: core:: PrivateMode ;
1845+
1846+ use crate :: core:: auth:: Key ;
1847+ use crate :: core:: tests:: the_tracker:: private_tracker;
1848+ use crate :: CurrentClock ;
1849+
1850+ #[ tokio:: test]
1851+ async fn it_should_generate_the_key ( ) {
1852+ let tracker = private_tracker ( ) ;
1853+
1854+ let peer_key = tracker. generate_auth_key ( Some ( Duration :: from_secs ( 100 ) ) ) . await . unwrap ( ) ;
1855+
1856+ assert_eq ! (
1857+ peer_key. valid_until,
1858+ Some ( CurrentClock :: now_add( & Duration :: from_secs( 100 ) ) . unwrap( ) )
1859+ ) ;
1860+ }
1861+
1862+ #[ tokio:: test]
1863+ async fn it_should_authenticate_a_peer_with_the_key ( ) {
1864+ let tracker = private_tracker ( ) ;
1865+
1866+ let peer_key = tracker. generate_auth_key ( Some ( Duration :: from_secs ( 100 ) ) ) . await . unwrap ( ) ;
1867+
1868+ let result = tracker. authenticate ( & peer_key. key ( ) ) . await ;
1869+
1870+ assert ! ( result. is_ok( ) ) ;
1871+ }
1872+
1873+ #[ tokio:: test]
1874+ async fn it_should_accept_an_expired_key_when_checking_expiration_is_disabled_in_configuration ( ) {
1875+ let mut tracker = private_tracker ( ) ;
1876+
1877+ tracker. config . private_mode = Some ( PrivateMode {
1878+ check_keys_expiration : false ,
1879+ } ) ;
1880+
1881+ let past_timestamp = Duration :: ZERO ;
1882+
1883+ let peer_key = tracker
1884+ . add_auth_key ( Key :: new ( "YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ" ) . unwrap ( ) , Some ( past_timestamp) )
1885+ . await
1886+ . unwrap ( ) ;
1887+
1888+ assert ! ( tracker. authenticate( & peer_key. key( ) ) . await . is_ok( ) ) ;
1889+ }
1890+ }
1891+
1892+ mod pre_generated_keys {
1893+ use std:: time:: Duration ;
1894+
1895+ use torrust_tracker_clock:: clock:: Time ;
1896+ use torrust_tracker_configuration:: v2:: core:: PrivateMode ;
1897+
1898+ use crate :: core:: auth:: Key ;
1899+ use crate :: core:: tests:: the_tracker:: private_tracker;
1900+ use crate :: core:: AddKeyRequest ;
1901+ use crate :: CurrentClock ;
1902+
1903+ #[ tokio:: test]
1904+ async fn it_should_add_a_pre_generated_key ( ) {
1905+ let tracker = private_tracker ( ) ;
1906+
1907+ let peer_key = tracker
1908+ . add_peer_key ( AddKeyRequest {
1909+ opt_key : Some ( Key :: new ( "YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ" ) . unwrap ( ) . to_string ( ) ) ,
1910+ opt_seconds_valid : Some ( 100 ) ,
1911+ } )
1912+ . await
1913+ . unwrap ( ) ;
1914+
1915+ assert_eq ! (
1916+ peer_key. valid_until,
1917+ Some ( CurrentClock :: now_add( & Duration :: from_secs( 100 ) ) . unwrap( ) )
1918+ ) ;
1919+ }
1920+
1921+ #[ tokio:: test]
1922+ async fn it_should_authenticate_a_peer_with_the_key ( ) {
1923+ let tracker = private_tracker ( ) ;
1924+
1925+ let peer_key = tracker
1926+ . add_peer_key ( AddKeyRequest {
1927+ opt_key : Some ( Key :: new ( "YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ" ) . unwrap ( ) . to_string ( ) ) ,
1928+ opt_seconds_valid : Some ( 100 ) ,
1929+ } )
1930+ . await
1931+ . unwrap ( ) ;
1932+
1933+ let result = tracker. authenticate ( & peer_key. key ( ) ) . await ;
1934+
1935+ assert ! ( result. is_ok( ) ) ;
1936+ }
1937+
1938+ #[ tokio:: test]
1939+ async fn it_should_accept_an_expired_key_when_checking_expiration_is_disabled_in_configuration ( ) {
1940+ let mut tracker = private_tracker ( ) ;
1941+
1942+ tracker. config . private_mode = Some ( PrivateMode {
1943+ check_keys_expiration : false ,
1944+ } ) ;
1945+
1946+ let peer_key = tracker
1947+ . add_peer_key ( AddKeyRequest {
1948+ opt_key : Some ( Key :: new ( "YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ" ) . unwrap ( ) . to_string ( ) ) ,
1949+ opt_seconds_valid : Some ( 0 ) ,
1950+ } )
1951+ . await
1952+ . unwrap ( ) ;
1953+
1954+ assert ! ( tracker. authenticate( & peer_key. key( ) ) . await . is_ok( ) ) ;
1955+ }
1956+ }
1957+ }
1958+
1959+ mod with_permanent_and {
1960+
1961+ mod randomly_generated_keys {
1962+ use crate :: core:: tests:: the_tracker:: private_tracker;
1963+
1964+ #[ tokio:: test]
1965+ async fn it_should_generate_the_key ( ) {
1966+ let tracker = private_tracker ( ) ;
1967+
1968+ let peer_key = tracker. generate_permanent_auth_key ( ) . await . unwrap ( ) ;
1969+
1970+ assert_eq ! ( peer_key. valid_until, None ) ;
1971+ }
1972+
1973+ #[ tokio:: test]
1974+ async fn it_should_authenticate_a_peer_with_the_key ( ) {
1975+ let tracker = private_tracker ( ) ;
1976+
1977+ let peer_key = tracker. generate_permanent_auth_key ( ) . await . unwrap ( ) ;
1978+
1979+ let result = tracker. authenticate ( & peer_key. key ( ) ) . await ;
1980+
1981+ assert ! ( result. is_ok( ) ) ;
1982+ }
1983+ }
1984+
1985+ mod pre_generated_keys {
1986+ use crate :: core:: auth:: Key ;
1987+ use crate :: core:: tests:: the_tracker:: private_tracker;
1988+ use crate :: core:: AddKeyRequest ;
1989+
1990+ #[ tokio:: test]
1991+ async fn it_should_add_a_pre_generated_key ( ) {
1992+ let tracker = private_tracker ( ) ;
1993+
1994+ let peer_key = tracker
1995+ . add_peer_key ( AddKeyRequest {
1996+ opt_key : Some ( Key :: new ( "YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ" ) . unwrap ( ) . to_string ( ) ) ,
1997+ opt_seconds_valid : None ,
1998+ } )
1999+ . await
2000+ . unwrap ( ) ;
2001+
2002+ assert_eq ! ( peer_key. valid_until, None ) ;
2003+ }
2004+
2005+ #[ tokio:: test]
2006+ async fn it_should_authenticate_a_peer_with_the_key ( ) {
2007+ let tracker = private_tracker ( ) ;
2008+
2009+ let peer_key = tracker
2010+ . add_peer_key ( AddKeyRequest {
2011+ opt_key : Some ( Key :: new ( "YZSl4lMZupRuOpSRC3krIKR5BPB14nrJ" ) . unwrap ( ) . to_string ( ) ) ,
2012+ opt_seconds_valid : None ,
2013+ } )
2014+ . await
2015+ . unwrap ( ) ;
2016+
2017+ let result = tracker. authenticate ( & peer_key. key ( ) ) . await ;
2018+
2019+ assert ! ( result. is_ok( ) ) ;
2020+ }
2021+ }
2022+ }
18912023 }
18922024
18932025 mod handling_an_announce_request { }
0 commit comments