From 233262efa6d844c701b0c46be65f76f41e9ab2e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 27 Aug 2025 08:03:21 +0000 Subject: [PATCH] Fix tests and formatting for modifyTimestamp implementation Co-authored-by: nitnelave <796633+nitnelave@users.noreply.github.com> --- Cargo.lock | 1 + crates/graphql-server/Cargo.toml | 26 ++++++---- crates/graphql-server/src/query.rs | 42 +++++++++++++++ crates/ldap/src/compare.rs | 4 +- crates/ldap/src/core/utils.rs | 8 +-- crates/ldap/src/modify.rs | 2 +- crates/ldap/src/password.rs | 2 +- crates/ldap/src/search.rs | 19 ++++--- .../sql-backend-handler/src/sql_migrations.rs | 52 ++++++++----------- 9 files changed, 98 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f591334..12bb76b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2729,6 +2729,7 @@ dependencies = [ "lldap_domain_handlers", "lldap_domain_model", "lldap_ldap", + "lldap_opaque_handler", "lldap_sql_backend_handler", "lldap_test_utils", "lldap_validation", diff --git a/crates/graphql-server/Cargo.toml b/crates/graphql-server/Cargo.toml index c88f30c..a52f104 100644 --- a/crates/graphql-server/Cargo.toml +++ b/crates/graphql-server/Cargo.toml @@ -55,20 +55,24 @@ version = "1" mockall = "0.11.4" pretty_assertions = "1" -#[dev-dependencies.lldap_auth] -#path = "../auth" -#features = ["test"] -# -#[dev-dependencies.lldap_opaque_handler] -#path = "../opaque-handler" -#features = ["test"] +[dev-dependencies.lldap_auth] +path = "../auth" +features = ["test"] + +[dev-dependencies.lldap_domain] +path = "../domain" +features = ["test"] + +[dev-dependencies.lldap_opaque_handler] +path = "../opaque-handler" +features = ["test"] [dev-dependencies.lldap_test_utils] path = "../test-utils" -# -#[dev-dependencies.lldap_sql_backend_handler] -#path = "../sql-backend-handler" -#features = ["test"] + +[dev-dependencies.lldap_sql_backend_handler] +path = "../sql-backend-handler" +features = ["test"] [dev-dependencies.tokio] features = ["full"] diff --git a/crates/graphql-server/src/query.rs b/crates/graphql-server/src/query.rs index ce1b9a6..0a6885c 100644 --- a/crates/graphql-server/src/query.rs +++ b/crates/graphql-server/src/query.rs @@ -999,6 +999,14 @@ mod tests { "name": "mail", "value": ["bob@bobbers.on"], }, + { + "name": "modified_date", + "value": ["1970-01-01T00:00:00+00:00"], + }, + { + "name": "password_modified_date", + "value": ["1970-01-01T00:00:00+00:00"], + }, { "name": "user_id", "value": ["bob"], @@ -1032,6 +1040,10 @@ mod tests { "name": "group_id", "value": ["3"], }, + { + "name": "modified_date", + "value": ["1970-01-01T00:00:00.000000042+00:00"], + }, { "name": "uuid", "value": ["a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"], @@ -1059,6 +1071,10 @@ mod tests { "name": "group_id", "value": ["7"], }, + { + "name": "modified_date", + "value": ["1970-01-01T00:00:00.000000012+00:00"], + }, { "name": "uuid", "value": ["b1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"], @@ -1252,6 +1268,22 @@ mod tests { "isEditable": true, "isHardcoded": true, }, + { + "name": "modified_date", + "attributeType": "DATE_TIME", + "isList": false, + "isVisible": true, + "isEditable": false, + "isHardcoded": true, + }, + { + "name": "password_modified_date", + "attributeType": "DATE_TIME", + "isList": false, + "isVisible": true, + "isEditable": false, + "isHardcoded": true, + }, { "name": "user_id", "attributeType": "STRING", @@ -1297,6 +1329,14 @@ mod tests { "isEditable": false, "isHardcoded": true, }, + { + "name": "modified_date", + "attributeType": "DATE_TIME", + "isList": false, + "isVisible": true, + "isEditable": false, + "isHardcoded": true, + }, { "name": "uuid", "attributeType": "STRING", @@ -1371,6 +1411,8 @@ mod tests { {"name": "creation_date"}, {"name": "display_name"}, {"name": "mail"}, + {"name": "modified_date"}, + {"name": "password_modified_date"}, {"name": "user_id"}, {"name": "uuid"}, ], diff --git a/crates/ldap/src/compare.rs b/crates/ldap/src/compare.rs index 5f5fc0c..4dbd2bb 100644 --- a/crates/ldap/src/compare.rs +++ b/crates/ldap/src/compare.rs @@ -124,7 +124,7 @@ mod tests { users: vec![UserId::new("bob")], uuid: uuid!("04ac75e0-2900-3e21-926c-2f732c26b3fc"), attributes: Vec::new(), - modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), + modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), }]) }); let ldap_handler = setup_bound_admin_handler(mock).await; @@ -219,7 +219,7 @@ mod tests { users: vec![UserId::new("bob")], uuid: uuid!("04ac75e0-2900-3e21-926c-2f732c26b3fc"), attributes: Vec::new(), - modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), + modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), }]) }); let ldap_handler = setup_bound_admin_handler(mock).await; diff --git a/crates/ldap/src/core/utils.rs b/crates/ldap/src/core/utils.rs index 939494f..da80027 100644 --- a/crates/ldap/src/core/utils.rs +++ b/crates/ldap/src/core/utils.rs @@ -279,12 +279,8 @@ pub fn map_group_field(field: &AttributeName, schema: &PublicSchema) -> GroupFie "entrydn" => GroupFieldType::EntryDn, "objectclass" => GroupFieldType::ObjectClass, "cn" | "displayname" | "uid" | "display_name" | "id" => GroupFieldType::DisplayName, - "creationdate" | "createtimestamp" | "creation_date" => { - GroupFieldType::CreationDate - } - "modifytimestamp" | "modifydate" | "modified_date" => { - GroupFieldType::ModifiedDate - } + "creationdate" | "createtimestamp" | "creation_date" => GroupFieldType::CreationDate, + "modifytimestamp" | "modifydate" | "modified_date" => GroupFieldType::ModifiedDate, "member" | "uniquemember" => GroupFieldType::Member, "entryuuid" | "uuid" => GroupFieldType::Uuid, "group_id" | "groupid" => GroupFieldType::GroupId, diff --git a/crates/ldap/src/modify.rs b/crates/ldap/src/modify.rs index d9d9f7d..6237387 100644 --- a/crates/ldap/src/modify.rs +++ b/crates/ldap/src/modify.rs @@ -158,7 +158,7 @@ mod tests { creation_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), uuid: uuid!("a1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8"), attributes: Vec::new(), - modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), + modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), }); } Ok(g) diff --git a/crates/ldap/src/password.rs b/crates/ldap/src/password.rs index c1d482c..5b1fde3 100644 --- a/crates/ldap/src/password.rs +++ b/crates/ldap/src/password.rs @@ -521,7 +521,7 @@ pub mod tests { creation_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), uuid: uuid!("a1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8"), attributes: Vec::new(), - modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), + modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), }); mock.expect_get_user_groups() .with(eq(UserId::new("bob"))) diff --git a/crates/ldap/src/search.rs b/crates/ldap/src/search.rs index ae2b35e..7af83e1 100644 --- a/crates/ldap/src/search.rs +++ b/crates/ldap/src/search.rs @@ -636,8 +636,11 @@ mod tests { b"( 10.5 NAME 'first_name' DESC 'LLDAP: builtin attribute' SUP String )" .to_vec(), b"( 10.6 NAME 'mail' DESC 'LLDAP: builtin attribute' SUP String )".to_vec(), - b"( 10.7 NAME 'group_id' DESC 'LLDAP: builtin attribute' SUP Integer )" + b"( 10.7 NAME 'modified_date' DESC 'LLDAP: builtin attribute' SUP DateTime )".to_vec(), + b"( 10.8 NAME 'password_modified_date' DESC 'LLDAP: builtin attribute' SUP DateTime )".to_vec(), + b"( 10.9 NAME 'group_id' DESC 'LLDAP: builtin attribute' SUP Integer )" .to_vec(), + b"( 10.10 NAME 'modified_date' DESC 'LLDAP: builtin attribute' SUP DateTime )".to_vec(), ] } ); @@ -646,8 +649,8 @@ mod tests { LdapPartialAttribute { atype: "objectClasses".to_owned(), vals: vec![ - b"( 3.0 NAME ( 'inetOrgPerson' 'posixAccount' 'mailAccount' 'person' 'customUserClass' ) DESC 'LLDAP builtin: a person' STRUCTURAL MUST ( mail $ user_id ) MAY ( avatar $ creation_date $ display_name $ first_name $ last_name $ uuid ) )".to_vec(), - b"( 3.1 NAME ( 'groupOfUniqueNames' 'groupOfNames' ) DESC 'LLDAP builtin: a group' STRUCTURAL MUST ( display_name ) MAY ( creation_date $ group_id $ uuid ) )".to_vec(), + b"( 3.0 NAME ( 'inetOrgPerson' 'posixAccount' 'mailAccount' 'person' 'customUserClass' ) DESC 'LLDAP builtin: a person' STRUCTURAL MUST ( mail $ user_id ) MAY ( avatar $ creation_date $ display_name $ first_name $ last_name $ modified_date $ password_modified_date $ uuid ) )".to_vec(), + b"( 3.1 NAME ( 'groupOfUniqueNames' 'groupOfNames' ) DESC 'LLDAP builtin: a group' STRUCTURAL MUST ( display_name ) MAY ( creation_date $ group_id $ modified_date $ uuid ) )".to_vec(), ] } ); @@ -1083,7 +1086,7 @@ mod tests { users: vec![UserId::new("bob"), UserId::new("john")], uuid: uuid!("04ac75e0-2900-3e21-926c-2f732c26b3fc"), attributes: Vec::new(), - modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), + modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), }]) }); let ldap_handler = setup_bound_admin_handler(mock).await; @@ -1134,7 +1137,7 @@ mod tests { users: vec![], uuid: uuid!("04ac75e0-2900-3e21-926c-2f732c26b3fc"), attributes: Vec::new(), - modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), + modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), }]) }); let ldap_handler = setup_bound_admin_handler(mock).await; @@ -1206,7 +1209,7 @@ mod tests { users: vec![], uuid: uuid!("04ac75e0-2900-3e21-926c-2f732c26b3fc"), attributes: Vec::new(), - modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), + modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), }]) }); let ldap_handler = setup_bound_admin_handler(mock).await; @@ -1716,7 +1719,7 @@ mod tests { users: vec![UserId::new("bob"), UserId::new("john")], uuid: uuid!("04ac75e0-2900-3e21-926c-2f732c26b3fc"), attributes: Vec::new(), - modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), + modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), }]) }); let ldap_handler = setup_bound_admin_handler(mock).await; @@ -1801,7 +1804,7 @@ mod tests { users: vec![UserId::new("bob"), UserId::new("john")], uuid: uuid!("04ac75e0-2900-3e21-926c-2f732c26b3fc"), attributes: Vec::new(), - modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), + modified_date: chrono::Utc.timestamp_opt(42, 42).unwrap().naive_utc(), }]) }); let ldap_handler = setup_bound_admin_handler(mock).await; diff --git a/crates/sql-backend-handler/src/sql_migrations.rs b/crates/sql-backend-handler/src/sql_migrations.rs index 0d4f6db..7e44d98 100644 --- a/crates/sql-backend-handler/src/sql_migrations.rs +++ b/crates/sql-backend-handler/src/sql_migrations.rs @@ -1121,50 +1121,44 @@ async fn migrate_to_v11(transaction: DatabaseTransaction) -> Result Result Result