@@ -35,6 +35,7 @@ use crate::api::AsyncClient;
3535#[ cfg( feature = "sync" ) ]
3636use crate :: api:: Client ;
3737use crate :: api:: { ApiError , RestClient } ;
38+ use crate :: auth:: Auth ;
3839
3940use crate :: catalog:: { CatalogError , ServiceEndpoint } ;
4041use crate :: types:: identity:: v3:: Project ;
@@ -96,6 +97,9 @@ use crate::RestError;
9697pub struct FakeOpenStackClient {
9798 /// Known endpoints used by the client
9899 endpoints : HashMap < String , ServiceEndpoint > ,
100+
101+ /// Optional auth information to be used
102+ auth : Option < Auth > ,
99103}
100104
101105impl FakeOpenStackClient {
@@ -104,6 +108,7 @@ impl FakeOpenStackClient {
104108 pub fn new < S : AsRef < str > > ( url : S ) -> Self {
105109 let mut slf = Self {
106110 endpoints : HashMap :: new ( ) ,
111+ auth : None ,
107112 } ;
108113 slf. add_endpoint ( "default" , Url :: parse ( url. as_ref ( ) ) . unwrap ( ) ) ;
109114 slf
@@ -118,6 +123,12 @@ impl FakeOpenStackClient {
118123 ) ;
119124 self
120125 }
126+
127+ /// Set auth information
128+ pub fn set_auth ( & mut self , auth : Option < Auth > ) -> & mut Self {
129+ self . auth = auth;
130+ self
131+ }
121132}
122133
123134impl RestClient for FakeOpenStackClient {
@@ -145,10 +156,13 @@ impl RestClient for FakeOpenStackClient {
145156impl Client for FakeOpenStackClient {
146157 fn rest (
147158 & self ,
148- request : RequestBuilder ,
159+ mut request : RequestBuilder ,
149160 body : Vec < u8 > ,
150161 ) -> Result < Response < Bytes > , ApiError < Self :: Error > > {
151162 let call = || -> Result < _ , Self :: Error > {
163+ if let Some ( auth) = & self . auth {
164+ auth. set_header ( request. headers_mut ( ) . unwrap ( ) ) ?;
165+ }
152166 let http_request = request. body ( body. clone ( ) ) ?;
153167 let request = http_request. try_into ( ) ?;
154168
@@ -175,11 +189,14 @@ impl Client for FakeOpenStackClient {
175189impl AsyncClient for FakeOpenStackClient {
176190 async fn rest_async (
177191 & self ,
178- request : http:: request:: Builder ,
192+ mut request : http:: request:: Builder ,
179193 body : Vec < u8 > ,
180194 ) -> Result < HttpResponse < Bytes > , ApiError < Self :: Error > > {
181195 use futures_util:: TryFutureExt ;
182196 let call = || async {
197+ if let Some ( auth) = & self . auth {
198+ auth. set_header ( request. headers_mut ( ) . unwrap ( ) ) ?;
199+ }
183200 let http_request = request. body ( body) ?;
184201 let request = http_request. try_into ( ) ?;
185202
0 commit comments