Skip to content

Commit 4b0ea5f

Browse files
committed
test: replace live examples with synthetic fixtures
1 parent d339dcd commit 4b0ea5f

5 files changed

Lines changed: 357 additions & 303 deletions

File tree

‎tests/api_integration.rs‎

Lines changed: 75 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ async fn test_refresh_adhoc_query_success() {
304304

305305
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
306306
let job = client
307-
.refresh_adhoc_query("SELECT 1 AS one", 63, None)
307+
.refresh_adhoc_query("SELECT 1 AS one", SAMPLE_DATA_SOURCE_ID, None)
308308
.await
309309
.unwrap();
310310

@@ -348,7 +348,7 @@ async fn test_execute_adhoc_with_polling_success() {
348348

349349
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
350350
let result = client
351-
.execute_adhoc_with_polling("SELECT 1 AS one", 63, None, 10, 100)
351+
.execute_adhoc_with_polling("SELECT 1 AS one", SAMPLE_DATA_SOURCE_ID, None, 10, 100)
352352
.await
353353
.unwrap();
354354

@@ -368,7 +368,7 @@ async fn test_execute_adhoc_with_polling_failure() {
368368

369369
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
370370
let result = client
371-
.execute_adhoc_with_polling("SELECT bad syntax", 63, None, 10, 100)
371+
.execute_adhoc_with_polling("SELECT bad syntax", SAMPLE_DATA_SOURCE_ID, None, 10, 100)
372372
.await;
373373

374374
assert!(result.is_err());
@@ -412,11 +412,11 @@ async fn test_list_data_sources_success() {
412412
let data_sources = client.list_data_sources().await.unwrap();
413413

414414
assert_eq!(data_sources.len(), 2);
415-
assert_eq!(data_sources[0].id, 63);
416-
assert_eq!(data_sources[0].name, "Telemetry (BigQuery)");
415+
assert_eq!(data_sources[0].id, SAMPLE_DATA_SOURCE_ID);
416+
assert_eq!(data_sources[0].name, "Example Data Source");
417417
assert_eq!(data_sources[0].ds_type, "bigquery");
418-
assert_eq!(data_sources[1].id, 10);
419-
assert_eq!(data_sources[1].name, "Redash metadata");
418+
assert_eq!(data_sources[1].id, SAMPLE_SECOND_DATA_SOURCE_ID);
419+
assert_eq!(data_sources[1].name, "Example Data Source Two");
420420
assert_eq!(data_sources[1].ds_type, "pg");
421421
}
422422

@@ -436,12 +436,14 @@ async fn test_list_data_sources_empty() {
436436
async fn test_get_data_source_success() {
437437
let mock_server = MockServer::start().await;
438438

439-
mock_get_data_source(63).mount(&mock_server).await;
439+
mock_get_data_source(SAMPLE_DATA_SOURCE_ID)
440+
.mount(&mock_server)
441+
.await;
440442

441443
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
442-
let data_source = client.get_data_source(63).await.unwrap();
444+
let data_source = client.get_data_source(SAMPLE_DATA_SOURCE_ID).await.unwrap();
443445

444-
assert_eq!(data_source.id, 63);
446+
assert_eq!(data_source.id, SAMPLE_DATA_SOURCE_ID);
445447
assert_eq!(data_source.name, "Test Data Source");
446448
assert_eq!(data_source.ds_type, "bigquery");
447449
assert_eq!(
@@ -468,10 +470,15 @@ async fn test_get_data_source_not_found() {
468470
async fn test_get_data_source_schema_success() {
469471
let mock_server = MockServer::start().await;
470472

471-
mock_get_data_source_schema(63).mount(&mock_server).await;
473+
mock_get_data_source_schema(SAMPLE_DATA_SOURCE_ID)
474+
.mount(&mock_server)
475+
.await;
472476

473477
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
474-
let schema = client.get_data_source_schema(63, false).await.unwrap();
478+
let schema = client
479+
.get_data_source_schema(SAMPLE_DATA_SOURCE_ID, false)
480+
.await
481+
.unwrap();
475482

476483
assert_eq!(schema.schema.len(), 2);
477484
assert_eq!(schema.schema[0].name, "table1");
@@ -488,12 +495,14 @@ async fn test_get_data_source_schema_success() {
488495
async fn test_get_data_source_schema_unauthorized() {
489496
let mock_server = MockServer::start().await;
490497

491-
mock_get_data_source_schema_unauthorized(63)
498+
mock_get_data_source_schema_unauthorized(SAMPLE_DATA_SOURCE_ID)
492499
.mount(&mock_server)
493500
.await;
494501

495502
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
496-
let result = client.get_data_source_schema(63, false).await;
503+
let result = client
504+
.get_data_source_schema(SAMPLE_DATA_SOURCE_ID, false)
505+
.await;
497506

498507
assert!(result.is_err());
499508
}
@@ -599,8 +608,8 @@ async fn test_list_favorite_dashboards_success() {
599608

600609
assert_eq!(response.count, 2);
601610
assert_eq!(response.results.len(), 2);
602-
assert_eq!(response.results[0].id, 2570);
603-
assert_eq!(response.results[0].name, "Firefox Desktop on SteamOS");
611+
assert_eq!(response.results[0].id, SAMPLE_DASHBOARD_ID);
612+
assert_eq!(response.results[0].name, "Example Dashboard");
604613
assert!(!response.results[0].is_archived);
605614
}
606615

@@ -623,16 +632,16 @@ async fn test_list_favorite_dashboards_empty() {
623632
async fn test_get_dashboard_success() {
624633
let mock_server = MockServer::start().await;
625634

626-
mock_get_dashboard(2570, "Test Dashboard", false)
635+
mock_get_dashboard(SAMPLE_DASHBOARD_ID, "Test Dashboard", false)
627636
.mount(&mock_server)
628637
.await;
629638

630639
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
631640
let dashboard = client.get_dashboard("test-dashboard").await.unwrap();
632641

633-
assert_eq!(dashboard.id, 2570);
642+
assert_eq!(dashboard.id, SAMPLE_DASHBOARD_ID);
634643
assert_eq!(dashboard.name, "Test Dashboard");
635-
assert_eq!(dashboard.user_id, 530);
644+
assert_eq!(dashboard.user_id, SAMPLE_USER_ID);
636645
assert!(!dashboard.is_archived);
637646
assert!(!dashboard.is_draft);
638647
}
@@ -655,14 +664,14 @@ async fn test_get_dashboard_not_found() {
655664
async fn test_get_dashboard_archived() {
656665
let mock_server = MockServer::start().await;
657666

658-
mock_get_dashboard(2570, "Archived Dashboard", true)
667+
mock_get_dashboard(SAMPLE_DASHBOARD_ID, "Archived Dashboard", true)
659668
.mount(&mock_server)
660669
.await;
661670

662671
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
663672
let dashboard = client.get_dashboard("archived-dashboard").await.unwrap();
664673

665-
assert_eq!(dashboard.id, 2570);
674+
assert_eq!(dashboard.id, SAMPLE_DASHBOARD_ID);
666675
assert_eq!(dashboard.name, "Archived Dashboard");
667676
assert!(dashboard.is_archived);
668677
}
@@ -671,17 +680,17 @@ async fn test_get_dashboard_archived() {
671680
async fn test_update_dashboard_success() {
672681
let mock_server = MockServer::start().await;
673682

674-
mock_update_dashboard(2570, "Updated Dashboard")
683+
mock_update_dashboard(SAMPLE_DASHBOARD_ID, "Updated Dashboard")
675684
.mount(&mock_server)
676685
.await;
677686

678687
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
679688

680689
let dashboard = stmo_cli::models::Dashboard {
681-
id: 2570,
690+
id: SAMPLE_DASHBOARD_ID,
682691
name: "Updated Dashboard".to_string(),
683692
slug: "updated-dashboard".to_string(),
684-
user_id: 530,
693+
user_id: SAMPLE_USER_ID,
685694
is_archived: false,
686695
is_draft: false,
687696
filters_enabled: false,
@@ -691,18 +700,20 @@ async fn test_update_dashboard_success() {
691700

692701
let result = client.update_dashboard(&dashboard).await.unwrap();
693702

694-
assert_eq!(result.id, 2570);
703+
assert_eq!(result.id, SAMPLE_DASHBOARD_ID);
695704
assert_eq!(result.name, "Updated Dashboard");
696705
}
697706

698707
#[tokio::test]
699708
async fn test_archive_dashboard_success() {
700709
let mock_server = MockServer::start().await;
701710

702-
mock_archive_dashboard(2570).mount(&mock_server).await;
711+
mock_archive_dashboard(SAMPLE_DASHBOARD_ID)
712+
.mount(&mock_server)
713+
.await;
703714

704715
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
705-
let result = client.archive_dashboard(2570).await;
716+
let result = client.archive_dashboard(SAMPLE_DASHBOARD_ID).await;
706717

707718
assert!(result.is_ok());
708719
}
@@ -725,14 +736,17 @@ async fn test_archive_dashboard_not_found() {
725736
async fn test_unarchive_dashboard_success() {
726737
let mock_server = MockServer::start().await;
727738

728-
mock_unarchive_dashboard(2570, "Test Dashboard")
739+
mock_unarchive_dashboard(SAMPLE_DASHBOARD_ID, "Test Dashboard")
729740
.mount(&mock_server)
730741
.await;
731742

732743
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
733-
let dashboard = client.unarchive_dashboard(2570).await.unwrap();
744+
let dashboard = client
745+
.unarchive_dashboard(SAMPLE_DASHBOARD_ID)
746+
.await
747+
.unwrap();
734748

735-
assert_eq!(dashboard.id, 2570);
749+
assert_eq!(dashboard.id, SAMPLE_DASHBOARD_ID);
736750
assert_eq!(dashboard.name, "Test Dashboard");
737751
assert!(!dashboard.is_archived);
738752
}
@@ -741,12 +755,12 @@ async fn test_unarchive_dashboard_success() {
741755
async fn test_unarchive_dashboard_forbidden() {
742756
let mock_server = MockServer::start().await;
743757

744-
mock_unarchive_dashboard_forbidden(2570)
758+
mock_unarchive_dashboard_forbidden(SAMPLE_DASHBOARD_ID)
745759
.mount(&mock_server)
746760
.await;
747761

748762
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
749-
let result = client.unarchive_dashboard(2570).await;
763+
let result = client.unarchive_dashboard(SAMPLE_DASHBOARD_ID).await;
750764

751765
assert!(result.is_err());
752766
}
@@ -755,12 +769,14 @@ async fn test_unarchive_dashboard_forbidden() {
755769
async fn test_create_widget_success() {
756770
let mock_server = MockServer::start().await;
757771

758-
mock_create_widget(2570, 75035).mount(&mock_server).await;
772+
mock_create_widget(SAMPLE_DASHBOARD_ID, SAMPLE_WIDGET_ID)
773+
.mount(&mock_server)
774+
.await;
759775

760776
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
761777

762778
let widget = stmo_cli::models::CreateWidget {
763-
dashboard_id: 2570,
779+
dashboard_id: SAMPLE_DASHBOARD_ID,
764780
visualization_id: None,
765781
text: "Test Widget".to_string(),
766782
width: 1,
@@ -777,18 +793,20 @@ async fn test_create_widget_success() {
777793

778794
let result = client.create_widget(&widget).await.unwrap();
779795

780-
assert_eq!(result.id, 75035);
781-
assert_eq!(result.dashboard_id, 2570);
796+
assert_eq!(result.id, SAMPLE_WIDGET_ID);
797+
assert_eq!(result.dashboard_id, SAMPLE_DASHBOARD_ID);
782798
}
783799

784800
#[tokio::test]
785801
async fn test_delete_widget_success() {
786802
let mock_server = MockServer::start().await;
787803

788-
mock_delete_widget(75035).mount(&mock_server).await;
804+
mock_delete_widget(SAMPLE_WIDGET_ID)
805+
.mount(&mock_server)
806+
.await;
789807

790808
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
791-
let result = client.delete_widget(75035).await;
809+
let result = client.delete_widget(SAMPLE_WIDGET_ID).await;
792810

793811
assert!(result.is_ok());
794812
}
@@ -876,28 +894,28 @@ async fn test_search_queries_passes_q_and_respects_limit() {
876894

877895
Mock::given(method("GET"))
878896
.and(path("/api/queries"))
879-
.and(query_param("q", "firefox"))
897+
.and(query_param("q", "example"))
880898
.and(query_param("page", "1"))
881899
.and(query_param("page_size", "2"))
882900
.respond_with(ResponseTemplate::new(200).set_body_json(serde_json::json!({
883901
"count": 100,
884902
"page": 1,
885903
"page_size": 2,
886904
"results": [
887-
query_json(1, "Firefox DAU"),
888-
query_json(2, "Firefox MAU"),
889-
query_json(3, "Firefox Crash Rate"),
905+
query_json(1, "Example Query One"),
906+
query_json(2, "Example Query Two"),
907+
query_json(3, "Example Query Three"),
890908
]
891909
})))
892910
.mount(&mock_server)
893911
.await;
894912

895913
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
896-
let results = client.search_queries("firefox", 2).await.unwrap();
914+
let results = client.search_queries("example", 2).await.unwrap();
897915

898916
assert_eq!(results.len(), 2);
899-
assert_eq!(results[0].name, "Firefox DAU");
900-
assert_eq!(results[1].name, "Firefox MAU");
917+
assert_eq!(results[0].name, "Example Query One");
918+
assert_eq!(results[1].name, "Example Query Two");
901919
}
902920

903921
#[tokio::test]
@@ -906,26 +924,26 @@ async fn test_search_dashboards_passes_q_and_respects_limit() {
906924

907925
Mock::given(method("GET"))
908926
.and(path("/api/dashboards"))
909-
.and(query_param("q", "firefox"))
927+
.and(query_param("q", "example"))
910928
.and(query_param("page", "1"))
911929
.and(query_param("page_size", "2"))
912930
.respond_with(ResponseTemplate::new(200).set_body_json(serde_json::json!({
913931
"count": 50,
914932
"results": [
915-
dashboard_json(1, "firefox-dau", "Firefox DAU"),
916-
dashboard_json(2, "firefox-crash", "Firefox Crash"),
917-
dashboard_json(3, "firefox-beta", "Firefox Beta"),
933+
dashboard_json(1, "example-dashboard-one", "Example Dashboard One"),
934+
dashboard_json(2, "example-dashboard-two", "Example Dashboard Two"),
935+
dashboard_json(3, "example-dashboard-three", "Example Dashboard Three"),
918936
]
919937
})))
920938
.mount(&mock_server)
921939
.await;
922940

923941
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
924-
let results = client.search_dashboards("firefox", 2).await.unwrap();
942+
let results = client.search_dashboards("example", 2).await.unwrap();
925943

926944
assert_eq!(results.len(), 2);
927-
assert_eq!(results[0].name, "Firefox DAU");
928-
assert_eq!(results[1].name, "Firefox Crash");
945+
assert_eq!(results[0].name, "Example Dashboard One");
946+
assert_eq!(results[1].name, "Example Dashboard Two");
929947
}
930948

931949
#[tokio::test]
@@ -934,7 +952,7 @@ async fn test_search_queries_retries_on_429() {
934952

935953
Mock::given(method("GET"))
936954
.and(path("/api/queries"))
937-
.and(query_param("q", "firefox"))
955+
.and(query_param("q", "example"))
938956
.respond_with(ResponseTemplate::new(429))
939957
.up_to_n_times(1)
940958
.with_priority(1)
@@ -943,20 +961,20 @@ async fn test_search_queries_retries_on_429() {
943961

944962
Mock::given(method("GET"))
945963
.and(path("/api/queries"))
946-
.and(query_param("q", "firefox"))
964+
.and(query_param("q", "example"))
947965
.respond_with(ResponseTemplate::new(200).set_body_json(serde_json::json!({
948966
"count": 1,
949967
"page": 1,
950968
"page_size": 1,
951-
"results": [query_json(1, "Firefox DAU")]
969+
"results": [query_json(1, "Example Query One")]
952970
})))
953971
.with_priority(2)
954972
.mount(&mock_server)
955973
.await;
956974

957975
let client = RedashClient::new(mock_server.uri(), "test-key").unwrap();
958-
let results = client.search_queries("firefox", 10).await.unwrap();
976+
let results = client.search_queries("example", 10).await.unwrap();
959977

960978
assert_eq!(results.len(), 1);
961-
assert_eq!(results[0].name, "Firefox DAU");
979+
assert_eq!(results[0].name, "Example Query One");
962980
}

0 commit comments

Comments
 (0)