extern crate dkregistry; extern crate tokio; use self::tokio::runtime::Runtime; static REGISTRY: &'static str = "registry-1.docker.io"; fn get_env() -> Option<(String, String)> { let user = ::std::env::var("DKREG_DOCKER_USER"); let password = ::std::env::var("DKREG_DOCKER_PASSWD"); match (user, password) { (Ok(u), Ok(t)) => Some((u, t)), _ => None, } } #[test] fn test_dockerio_getenv() { if get_env().is_none() { println!( "[WARN] {}: missing DKREG_DOCKER_USER / DKREG_DOCKER_PASSWD", REGISTRY ); } } #[test] fn test_dockerio_base() { let (user, password) = match get_env() { Some(t) => t, None => return, }; let mut runtime = Runtime::new().unwrap(); let dclient = dkregistry::v2::Client::configure() .registry(REGISTRY) .insecure_registry(false) .username(Some(user)) .password(Some(password)) .build() .unwrap(); let futcheck = dclient.is_v2_supported(); let res = runtime.block_on(futcheck).unwrap(); assert_eq!(res, true); } #[test] fn test_dockerio_insecure() { let mut runtime = Runtime::new().unwrap(); let dclient = dkregistry::v2::Client::configure() .registry(REGISTRY) .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); } #[test] fn test_dockerio_anonymous_auth() { let mut runtime = Runtime::new().unwrap(); let image = "library/alpine"; let version = "latest"; let login_scope = format!("repository:{}:pull", image); let scopes = vec![login_scope.as_str()]; let dclient_future = dkregistry::v2::Client::configure() .registry(REGISTRY) .insecure_registry(false) .username(None) .password(None) .build() .unwrap() .authenticate(scopes.as_slice()); let dclient = runtime.block_on(dclient_future).unwrap(); let futcheck = dclient.get_manifest(image, version); let res = runtime.block_on(futcheck); assert_eq!(res.is_ok(), true); }