Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 49 additions & 36 deletions relay-server/src/processing/logs/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -132,41 +132,13 @@ fn normalize_log(log: &mut Annotated<OurLog>, meta: &RequestMeta) -> Result<()>

#[cfg(test)]
mod tests {
use relay_pii::{DataScrubbingConfig, PiiConfig};
use relay_pii::PiiConfig;
use relay_protocol::assert_annotated_snapshot;
use relay_sampling::evaluation::ReservoirCounters;

use crate::services::projects::project::ProjectInfo;

use super::*;

fn make_context(
scrubbing_config: DataScrubbingConfig,
pii_config: Option<PiiConfig>,
) -> Context<'static> {
let config = Box::leak(Box::new(relay_config::Config::default()));
let global_config = Box::leak(Box::new(relay_dynamic_config::GlobalConfig::default()));
let project_info = Box::leak(Box::new(ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
pii_config,
datascrubbing_settings: scrubbing_config,
..Default::default()
},
..Default::default()
}));
let rate_limits = Box::leak(Box::new(relay_quotas::RateLimits::default()));
let reservoir_counters = Box::leak(Box::new(ReservoirCounters::default()));

Context {
config,
global_config,
project_info,
rate_limits,
sampling_project_info: None,
reservoir_counters,
}
}

#[test]
fn test_scrub_log_base_fields() {
let json = r#"
Expand All @@ -182,12 +154,23 @@ mod tests {

let mut data = Annotated::<OurLog>::from_json(json).unwrap();

let mut scrubbing_config = relay_pii::DataScrubbingConfig::default();
scrubbing_config.scrub_data = true;
scrubbing_config.scrub_defaults = true;
let mut datascrubbing_settings = relay_pii::DataScrubbingConfig::default();
datascrubbing_settings.scrub_data = true;
datascrubbing_settings.scrub_defaults = true;

let ctx = Context {
project_info: &ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
datascrubbing_settings,
..Default::default()
},
..Default::default()
},
..Context::for_test()
};

let ctx = make_context(scrubbing_config, None);
scrub_log(&mut data, ctx).unwrap();

assert_annotated_snapshot!(data, @r#"
{
"timestamp": 1544719860.0,
Expand Down Expand Up @@ -252,7 +235,17 @@ mod tests {
}))
.unwrap();

let ctx = make_context(DataScrubbingConfig::default(), Some(deep_wildcard_config));
let ctx = Context {
project_info: &ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
pii_config: Some(deep_wildcard_config),
..Default::default()
},
..Default::default()
},
..Context::for_test()
};

scrub_log(&mut data, ctx).unwrap();

assert_annotated_snapshot!(data, @r#"
Expand Down Expand Up @@ -309,7 +302,17 @@ mod tests {
}))
.unwrap();

let ctx = make_context(DataScrubbingConfig::default(), Some(config));
let ctx = Context {
project_info: &ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
pii_config: Some(config),
..Default::default()
},
..Default::default()
},
..Context::for_test()
};

scrub_log(&mut data, ctx).unwrap();

assert_annotated_snapshot!(data, @r###"
Expand Down Expand Up @@ -365,7 +368,17 @@ mod tests {
}))
.unwrap();

let ctx = make_context(DataScrubbingConfig::default(), Some(config));
let ctx = Context {
project_info: &ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
pii_config: Some(config),
..Default::default()
},
..Default::default()
},
..Context::for_test()
};

scrub_log(&mut data, ctx).unwrap();

assert_annotated_snapshot!(data, @r#"
Expand Down
73 changes: 32 additions & 41 deletions relay-server/src/processing/spans/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -267,41 +267,13 @@ fn span_duration(span: &SpanV2) -> Option<Duration> {
#[cfg(test)]
mod tests {
use chrono::DateTime;
use relay_pii::{DataScrubbingConfig, PiiConfig};
use relay_pii::PiiConfig;
use relay_protocol::SerializableAnnotated;
use relay_sampling::evaluation::ReservoirCounters;

use crate::services::projects::project::ProjectInfo;

use super::*;

fn make_context(
scrubbing_config: DataScrubbingConfig,
pii_config: Option<PiiConfig>,
) -> Context<'static> {
let config = Box::leak(Box::new(relay_config::Config::default()));
let global_config = Box::leak(Box::new(relay_dynamic_config::GlobalConfig::default()));
let project_info = Box::leak(Box::new(ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
pii_config,
datascrubbing_settings: scrubbing_config,
..Default::default()
},
..Default::default()
}));
let rate_limits = Box::leak(Box::new(relay_quotas::RateLimits::default()));
let reservoir_counters = Box::leak(Box::new(ReservoirCounters::default()));

Context {
config,
global_config,
project_info,
rate_limits,
sampling_project_info: None,
reservoir_counters,
}
}

