Skip to content
This repository was archived by the owner on May 13, 2026. It is now read-only.

Commit cdfa334

Browse files
fix(events): change events filter to be required
1 parent ed20ff7 commit cdfa334

1 file changed

Lines changed: 17 additions & 99 deletions

File tree

src/events/operations/list_events.rs

Lines changed: 17 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ impl From<Vec<EventName>> for EventFilters {
1919
}
2020

2121
/// Parameters for the [`ListEvents`] function.
22-
#[derive(Debug, Default, Serialize)]
22+
#[derive(Debug, Serialize)]
2323
pub struct ListEventsParams<'a> {
2424
/// The pagination parameters to use when listing events.
2525
#[serde(flatten)]
2626
pub pagination: PaginationParams<'a>,
2727

2828
/// Filter to only return events of particular types.
2929
#[serde(rename = "events[]")]
30-
pub events: Option<EventFilters>,
30+
pub events: EventFilters,
3131

3232
/// Filter to only return events belonging only to specific Organizations
3333
///
@@ -73,8 +73,11 @@ pub trait ListEvents {
7373
/// let paginated_events = workos
7474
/// .events()
7575
/// .list_events(&ListEventsParams {
76-
/// events: Some(vec![EventName::DsyncUserCreated, EventName::DsyncUserUpdated, EventName::DsyncUserDeleted].into()),
77-
/// ..Default::default()
76+
/// pagination: Default::default(),
77+
/// events: vec![EventName::DsyncUserCreated, EventName::DsyncUserUpdated, EventName::DsyncUserDeleted].into(),
78+
/// organization_id: None,
79+
/// range_start: None,
80+
/// range_end: None,
7881
/// })
7982
/// .await?;
8083
/// # Ok(())
@@ -124,92 +127,6 @@ mod test {
124127
async fn it_calls_the_list_events_endpoint() {
125128
let mut server = mockito::Server::new_async().await;
126129

127-
let workos = WorkOs::builder(&ApiKey::from("sk_example_123456789"))
128-
.base_url(&server.url())
129-
.unwrap()
130-
.build();
131-
132-
server
133-
.mock("GET", "/events")
134-
.match_query(Matcher::UrlEncoded("order".to_string(), "desc".to_string()))
135-
.match_header("Authorization", "Bearer sk_example_123456789")
136-
.with_status(200)
137-
.with_body(
138-
json!({
139-
"object": "list",
140-
"data": [
141-
{
142-
"object": "event",
143-
"id": "event_01H2GNQD5D7ZE06FDDS75NFPHY",
144-
"event": "dsync.group.user_added",
145-
"data": {
146-
"directory_id": "directory_01ECAZ4NV9QMV47GW873HDCX74",
147-
"user": {
148-
"id": "directory_user_01E1X56GH84T3FB41SD6PZGDBX",
149-
"directory_id": "directory_01ECAZ4NV9QMV47GW873HDCX74",
150-
"organization_id": "org_01EZTR6WYX1A0DSE2CYMGXQ24Y",
151-
"idp_id": "2936",
152-
"emails": [
153-
{
154-
"primary": true,
155-
"type": "work",
156-
"value": "eric@example.com"
157-
}
158-
],
159-
"first_name": "Eric",
160-
"last_name": "Schneider",
161-
"email": "eric@example.com",
162-
"state": "active",
163-
"created_at": "2021-06-25T19:07:33.155Z",
164-
"updated_at": "2021-06-25T19:07:33.155Z",
165-
"custom_attributes": {
166-
"department": "Engineering",
167-
"job_title": "Software Engineer"
168-
},
169-
"role": {
170-
"slug": "member"
171-
},
172-
"raw_attributes": {}
173-
},
174-
"group": {
175-
"id": "directory_group_01E1X5GPMMXF4T1DCERMVEEPVW",
176-
"idp_id": "02grqrue4294w24",
177-
"directory_id": "directory_01ECAZ4NV9QMV47GW873HDCX74",
178-
"organization_id": "org_01EZTR6WYX1A0DSE2CYMGXQ24Y",
179-
"name": "Developers",
180-
"created_at": "2021-06-25T19:07:33.155Z",
181-
"updated_at": "2021-06-25T19:07:33.155Z",
182-
"raw_attributes": {}
183-
}
184-
},
185-
"created_at": "2023-06-09T18:12:01.837Z"
186-
}
187-
],
188-
"list_metadata": {
189-
"after": "event_01H2GQNMQNH8VRXVR7AEYG9XCJ"
190-
}
191-
})
192-
.to_string(),
193-
)
194-
.create_async()
195-
.await;
196-
197-
let paginated_list = workos
198-
.events()
199-
.list_events(&Default::default())
200-
.await
201-
.unwrap();
202-
203-
assert_eq!(
204-
paginated_list.metadata.after,
205-
Some("event_01H2GQNMQNH8VRXVR7AEYG9XCJ".to_string())
206-
)
207-
}
208-
209-
#[tokio::test]
210-
async fn it_calls_the_list_events_endpoint_with_the_domain() {
211-
let mut server = mockito::Server::new_async().await;
212-
213130
let workos = WorkOs::builder(&ApiKey::from("sk_example_123456789"))
214131
.base_url(&server.url())
215132
.unwrap()
@@ -289,15 +206,16 @@ mod test {
289206
let paginated_list = workos
290207
.events()
291208
.list_events(&ListEventsParams {
292-
events: Some(
293-
vec![
294-
EventName::DsyncUserCreated,
295-
EventName::DsyncUserUpdated,
296-
EventName::DsyncUserDeleted,
297-
]
298-
.into(),
299-
),
300-
..Default::default()
209+
pagination: Default::default(),
210+
events: vec![
211+
EventName::DsyncUserCreated,
212+
EventName::DsyncUserUpdated,
213+
EventName::DsyncUserDeleted,
214+
]
215+
.into(),
216+
organization_id: None,
217+
range_start: None,
218+
range_end: None,
301219
})
302220
.await
303221
.unwrap();

0 commit comments

Comments
 (0)