@@ -105,13 +105,17 @@ impl TokenManager {
105105 fn add_optional_fields < ' a > (
106106 & self ,
107107 form : & mut Vec < ( & str , & ' a str ) > ,
108- _auth : & ' a AuthConfig ,
108+ auth : & ' a AuthConfig ,
109109 scopes : & [ String ] ,
110110 ) {
111111 if !scopes. is_empty ( ) {
112112 let scopes_str: & ' a str = Box :: leak ( scopes. join ( " " ) . into_boxed_str ( ) ) ;
113113 form. push ( ( "scope" , scopes_str) ) ;
114114 }
115+
116+ if let Some ( secret) = & auth. secret {
117+ form. push ( ( "client_secret" , secret) ) ;
118+ }
115119 }
116120}
117121
@@ -147,6 +151,41 @@ mod tests {
147151 auth_url : format ! ( "{}/realms/master" , server. url( ) ) ,
148152 client_id : "test" . to_string ( ) ,
149153 refresh_token : None ,
154+ secret : None ,
155+ } ;
156+
157+ let token_manager = TokenManager :: new ( ) ;
158+ let credentials_provider = MockCredentialsProvider ;
159+ let scopes = vec ! [ "openid" . to_string( ) , "profile" . to_string( ) ] ;
160+
161+ let token = token_manager
162+ . get_or_refresh_token ( & mut auth, false , & scopes, & credentials_provider)
163+ . await
164+ . unwrap ( ) ;
165+
166+ assert_eq ! ( token, "token" ) ;
167+ mock. assert_async ( ) . await ;
168+ }
169+
170+ #[ tokio:: test]
171+ async fn ensure_secret ( ) {
172+ let mock_response = r#"{"access_token": "token", "refresh_token": "refresh"}"# ;
173+ let mut server = Server :: new_async ( ) . await ;
174+
175+ let mock = server
176+ . mock ( "POST" , "/realms/master/protocol/openid-connect/token" )
177+ . with_status ( 200 )
178+ . match_body ( Regex ( "client_secret=secret" . into ( ) ) )
179+ . with_header ( "content-type" , "application/json" )
180+ . with_body ( mock_response)
181+ . create_async ( )
182+ . await ;
183+
184+ let mut auth = AuthConfig {
185+ auth_url : format ! ( "{}/realms/master" , server. url( ) ) ,
186+ client_id : "test" . to_string ( ) ,
187+ refresh_token : None ,
188+ secret : Some ( "secret" . to_string ( ) ) ,
150189 } ;
151190
152191 let token_manager = TokenManager :: new ( ) ;
0 commit comments