Skip to content

Commit 7dc713b

Browse files
authored
Merge pull request #239 from apollographql/it_rejects_different_audience
it_rejects_different_audience is passing due to token expiry not audience mismatch
2 parents 810535b + bd76841 commit 7dc713b

File tree

2 files changed

+33
-20
lines changed

2 files changed

+33
-20
lines changed

crates/apollo-mcp-server/src/auth/valid_token.rs

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ mod test {
105105
use jsonwebtoken::{Algorithm, DecodingKey, EncodingKey, Header, encode, jwk::KeyAlgorithm};
106106
use jwks::Jwk;
107107
use serde::Serialize;
108+
use tracing_test::traced_test;
108109
use url::Url;
109110

110111
use super::ValidateToken;
@@ -215,6 +216,7 @@ mod test {
215216
);
216217
}
217218

219+
#[traced_test]
218220
#[tokio::test]
219221
async fn it_rejects_different_key() {
220222
let key_id = "some-example-id".to_string();
@@ -244,8 +246,18 @@ mod test {
244246
};
245247

246248
assert_eq!(test_validator.validate(jwt).await, None);
249+
250+
logs_assert(|lines: &[&str]| {
251+
lines
252+
.iter()
253+
.filter(|line| line.contains("WARN"))
254+
.any(|line| line.contains("InvalidSignature"))
255+
.then_some(())
256+
.ok_or("Expected warning for validation failure".to_string())
257+
});
247258
}
248259

260+
#[traced_test]
249261
#[tokio::test]
250262
async fn it_rejects_expired() {
251263
let key_id = "some-example-id".to_string();
@@ -269,8 +281,18 @@ mod test {
269281
};
270282

271283
assert_eq!(test_validator.validate(jwt).await, None);
284+
285+
logs_assert(|lines: &[&str]| {
286+
lines
287+
.iter()
288+
.filter(|line| line.contains("WARN"))
289+
.any(|line| line.contains("ExpiredSignature"))
290+
.then_some(())
291+
.ok_or("Expected warning for validation failure".to_string())
292+
});
272293
}
273294

295+
#[traced_test]
274296
#[tokio::test]
275297
async fn it_rejects_different_audience() {
276298
let key_id = "some-example-id".to_string();
@@ -282,8 +304,8 @@ mod test {
282304

283305
let audience = "test-audience".to_string();
284306
let bad_audience = "not-test-audience".to_string();
285-
let in_the_past = chrono::Utc::now().timestamp() - 1000;
286-
let jwt = create_jwt(key_id.clone(), encode_key, bad_audience, in_the_past);
307+
let in_the_future = chrono::Utc::now().timestamp() + 1000;
308+
let jwt = create_jwt(key_id.clone(), encode_key, bad_audience, in_the_future);
287309

288310
let server =
289311
Url::from_str("https://auth.example.com").expect("should parse a valid example server");
@@ -295,5 +317,14 @@ mod test {
295317
};
296318

297319
assert_eq!(test_validator.validate(jwt).await, None);
320+
321+
logs_assert(|lines: &[&str]| {
322+
lines
323+
.iter()
324+
.filter(|line| line.contains("WARN"))
325+
.any(|line| line.contains("InvalidAudience"))
326+
.then_some(())
327+
.ok_or("Expected warning for validation failure".to_string())
328+
});
298329
}
299330
}

crates/apollo-mcp-server/src/introspection/tools/execute.rs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -246,24 +246,6 @@ mod tests {
246246
}
247247
}
248248

249-
#[test]
250-
fn execute_query_err_with_subscription_when_mutation_mode_is_all() {
251-
let execute = Execute::new(MutationMode::All);
252-
253-
let input = json!({
254-
"query": "subscription { user { id name } }",
255-
});
256-
257-
assert_eq!(
258-
Executable::operation(&execute, input),
259-
Err(McpError::new(
260-
ErrorCode::INVALID_PARAMS,
261-
"Invalid operation type".to_string(),
262-
None
263-
))
264-
);
265-
}
266-
267249
#[test]
268250
fn execute_query_invalid_input() {
269251
let execute = Execute::new(MutationMode::None);

0 commit comments

Comments
 (0)