-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathdashboard.rs
More file actions
58 lines (47 loc) · 4.64 KB
/
dashboard.rs
File metadata and controls
58 lines (47 loc) · 4.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
mod common;
use anyhow::Result;
use chrono::{Duration, Utc};
use serde_json::json;
#[tokio::test]
async fn test_dashboard() -> Result<()> {
let app = common::app();
let (tx, _rx) = common::events();
let client = common::TestClient::new(app.clone(), tx);
app.seed_database(100)?;
let project_id = "public-project";
let api_prefix = format!("/api/dashboard/project/{project_id}");
let stats_path = format!("{api_prefix}/stats");
let graph_path = format!("{api_prefix}/graph");
let dimension_path = format!("{api_prefix}/dimension");
let start_date = (Utc::now() - Duration::days(365)).to_rfc3339();
let end_date = Utc::now().to_rfc3339();
let stats_requests = [
json!({"range":{"start": start_date ,"end": end_date},"filters":[]}),
json!({"range":{"start": start_date ,"end": end_date},"filters":[{"dimension":"fqdn","filterType":"equal","value":"example.org"},{"dimension":"url","filterType":"equal","value":"example.org/contact"},{"dimension":"referrer","filterType":"equal","value":"liwan.dev"},{"dimension":"country","filterType":"equal","value":"AU"},{"dimension":"city","filterType":"equal","value":"Sydney"},{"dimension":"platform","filterType":"equal","value":"iOS"},{"dimension":"browser","filterType":"equal","value":"Safari"}]}),
];
let graph_requests = [
json!({"range":{"start": start_date ,"end": end_date},"metric":"views","dataPoints":395,"filters":[]}),
json!({"range":{"start": start_date ,"end": end_date},"metric":"views","dataPoints":30,"filters":[{"dimension":"fqdn","filterType":"equal","value":"example.org"},{"dimension":"url","filterType":"equal","value":"example.org/contact"},{"dimension":"referrer","filterType":"equal","value":"liwan.dev"},{"dimension":"country","filterType":"equal","value":"AU"},{"dimension":"city","filterType":"equal","value":"Sydney"},{"dimension":"platform","filterType":"equal","value":"iOS"},{"dimension":"browser","filterType":"equal","value":"Safari"}]}),
];
let dimensions_requests = [
json!({"dimension":"country","filters":[],"metric":"views","range":{"start": start_date ,"end": end_date}}),
json!({"dimension":"url","filters":[{"dimension":"fqdn","filterType":"equal","value":"example.org"},{"dimension":"url","filterType":"equal","value":"example.org/contact"},{"dimension":"referrer","filterType":"equal","value":"liwan.dev"},{"dimension":"country","filterType":"equal","value":"AU"},{"dimension":"city","filterType":"equal","value":"Sydney"},{"dimension":"platform","filterType":"equal","value":"iOS"},{"dimension":"browser","filterType":"equal","value":"Safari"},{"dimension":"mobile","filterType":"is_true"}],"metric":"views","range":{"start": start_date ,"end": end_date}}),
json!({"dimension":"city","filters":[{"dimension":"fqdn","filterType":"equal","value":"example.org"},{"dimension":"url","filterType":"equal","value":"example.org/contact"},{"dimension":"referrer","filterType":"equal","value":"liwan.dev"},{"dimension":"country","filterType":"equal","value":"AU"},{"dimension":"city","filterType":"equal","value":"Sydney"},{"dimension":"platform","filterType":"equal","value":"iOS"},{"dimension":"browser","filterType":"equal","value":"Safari"},{"dimension":"mobile","filterType":"is_true"}],"metric":"views","range":{"start": start_date ,"end": end_date}}),
json!({"dimension":"browser","filters":[{"dimension":"fqdn","filterType":"equal","value":"example.org"},{"dimension":"url","filterType":"equal","value":"example.org/contact"},{"dimension":"referrer","filterType":"equal","value":"liwan.dev"},{"dimension":"country","filterType":"equal","value":"AU"},{"dimension":"city","filterType":"equal","value":"Sydney"},{"dimension":"platform","filterType":"equal","value":"iOS"},{"dimension":"browser","filterType":"equal","value":"Safari"},{"dimension":"mobile","filterType":"is_true"}],"metric":"views","range":{"start": start_date ,"end": end_date}}),
json!({"dimension":"screen_size","filters":[],"metric":"views","range":{"start": start_date ,"end": end_date}}),
json!({"dimension":"url","filters":[{"dimension":"screen_size","filterType":"equal","value":"mobile"}],"metric":"views","range":{"start": start_date ,"end": end_date}}),
];
for request in stats_requests.iter() {
let res = client.post(&stats_path, request.clone()).await;
res.assert_status_success();
}
for request in graph_requests.iter() {
let res = client.post(&graph_path, request.clone()).await;
res.assert_status_success();
}
for request in dimensions_requests.iter() {
let res = client.post(&dimension_path, request.clone()).await;
res.assert_status_success();
}
Ok(())
}