#[test]
fn test_scrub_span_pii_default_rules_links() {
// `user.name`, `sentry.release`, and `url.path` are marked as follows in `sentry-conventions`:
Expand Down Expand Up @@ -337,17 +309,26 @@ mod tests {

let mut data = Annotated::<SpanV2>::from_json(json).unwrap();

let mut scrubbing_config = relay_pii::DataScrubbingConfig::default();
scrubbing_config.scrub_data = true;
scrubbing_config.scrub_defaults = true;
scrubbing_config.scrub_ip_addresses = true;
scrubbing_config.sensitive_fields = vec![
let mut datascrubbing_settings = relay_pii::DataScrubbingConfig::default();
datascrubbing_settings.scrub_data = true;
datascrubbing_settings.scrub_defaults = true;
datascrubbing_settings.scrub_ip_addresses = true;
datascrubbing_settings.sensitive_fields = vec![
"value".to_owned(), // Make sure the inner 'value' of the attribute object isn't scrubbed.
"very_sensitive_data".to_owned(),
];
scrubbing_config.exclude_fields = vec!["public_data".to_owned()];
datascrubbing_settings.exclude_fields = vec!["public_data".to_owned()];

let ctx = make_context(scrubbing_config, None);
let ctx = Context {
project_info: &ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
datascrubbing_settings,
..Default::default()
},
..Default::default()
},
..Context::for_test()
};
scrub_span(&mut data, ctx).unwrap();

let link = data.value().unwrap().links.value().unwrap()[0]
Expand Down Expand Up @@ -450,10 +431,10 @@ mod tests {

let mut data = Annotated::<SpanV2>::from_json(json).unwrap();

let mut scrubbing_config = relay_pii::DataScrubbingConfig::default();
scrubbing_config.scrub_data = true;
scrubbing_config.scrub_defaults = false;
scrubbing_config.scrub_ip_addresses = false;
let mut datascrubbing_settings = relay_pii::DataScrubbingConfig::default();
datascrubbing_settings.scrub_data = true;
datascrubbing_settings.scrub_defaults = false;
datascrubbing_settings.scrub_ip_addresses = false;

let config = serde_json::from_value::<PiiConfig>(serde_json::json!(
{
Expand Down Expand Up @@ -546,7 +527,17 @@ mod tests {
))
.unwrap();

let ctx = make_context(scrubbing_config, Some(config));
let ctx = Context {
project_info: &ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
pii_config: Some(config),
datascrubbing_settings,
..Default::default()
},
..Default::default()
},
..Context::for_test()
};
scrub_span(&mut data, ctx).unwrap();
let link = data.value().unwrap().links.value().unwrap()[0]
.value()
Expand Down
54 changes: 23 additions & 31 deletions relay-server/src/processing/trace_attachments/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -169,43 +169,15 @@ pub fn scrub_attachment<'a>(
#[cfg(test)]
mod tests {
use relay_event_schema::protocol::TraceAttachmentMeta;
use relay_pii::{DataScrubbingConfig, PiiConfig};
use relay_pii::PiiConfig;
use relay_protocol::SerializableAnnotated;
use relay_sampling::evaluation::ReservoirCounters;
use uuid::Uuid;

use crate::envelope::ParentId;
use crate::services::projects::project::ProjectInfo;

use super::*;

fn make_context(
scrubbing_config: DataScrubbingConfig,
pii_config: Option<PiiConfig>,
) -> Context<'static> {
let config = Box::leak(Box::new(relay_config::Config::default()));
let global_config = Box::leak(Box::new(relay_dynamic_config::GlobalConfig::default()));
let project_info = Box::leak(Box::new(ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
pii_config,
datascrubbing_settings: scrubbing_config,
..Default::default()
},
..Default::default()
}));
let rate_limits = Box::leak(Box::new(relay_quotas::RateLimits::default()));
let reservoir_counters = Box::leak(Box::new(ReservoirCounters::default()));

Context {
config,
global_config,
project_info,
rate_limits,
sampling_project_info: None,
reservoir_counters,
}
}

#[test]
fn test_scrub_attachment_body() {
let pii_config = serde_json::from_value::<PiiConfig>(serde_json::json!({
Expand All @@ -225,7 +197,17 @@ mod tests {
body: Bytes::from("Some IP: 127.0.0.1"),
};

let ctx = make_context(DataScrubbingConfig::default(), Some(pii_config));
let ctx = Context {
project_info: &ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
pii_config: Some(pii_config),
..Default::default()
},
..Default::default()
},
..Context::for_test()
};

scrub_attachment(&mut attachment, ctx).unwrap();

assert_eq!(attachment.body, "Some IP: *********");
Expand Down Expand Up @@ -262,7 +244,17 @@ mod tests {
body: Bytes::from("Some attachment body"),
};

let ctx = make_context(DataScrubbingConfig::default(), Some(pii_config));
let ctx = Context {
project_info: &ProjectInfo {
config: relay_dynamic_config::ProjectConfig {
pii_config: Some(pii_config),
..Default::default()
},
..Default::default()
},
..Context::for_test()
};

scrub_attachment(&mut attachment, ctx).unwrap();

let attrs = &attachment.meta.value().unwrap().attributes;
Expand Down
Loading