|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- #[cfg(feature = "robocraft2")]
- use libfj::robocraft2;
-
- #[cfg(feature = "robocraft2")]
- async fn builder() -> robocraft2::FactoryAPI {
- let token = robocraft2::PortalTokenProvider::with_username("FJAPIC00L", "P4$$w0rd").await.unwrap();
- robocraft2::FactoryAPI::with_auth(Box::new(token))
- }
-
- #[cfg(feature = "robocraft2")]
- //#[tokio::test]
- #[allow(dead_code)]
- async fn robocraft2_factory_moderate() -> Result<(), ()> {
- let api = builder().await;
- let robot = api.list().await.unwrap().results.pop().unwrap();
- let result = api.moderate(robocraft2::ModerateRobotPayload {
- approve: false,
- reason: "Automated test".to_owned(),
- }, robot.robot.id).await;
- assert!(result.is_ok());
- Ok(())
- }
-
- #[cfg(feature = "robocraft2")]
- //#[tokio::test]
- #[allow(dead_code)]
- async fn robocraft2_factory_report() -> Result<(), ()> {
- let api = builder().await;
- let robot = api.list().await.unwrap().results.pop().unwrap();
- let result = api.report(robocraft2::ReportRobotPayload {
- reason: "Automated test".to_owned(),
- }, robot.robot.id).await;
- assert!(result.is_ok());
- Ok(())
- }
-
- #[cfg(feature = "robocraft2")]
- #[tokio::test]
- async fn robocraft2_factory_default_query() -> Result<(), ()> {
- let api = builder().await;
- let result = api.list().await;
- assert!(result.is_ok());
- let robo_info = unwrap_factory2(result);
- assert_ne!(robo_info.results.len(), 0);
- for robot in &robo_info.results {
- assert_ne!(robot.robot.name, "");
- assert_ne!(robot.robot.creator_id, "");
- assert_ne!(robot.robot.creator_id, "");
- //println!("RobotInfo.to_string() -> `{}`", robot.robot.to_string());
- println!("SearchResponseItem {}", serde_json::to_string_pretty(&robot).unwrap());
- }
- Ok(())
- }
-
- #[cfg(feature = "robocraft2")]
- #[tokio::test]
- #[allow(dead_code)]
- async fn robocraft2_factory_info_query() -> Result<(), ()> {
- let api = builder().await;
- let result = api.get("08dadf8d-1953-44bc-8d49-c432f6640723".to_owned()).await;
- assert!(result.is_ok());
- let robo_info = unwrap_factory2(result);
- println!("GetRobotResponse {}", serde_json::to_string_pretty(&robo_info).unwrap());
- Ok(())
- }
-
- #[cfg(feature = "robocraft2")]
- #[tokio::test]
- async fn robocraft2_factory_sort() -> Result<(), ()> {
- let api = builder().await;
- let mut query = robocraft2::SearchPayload::default();
- query.sort_by = robocraft2::sort::DATE;
- query.order_by = robocraft2::order::ASCENDING;
- let result = api.search(query).await;
- let robo_info = unwrap_factory2(result);
- assert_ne!(robo_info.results.len(), 0);
- for robot in &robo_info.results {
- assert_ne!(robot.robot.name, "");
- assert_ne!(robot.robot.creator_id, "");
- assert_ne!(robot.robot.creator_id, "");
- //println!("RobotInfo.to_string() -> `{}`", robot.robot.to_string());
- //println!("SearchResponseItem {}", serde_json::to_string_pretty(&robot).unwrap());
- println!("date: {}", robot.robot.created);
- }
- println!("first url: {}", robo_info.results[0].robot.image.as_ref().unwrap());
- Ok(())
- }
-
-
- #[cfg(feature = "robocraft2")]
- #[tokio::test]
- async fn robocraft2_factory_info() -> Result<(), ()> {
- let api = builder().await;
- let result = api.factory_info().await;
- assert!(result.is_ok());
- let crf_info = unwrap_factory2(result);
- println!("FactoryInfo {:?}", crf_info);
- Ok(())
- }
-
- #[cfg(feature = "robocraft2")]
- //#[tokio::test]
- #[allow(dead_code)]
- async fn robocraft2_factory_upload() -> Result<(), ()> {
- let api = builder().await;
-
- // copy default bot
- let result = api.get("08dab2c9-7a72-4ec4-843c-154fe8768e91".to_owned()).await;
- assert!(result.is_ok());
- let robot = unwrap_factory2(result);
-
- let result = api.create_robot(
- robocraft2::CreateRobotPayload {
- name: "API is easy".to_owned(),
- data: robot.data, // base64
- image: "".to_owned(), // base64
- base_cpu: 42,
- weapon_cpu: 1,
- cosmetic_cpu: 6,
- cluster_count: 1,
- block_counts: vec![
- (42, 3),
- (3, 6)
- ].drain(..).collect(),
- materials_used: vec![
- 8,
- 4
- ].drain(..).collect(),
- minimum_offset_x: 0.0,
- minimum_offset_y: 0.0,
- minimum_offset_z: 0.0,
- maximum_offset_x: 0.0,
- maximum_offset_y: 0.0,
- maximum_offset_z: 0.0,
- }
- ).await;
- //assert!(result.is_ok());
- let robot_info = unwrap_factory2(result);
- println!("CreateRobotInfo {:?}", robot_info);
- let result = api.publish_robot(
- robocraft2::PublishRobotPayload {
- name: "CRF API oh my".to_owned(),
- description: "There once was a person named NGnius, who simply wasn't that bright.\nBut he had a misleading name, and wasn't not quite unhated\nSo he thought it alright to put up a fight\nand get banned for reverse engineering".to_owned(),
- techpoints: -42,
- bloxcoin: 123
- }, robot_info.header.id.clone()).await;
- //assert!(result.is_ok());
- let _publish_info = unwrap_factory2(result);
-
- // clean up
- let result = api.unpublish_bot(robot_info.header.id.clone()).await;
- //assert!(result.is_ok());
- let _robot = unwrap_factory2(result);
-
- let result = api.delete_robot(robot_info.header.id).await;
- //assert!(result.is_ok());
- let _robot = unwrap_factory2(result);
- Ok(())
- }
-
- #[cfg(feature = "robocraft2")]
- #[tokio::test]
- async fn robocraft2_factory_my_bots() -> Result<(), ()> {
- let api = robocraft2::FactoryAPI::with_auth(Box::new(robocraft2::PortalTokenProvider::with_username("FJAPIC00L", "P4$$w0rd").await.unwrap()));
- let result = api.my_robots().await;
- assert!(result.is_ok());
- let robo_info = unwrap_factory2(result);
- assert_ne!(robo_info.vehicles.len(), 0);
- for robot in &robo_info.vehicles {
- assert_ne!(robot.name, "");
- assert_ne!(robot.creator_id, "");
- assert_ne!(robot.creator_id, "");
- assert_ne!(robot.image, None);
- assert_ne!(robot.image.as_ref().unwrap(), "");
- println!("My bot `{}`", robot.to_string());
- //println!("my vehicle {}", serde_json::to_string_pretty(&robot).unwrap());
- }
- Ok(())
- }
-
- #[cfg(feature = "robocraft2")]
- #[tokio::test]
- async fn robocraft2_factory_my_published_bots() -> Result<(), ()> {
- let api = robocraft2::FactoryAPI::with_auth(Box::new(robocraft2::PortalTokenProvider::with_username("FJAPIC00L", "P4$$w0rd").await.unwrap()));
- let result = api.my_published_robots().await;
- assert!(result.is_ok());
- let robo_info = unwrap_factory2(result);
- //assert_ne!(robo_info.vehicles.len(), 0);
- for robot in &robo_info.vehicles {
- assert_ne!(robot.name, "");
- assert_ne!(robot.creator_id, "");
- assert_ne!(robot.creator_id, "");
- assert_ne!(robot.image, None);
- assert_ne!(robot.image.as_ref().unwrap(), "");
- println!("My pub bot `{}`", robot.to_string());
- //println!("pub vehicle {}", serde_json::to_string_pretty(&robot).unwrap());
- }
- Ok(())
- }
-
- #[cfg(feature = "robocraft2")]
- //#[tokio::test]
- #[allow(dead_code)]
- async fn robocraft2_factory_bot() -> Result<(), ()> {
- let api = robocraft2::FactoryAPI::with_auth(Box::new(robocraft2::PortalTokenProvider::with_username("FJAPIC00L", "P4$$w0rd").await.unwrap()));
- let result = api.get("08dab2c9-7a72-4ec4-843c-154fe8768e91".to_owned()).await;
- //assert!(result.is_ok());
- let robot = unwrap_factory2(result);
- assert_ne!(robot.header.name, "");
- assert_ne!(robot.header.creator_id, "");
- assert_ne!(robot.header.creator_id, "");
- //assert_ne!(robot.header.image, "");
- //assert_ne!(robot.description, "");
- assert_ne!(robot.data, "");
- println!("robot {}", serde_json::to_string_pretty(&robot).unwrap());
- Ok(())
- }
-
- #[cfg(feature = "robocraft2")]
- //#[tokio::test]
- #[allow(dead_code)]
- async fn robocraft2_factory_delete_all_my_bots() -> Result<(), ()> {
- let api = builder().await;
- let my_bots = api.my_published_robots().await.unwrap();
- for bot in my_bots.vehicles {
- let result = api.delete_robot(bot.id).await;
- unwrap_factory2(result);
- }
- Ok(())
- }
-
- #[cfg(feature = "robocraft2")]
- //#[tokio::test]
- #[allow(dead_code)]
- async fn robocraft2_factory_unpublish_all_my_bots() -> Result<(), ()> {
- let api = builder().await;
- let my_bots = api.my_published_robots().await.unwrap();
- for bot in my_bots.vehicles {
- let result = api.unpublish_bot(bot.id).await;
- unwrap_factory2(result);
- }
- Ok(())
- }
-
- fn unwrap_factory2<T>(result: Result<T, robocraft2::FactoryError>) -> T {
- match result {
- Ok(t) => t,
- Err(e) => {
- //println!("FactoryError: {}", e);
- panic!("CRF2 Error: {}", e);
- }
- }
- }
|