@@ -47,17 +47,37 @@ impl Admin {
4747 } )
4848 }
4949
50+ pub async fn get_environments ( & self ) -> Result < Vec < String > , Error > {
51+ let reply =
52+ admin_rest_request ( self . client . get ( format ! ( "{}/environments" , self . admin_url) ) ) . await ?;
53+ let environments_ids = reply[ "environments" ]
54+ . as_array ( )
55+ . unwrap ( )
56+ . iter ( )
57+ . map ( |v| v[ "id" ] . as_str ( ) . unwrap ( ) . to_owned ( ) )
58+ . collect :: < Vec < _ > > ( ) ;
59+
60+ Ok ( environments_ids)
61+ }
62+
5063 pub async fn create_app ( & self , name : & str , is_test : bool ) -> Result < App , Error > {
64+ let envs = self . get_environments ( ) . await ?;
65+ assert ! ( envs. len( ) > 0 , "found 0 environments" ) ;
66+
5167 let sign_keypair = Keypair :: generate ( & mut OsRng { } ) ;
5268 let private_key_b64 = base64:: encode ( sign_keypair. to_bytes ( ) . as_ref ( ) ) ;
5369
5470 let root_block = serialized_root_block ( & sign_keypair) ;
5571 let serialized_block = base64:: encode ( & root_block) ;
5672
57- let mut json = [ ( "name" , name) , ( "root_block" , & serialized_block) ]
58- . iter ( )
59- . map ( |( k, v) | ( k. to_string ( ) , Value :: from ( * v) ) )
60- . collect :: < serde_json:: Map < _ , _ > > ( ) ;
73+ let mut json = [
74+ ( "name" , name) ,
75+ ( "root_block" , & serialized_block) ,
76+ ( "environment_id" , & envs[ 0 ] ) ,
77+ ]
78+ . iter ( )
79+ . map ( |( k, v) | ( k. to_string ( ) , Value :: from ( * v) ) )
80+ . collect :: < serde_json:: Map < _ , _ > > ( ) ;
6181 if is_test {
6282 json. insert (
6383 "private_signature_key" . to_owned ( ) ,
0 commit comments