Skip to content

Commit e6bfe80

Browse files
committed
Add tests for count=false and count=only
1 parent afaa7c4 commit e6bfe80

File tree

8 files changed

+1137
-0
lines changed

8 files changed

+1137
-0
lines changed

crates/handlers/src/admin/v1/compat_sessions/list.rs

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,5 +471,140 @@ mod tests {
471471
}
472472
}
473473
"#);
474+
475+
// Test count=false
476+
let request = Request::get("/api/admin/v1/compat-sessions?count=false")
477+
.bearer(&token)
478+
.empty();
479+
let response = state.request(request).await;
480+
response.assert_status(StatusCode::OK);
481+
let body: serde_json::Value = response.json();
482+
assert_json_snapshot!(body, @r#"
483+
{
484+
"data": [
485+
{
486+
"type": "compat-session",
487+
"id": "01FSHNB530AAPR7PEV8KNBZD5Y",
488+
"attributes": {
489+
"user_id": "01FSHN9AG0MZAA6S4AF7CTV32E",
490+
"device_id": "LoieH5Iecx",
491+
"user_session_id": null,
492+
"redirect_uri": null,
493+
"created_at": "2022-01-16T14:41:00Z",
494+
"user_agent": null,
495+
"last_active_at": null,
496+
"last_active_ip": null,
497+
"finished_at": null,
498+
"human_name": null
499+
},
500+
"links": {
501+
"self": "/api/admin/v1/compat-sessions/01FSHNB530AAPR7PEV8KNBZD5Y"
502+
}
503+
},
504+
{
505+
"type": "compat-session",
506+
"id": "01FSHNCZP0PPF7X0EVMJNECPZW",
507+
"attributes": {
508+
"user_id": "01FSHNB530AJ6AC5HQ9X6H4RP4",
509+
"device_id": "ZXyvelQWW9",
510+
"user_session_id": null,
511+
"redirect_uri": null,
512+
"created_at": "2022-01-16T14:42:00Z",
513+
"user_agent": null,
514+
"last_active_at": null,
515+
"last_active_ip": null,
516+
"finished_at": "2022-01-16T14:43:00Z",
517+
"human_name": null
518+
},
519+
"links": {
520+
"self": "/api/admin/v1/compat-sessions/01FSHNCZP0PPF7X0EVMJNECPZW"
521+
}
522+
}
523+
],
524+
"links": {
525+
"self": "/api/admin/v1/compat-sessions?count=false&page[first]=10",
526+
"first": "/api/admin/v1/compat-sessions?count=false&page[first]=10",
527+
"last": "/api/admin/v1/compat-sessions?count=false&page[last]=10"
528+
}
529+
}
530+
"#);
531+
532+
// Test count=only
533+
let request = Request::get("/api/admin/v1/compat-sessions?count=only")
534+
.bearer(&token)
535+
.empty();
536+
let response = state.request(request).await;
537+
response.assert_status(StatusCode::OK);
538+
let body: serde_json::Value = response.json();
539+
assert_json_snapshot!(body, @r#"
540+
{
541+
"meta": {
542+
"count": 2
543+
},
544+
"links": {
545+
"self": "/api/admin/v1/compat-sessions?count=only"
546+
}
547+
}
548+
"#);
549+
550+
// Test count=false with filtering
551+
let request = Request::get(format!(
552+
"/api/admin/v1/compat-sessions?count=false&filter[user]={}",
553+
alice.id
554+
))
555+
.bearer(&token)
556+
.empty();
557+
let response = state.request(request).await;
558+
response.assert_status(StatusCode::OK);
559+
let body: serde_json::Value = response.json();
560+
assert_json_snapshot!(body, @r#"
561+
{
562+
"data": [
563+
{
564+
"type": "compat-session",
565+
"id": "01FSHNB530AAPR7PEV8KNBZD5Y",
566+
"attributes": {
567+
"user_id": "01FSHN9AG0MZAA6S4AF7CTV32E",
568+
"device_id": "LoieH5Iecx",
569+
"user_session_id": null,
570+
"redirect_uri": null,
571+
"created_at": "2022-01-16T14:41:00Z",
572+
"user_agent": null,
573+
"last_active_at": null,
574+
"last_active_ip": null,
575+
"finished_at": null,
576+
"human_name": null
577+
},
578+
"links": {
579+
"self": "/api/admin/v1/compat-sessions/01FSHNB530AAPR7PEV8KNBZD5Y"
580+
}
581+
}
582+
],
583+
"links": {
584+
"self": "/api/admin/v1/compat-sessions?filter[user]=01FSHN9AG0MZAA6S4AF7CTV32E&count=false&page[first]=10",
585+
"first": "/api/admin/v1/compat-sessions?filter[user]=01FSHN9AG0MZAA6S4AF7CTV32E&count=false&page[first]=10",
586+
"last": "/api/admin/v1/compat-sessions?filter[user]=01FSHN9AG0MZAA6S4AF7CTV32E&count=false&page[last]=10"
587+
}
588+
}
589+
"#);
590+
591+
// Test count=only with filtering
592+
let request =
593+
Request::get("/api/admin/v1/compat-sessions?count=only&filter[status]=active")
594+
.bearer(&token)
595+
.empty();
596+
let response = state.request(request).await;
597+
response.assert_status(StatusCode::OK);
598+
let body: serde_json::Value = response.json();
599+
assert_json_snapshot!(body, @r#"
600+
{
601+
"meta": {
602+
"count": 1
603+
},
604+
"links": {
605+
"self": "/api/admin/v1/compat-sessions?filter[status]=active&count=only"
606+
}
607+
}
608+
"#);
474609
}
475610
}

crates/handlers/src/admin/v1/oauth2_sessions/list.rs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,5 +381,61 @@ mod tests {
381381
}
382382
}
383383
"#);
384+
385+
// Test count=false
386+
let request = Request::get("/api/admin/v1/oauth2-sessions?count=false")
387+
.bearer(&token)
388+
.empty();
389+
let response = state.request(request).await;
390+
response.assert_status(StatusCode::OK);
391+
let body: serde_json::Value = response.json();
392+
insta::assert_json_snapshot!(body, @r#"
393+
{
394+
"data": [
395+
{
396+
"type": "oauth2-session",
397+
"id": "01FSHN9AG0MKGTBNZ16RDR3PVY",
398+
"attributes": {
399+
"created_at": "2022-01-16T14:40:00Z",
400+
"finished_at": null,
401+
"user_id": null,
402+
"user_session_id": null,
403+
"client_id": "01FSHN9AG0FAQ50MT1E9FFRPZR",
404+
"scope": "urn:mas:admin",
405+
"user_agent": null,
406+
"last_active_at": null,
407+
"last_active_ip": null,
408+
"human_name": null
409+
},
410+
"links": {
411+
"self": "/api/admin/v1/oauth2-sessions/01FSHN9AG0MKGTBNZ16RDR3PVY"
412+
}
413+
}
414+
],
415+
"links": {
416+
"self": "/api/admin/v1/oauth2-sessions?count=false&page[first]=10",
417+
"first": "/api/admin/v1/oauth2-sessions?count=false&page[first]=10",
418+
"last": "/api/admin/v1/oauth2-sessions?count=false&page[last]=10"
419+
}
420+
}
421+
"#);
422+
423+
// Test count=only
424+
let request = Request::get("/api/admin/v1/oauth2-sessions?count=only")
425+
.bearer(&token)
426+
.empty();
427+
let response = state.request(request).await;
428+
response.assert_status(StatusCode::OK);
429+
let body: serde_json::Value = response.json();
430+
insta::assert_json_snapshot!(body, @r#"
431+
{
432+
"meta": {
433+
"count": 1
434+
},
435+
"links": {
436+
"self": "/api/admin/v1/oauth2-sessions?count=only"
437+
}
438+
}
439+
"#);
384440
}
385441
}

crates/handlers/src/admin/v1/upstream_oauth_links/list.rs

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,5 +517,155 @@ mod tests {
517517
}
518518
}
519519
"###);
520+
521+
// Test count=false
522+
let request = Request::get("/api/admin/v1/upstream-oauth-links?count=false")
523+
.bearer(&token)
524+
.empty();
525+
let response = state.request(request).await;
526+
response.assert_status(StatusCode::OK);
527+
let body: serde_json::Value = response.json();
528+
assert_json_snapshot!(body, @r###"
529+
{
530+
"data": [
531+
{
532+
"type": "upstream-oauth-link",
533+
"id": "01FSHN9AG0AQZQP8DX40GD59PW",
534+
"attributes": {
535+
"created_at": "2022-01-16T14:40:00Z",
536+
"provider_id": "01FSHN9AG09NMZYX8MFYH578R9",
537+
"subject": "subject1",
538+
"user_id": "01FSHN9AG0MZAA6S4AF7CTV32E",
539+
"human_account_name": "alice@acme"
540+
},
541+
"links": {
542+
"self": "/api/admin/v1/upstream-oauth-links/01FSHN9AG0AQZQP8DX40GD59PW"
543+
}
544+
},
545+
{
546+
"type": "upstream-oauth-link",
547+
"id": "01FSHN9AG0PJZ6DZNTAA1XKPT4",
548+
"attributes": {
549+
"created_at": "2022-01-16T14:40:00Z",
550+
"provider_id": "01FSHN9AG09NMZYX8MFYH578R9",
551+
"subject": "subject3",
552+
"user_id": "01FSHN9AG0AJ6AC5HQ9X6H4RP4",
553+
"human_account_name": "bob@acme"
554+
},
555+
"links": {
556+
"self": "/api/admin/v1/upstream-oauth-links/01FSHN9AG0PJZ6DZNTAA1XKPT4"
557+
}
558+
},
559+
{
560+
"type": "upstream-oauth-link",
561+
"id": "01FSHN9AG0QHEHKX2JNQ2A2D07",
562+
"attributes": {
563+
"created_at": "2022-01-16T14:40:00Z",
564+
"provider_id": "01FSHN9AG0KEPHYQQXW9XPTX6Z",
565+
"subject": "subject2",
566+
"user_id": "01FSHN9AG0MZAA6S4AF7CTV32E",
567+
"human_account_name": "alice@example"
568+
},
569+
"links": {
570+
"self": "/api/admin/v1/upstream-oauth-links/01FSHN9AG0QHEHKX2JNQ2A2D07"
571+
}
572+
}
573+
],
574+
"links": {
575+
"self": "/api/admin/v1/upstream-oauth-links?count=false&page[first]=10",
576+
"first": "/api/admin/v1/upstream-oauth-links?count=false&page[first]=10",
577+
"last": "/api/admin/v1/upstream-oauth-links?count=false&page[last]=10"
578+
}
579+
}
580+
"###);
581+
582+
// Test count=only
583+
let request = Request::get("/api/admin/v1/upstream-oauth-links?count=only")
584+
.bearer(&token)
585+
.empty();
586+
let response = state.request(request).await;
587+
response.assert_status(StatusCode::OK);
588+
let body: serde_json::Value = response.json();
589+
assert_json_snapshot!(body, @r###"
590+
{
591+
"meta": {
592+
"count": 3
593+
},
594+
"links": {
595+
"self": "/api/admin/v1/upstream-oauth-links?count=only"
596+
}
597+
}
598+
"###);
599+
600+
// Test count=false with filtering
601+
let request = Request::get(format!(
602+
"/api/admin/v1/upstream-oauth-links?count=false&filter[user]={}",
603+
alice.id
604+
))
605+
.bearer(&token)
606+
.empty();
607+
let response = state.request(request).await;
608+
response.assert_status(StatusCode::OK);
609+
let body: serde_json::Value = response.json();
610+
assert_json_snapshot!(body, @r#"
611+
{
612+
"data": [
613+
{
614+
"type": "upstream-oauth-link",
615+
"id": "01FSHN9AG0AQZQP8DX40GD59PW",
616+
"attributes": {
617+
"created_at": "2022-01-16T14:40:00Z",
618+
"provider_id": "01FSHN9AG09NMZYX8MFYH578R9",
619+
"subject": "subject1",
620+
"user_id": "01FSHN9AG0MZAA6S4AF7CTV32E",
621+
"human_account_name": "alice@acme"
622+
},
623+
"links": {
624+
"self": "/api/admin/v1/upstream-oauth-links/01FSHN9AG0AQZQP8DX40GD59PW"
625+
}
626+
},
627+
{
628+
"type": "upstream-oauth-link",
629+
"id": "01FSHN9AG0QHEHKX2JNQ2A2D07",
630+
"attributes": {
631+
"created_at": "2022-01-16T14:40:00Z",
632+
"provider_id": "01FSHN9AG0KEPHYQQXW9XPTX6Z",
633+
"subject": "subject2",
634+
"user_id": "01FSHN9AG0MZAA6S4AF7CTV32E",
635+
"human_account_name": "alice@example"
636+
},
637+
"links": {
638+
"self": "/api/admin/v1/upstream-oauth-links/01FSHN9AG0QHEHKX2JNQ2A2D07"
639+
}
640+
}
641+
],
642+
"links": {
643+
"self": "/api/admin/v1/upstream-oauth-links?filter[user]=01FSHN9AG0MZAA6S4AF7CTV32E&count=false&page[first]=10",
644+
"first": "/api/admin/v1/upstream-oauth-links?filter[user]=01FSHN9AG0MZAA6S4AF7CTV32E&count=false&page[first]=10",
645+
"last": "/api/admin/v1/upstream-oauth-links?filter[user]=01FSHN9AG0MZAA6S4AF7CTV32E&count=false&page[last]=10"
646+
}
647+
}
648+
"#);
649+
650+
// Test count=only with filtering
651+
let request = Request::get(format!(
652+
"/api/admin/v1/upstream-oauth-links?count=only&filter[provider]={}",
653+
provider1.id
654+
))
655+
.bearer(&token)
656+
.empty();
657+
let response = state.request(request).await;
658+
response.assert_status(StatusCode::OK);
659+
let body: serde_json::Value = response.json();
660+
assert_json_snapshot!(body, @r#"
661+
{
662+
"meta": {
663+
"count": 2
664+
},
665+
"links": {
666+
"self": "/api/admin/v1/upstream-oauth-links?filter[provider]=01FSHN9AG09NMZYX8MFYH578R9&count=only"
667+
}
668+
}
669+
"#);
520670
}
521671
}

0 commit comments

Comments
 (0)