extern crate dkregistry; extern crate mockito; extern crate tokio; use self::mockito::mock; use self::tokio::runtime::Runtime; static API_VERSION_K: &'static str = "Docker-Distribution-API-Version"; static API_VERSION_V: &'static str = "registry/2.0"; #[test] fn test_version_check_status_ok() { let addr = mockito::server_address().to_string(); let _m = mock("GET", "/v2/") .with_status(200) .with_header(API_VERSION_K, API_VERSION_V) .create(); let mut runtime = Runtime::new().unwrap(); let dclient = dkregistry::v2::Client::configure() .registry(&addr) .insecure_registry(true) .username(None) .password(None) .build() .unwrap(); let is_v2 = dclient.is_v2_supported(); let ok = runtime.block_on(is_v2).unwrap(); assert_eq!(ok, true); let ensure_v2 = dclient.ensure_v2_registry(); let _dclient = runtime.block_on(ensure_v2).unwrap(); mockito::reset(); } #[test] fn test_version_check_status_unauth() { let addr = mockito::server_address().to_string(); let _m = mock("GET", "/v2/") .with_status(401) .with_header(API_VERSION_K, API_VERSION_V) .create(); let mut runtime = Runtime::new().unwrap(); let dclient = dkregistry::v2::Client::configure() .registry(&addr) .insecure_registry(true) .username(None) .password(None) .build() .unwrap(); let futcheck = dclient.is_v2_supported(); let res = runtime.block_on(futcheck).unwrap(); assert_eq!(res, true); mockito::reset(); } #[test] fn test_version_check_status_notfound() { let addr = mockito::server_address().to_string(); let _m = mock("GET", "/v2/") .with_status(404) .with_header(API_VERSION_K, API_VERSION_V) .create(); let mut runtime = Runtime::new().unwrap(); let dclient = dkregistry::v2::Client::configure() .registry(&addr) .insecure_registry(true) .username(None) .password(None) .build() .unwrap(); let futcheck = dclient.is_v2_supported(); let res = runtime.block_on(futcheck).unwrap(); assert_eq!(res, false); mockito::reset(); } #[test] fn test_version_check_status_forbidden() { let addr = mockito::server_address().to_string(); let _m = mock("GET", "/v2/") .with_status(403) .with_header(API_VERSION_K, API_VERSION_V) .create(); let mut runtime = Runtime::new().unwrap(); let dclient = dkregistry::v2::Client::configure() .registry(&addr) .insecure_registry(true) .username(None) .password(None) .build() .unwrap(); let futcheck = dclient.is_v2_supported(); let res = runtime.block_on(futcheck).unwrap(); assert_eq!(res, false); mockito::reset(); } #[test] fn test_version_check_noheader() { let addr = mockito::server_address().to_string(); let _m = mock("GET", "/v2/").with_status(403).create(); let mut runtime = Runtime::new().unwrap(); let dclient = dkregistry::v2::Client::configure() .registry(&addr) .insecure_registry(true) .username(None) .password(None) .build() .unwrap(); let futcheck = dclient.is_v2_supported(); let res = runtime.block_on(futcheck).unwrap(); assert_eq!(res, false); mockito::reset(); } #[test] fn test_version_check_trailing_slash() { let addr = mockito::server_address().to_string(); let _m = mock("GET", "/v2") .with_status(200) .with_header(API_VERSION_K, API_VERSION_V) .create(); let mut runtime = Runtime::new().unwrap(); let dclient = dkregistry::v2::Client::configure() .registry(&addr) .insecure_registry(true) .username(None) .password(None) .build() .unwrap(); let futcheck = dclient.is_v2_supported(); let res = runtime.block_on(futcheck).unwrap(); assert_eq!(res, false); mockito::reset(); }