Skip to content

Commit

Permalink
feat(webhooks): validate subscription dependent responder properties …
Browse files Browse the repository at this point in the history
…on save
  • Loading branch information
azasypkin committed Mar 27, 2024
1 parent 344592c commit 6bbcb6c
Show file tree
Hide file tree
Showing 4 changed files with 402 additions and 616 deletions.
151 changes: 68 additions & 83 deletions src/server/handlers/webhooks_responders.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,9 @@ pub async fn webhooks_responders(
};

// Try to retrieve responder by the name.
let webhooks = state.api.webhooks();
let webhooks = state.api.webhooks(&user);
let responder = match webhooks
.find_responder(user.id, &responder_path, responder_method)
.find_responder(&responder_path, responder_method)
.await
{
Ok(Some(responder)) => responder,
Expand Down Expand Up @@ -169,7 +169,6 @@ pub async fn webhooks_responders(
.collect::<Vec<_>>();
webhooks
.create_responder_request(
user.id,
responder.id,
RespondersRequestCreateParams {
client_address: request.peer_addr(),
Expand Down Expand Up @@ -358,23 +357,20 @@ mod tests {
// Insert responders data.
let responder = app_state
.api
.webhooks()
.create_responder(
user.id,
RespondersCreateParams {
name: "name_one".to_string(),
path: "/one/two".to_string(),
method: ResponderMethod::Any,
enabled: true,
settings: ResponderSettings {
requests_to_track: 3,
status_code: 200,
body: Some("body".to_string()),
headers: Some(vec![("key".to_string(), "value".to_string())]),
script: None,
},
.webhooks(&user)
.create_responder(RespondersCreateParams {
name: "name_one".to_string(),
path: "/one/two".to_string(),
method: ResponderMethod::Any,
enabled: true,
settings: ResponderSettings {
requests_to_track: 3,
status_code: 200,
body: Some("body".to_string()),
headers: Some(vec![("key".to_string(), "value".to_string())]),
script: None,
},
)
})
.await?;

let request = TestRequest::with_uri(
Expand Down Expand Up @@ -415,8 +411,8 @@ mod tests {

let mut responder_requests = app_state
.api
.webhooks()
.get_responder_requests(user.id, responder.id)
.webhooks(&user)
.get_responder_requests(responder.id)
.await?;
assert_eq!(responder_requests.len(), 1);
assert_eq!(responder_requests[0].method, "PUT");
Expand Down Expand Up @@ -463,23 +459,20 @@ mod tests {
// Insert responders data.
let responder = app_state
.api
.webhooks()
.create_responder(
user.id,
RespondersCreateParams {
name: "name_one".to_string(),
path: "/one/two".to_string(),
method: ResponderMethod::Any,
enabled: true,
settings: ResponderSettings {
requests_to_track: 3,
status_code: 200,
body: Some("body".to_string()),
headers: Some(vec![("key".to_string(), "value".to_string())]),
script: None,
},
.webhooks(&user)
.create_responder(RespondersCreateParams {
name: "name_one".to_string(),
path: "/one/two".to_string(),
method: ResponderMethod::Any,
enabled: true,
settings: ResponderSettings {
requests_to_track: 3,
status_code: 200,
body: Some("body".to_string()),
headers: Some(vec![("key".to_string(), "value".to_string())]),
script: None,
},
)
})
.await?;

let request =
Expand Down Expand Up @@ -511,8 +504,8 @@ mod tests {

let responder_requests = app_state
.api
.webhooks()
.get_responder_requests(user.id, responder.id)
.webhooks(&user)
.get_responder_requests(responder.id)
.await?;
assert_eq!(responder_requests.len(), 1);
assert_eq!(
Expand All @@ -535,23 +528,20 @@ mod tests {
// Insert responders data.
let responder = app_state
.api
.webhooks()
.create_responder(
user.id,
RespondersCreateParams {
name: "name_one".to_string(),
path: "/".to_string(),
method: ResponderMethod::Any,
enabled: true,
settings: ResponderSettings {
requests_to_track: 3,
status_code: 200,
body: Some("body".to_string()),
headers: Some(vec![("key".to_string(), "value".to_string())]),
script: None,
},
.webhooks(&user)
.create_responder(RespondersCreateParams {
name: "name_one".to_string(),
path: "/".to_string(),
method: ResponderMethod::Any,
enabled: true,
settings: ResponderSettings {
requests_to_track: 3,
status_code: 200,
body: Some("body".to_string()),
headers: Some(vec![("key".to_string(), "value".to_string())]),
script: None,
},
)
})
.await?;

let request = TestRequest::with_uri("https://dev-handle-1.webhooks.secutils.dev")
Expand Down Expand Up @@ -582,8 +572,8 @@ mod tests {

let responder_requests = app_state
.api
.webhooks()
.get_responder_requests(user.id, responder.id)
.webhooks(&user)
.get_responder_requests(responder.id)
.await?;
assert_eq!(responder_requests.len(), 1);

Expand All @@ -602,9 +592,8 @@ mod tests {
// Insert responders data.
let responder = app_state
.api
.webhooks()
.webhooks(&user)
.create_responder(
user.id,
RespondersCreateParams {
name: "name_one".to_string(),
path: "/one/two".to_string(),
Expand Down Expand Up @@ -673,8 +662,8 @@ mod tests {

let responder_requests = app_state
.api
.webhooks()
.get_responder_requests(user.id, responder.id)
.webhooks(&user)
.get_responder_requests(responder.id)
.await?;
assert_eq!(responder_requests.len(), 1);

Expand Down Expand Up @@ -742,23 +731,20 @@ mod tests {
// Insert responders data.
let responder = app_state
.api
.webhooks()
.create_responder(
user.id,
RespondersCreateParams {
name: "name_one".to_string(),
path: "/one/two".to_string(),
method: ResponderMethod::Any,
enabled: false,
settings: ResponderSettings {
requests_to_track: 3,
status_code: 200,
body: Some("body".to_string()),
headers: Some(vec![("key".to_string(), "value".to_string())]),
script: None,
},
.webhooks(&user)
.create_responder(RespondersCreateParams {
name: "name_one".to_string(),
path: "/one/two".to_string(),
method: ResponderMethod::Any,
enabled: false,
settings: ResponderSettings {
requests_to_track: 3,
status_code: 200,
body: Some("body".to_string()),
headers: Some(vec![("key".to_string(), "value".to_string())]),
script: None,
},
)
})
.await?;

// 3. Inactive responder.
Expand All @@ -784,16 +770,15 @@ mod tests {
"###);
let responder_requests = app_state
.api
.webhooks()
.get_responder_requests(user.id, responder.id)
.webhooks(&user)
.get_responder_requests(responder.id)
.await?;
assert!(responder_requests.is_empty());

app_state
.api
.webhooks()
.webhooks(&user)
.update_responder(
user.id,
responder.id,
RespondersUpdateParams {
enabled: Some(true),
Expand Down Expand Up @@ -830,8 +815,8 @@ mod tests {

let responder_requests = app_state
.api
.webhooks()
.get_responder_requests(user.id, responder.id)
.webhooks(&user)
.get_responder_requests(responder.id)
.await?;
assert_eq!(responder_requests.len(), 1);
assert_eq!(
Expand Down
8 changes: 4 additions & 4 deletions src/users/user_subscription/client_subscription_features.rs
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ mod test {

let features =
ClientSubscriptionFeatures::from(SubscriptionFeatures::new(&config, subscription));
assert_json_snapshot!(features, @r###"
assert_json_snapshot!(features, { ".webScraping.trackerSchedules" => insta::sorted_redaction() }, @r###"
{
"certificates": {
"privateKeyAlgorithms": [
Expand All @@ -185,10 +185,10 @@ mod test {
"webScraping": {
"trackerRevisions": 11,
"trackerSchedules": [
"@weekly",
"@monthly",
"@",
"@daily"
"@daily",
"@monthly",
"@weekly"
]
},
"webSecurity": {
Expand Down
Loading

0 comments on commit 6bbcb6c

Please sign in to comment.