diff --git a/proto/src/internal/credupdate.rs b/proto/src/internal/credupdate.rs
index 0621de92e..9dd684213 100644
--- a/proto/src/internal/credupdate.rs
+++ b/proto/src/internal/credupdate.rs
@@ -419,7 +419,7 @@ mod tests {
             digits: 6,
         };
         let s = totp.to_uri();
-        assert!(s == "otpauth://totp/blackhats:william?secret=VK54ZXI&issuer=blackhats&algorithm=SHA256&digits=6&period=30");
+        assert_eq!(s,"otpauth://totp/blackhats:william?secret=VK54ZXI&issuer=blackhats&algorithm=SHA256&digits=6&period=30");
 
         // check that invalid issuer/accounts are cleaned up.
         let totp = TotpSecret {
@@ -432,6 +432,6 @@ mod tests {
         };
         let s = totp.to_uri();
         println!("{}", s);
-        assert!(s == "otpauth://totp/blackhats%20australia:william%3A%253A?secret=VK54ZXI&issuer=blackhats%20australia&algorithm=SHA256&digits=6&period=30");
+        assert_eq!(s,"otpauth://totp/blackhats%20australia:william%3A%253A?secret=VK54ZXI&issuer=blackhats%20australia&algorithm=SHA256&digits=6&period=30");
     }
 }
diff --git a/proto/src/oauth2.rs b/proto/src/oauth2.rs
index 1215d2b0f..88cf769ec 100644
--- a/proto/src/oauth2.rs
+++ b/proto/src/oauth2.rs
@@ -173,7 +173,7 @@ pub struct OAuth2RFC9068TokenExtensions {
 #[derive(Serialize, Deserialize, Debug)]
 pub struct AccessTokenResponse {
     pub access_token: String,
-    pub token_type: String,
+    pub token_type: AccessTokenType,
     /// Expiration relative to `now` in seconds.
     pub expires_in: u32,
     pub refresh_token: Option<String>,
@@ -184,6 +184,31 @@ pub struct AccessTokenResponse {
     pub id_token: Option<String>,
 }
 
+/// Access token types, per [IANA Registry - OAuth Access Token Types](https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#token-types)
+#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
+#[serde(try_from = "&str")]
+pub enum AccessTokenType {
+    Bearer,
+    PoP,
+    #[serde(rename = "N_A")]
+    NA,
+    DPoP,
+}
+
+impl TryFrom<&str> for AccessTokenType {
+    type Error = String;
+
+    fn try_from(s: &str) -> Result<Self, Self::Error> {
+        match s.to_lowercase().as_str() {
+            "bearer" => Ok(AccessTokenType::Bearer),
+            "pop" => Ok(AccessTokenType::PoP),
+            "n_a" => Ok(AccessTokenType::NA),
+            "dpop" => Ok(AccessTokenType::DPoP),
+            _ => Err(format!("Unknown AccessTokenType: {}", s)),
+        }
+    }
+}
+
 /// Request revocation of an Access or Refresh token. On success the response is OK 200
 /// with no body.
 #[skip_serializing_none]
@@ -214,7 +239,7 @@ pub struct AccessTokenIntrospectResponse {
     pub scope: Option<String>,
     pub client_id: Option<String>,
     pub username: Option<String>,
-    pub token_type: Option<String>,
+    pub token_type: Option<AccessTokenType>,
     pub exp: Option<i64>,
     pub iat: Option<i64>,
     pub nbf: Option<i64>,
@@ -479,4 +504,24 @@ mod tests {
 
         println!("{:?}", serde_json::to_string(&atr).expect("JSON failure"));
     }
+
+    #[test]
+    fn test_oauth2_access_token_type_serde() {
+        for testcase in ["bearer", "Bearer", "BeArEr"] {
+            let at: super::AccessTokenType =
+                serde_json::from_str(&format!("\"{}\"", testcase)).expect("Failed to parse");
+            assert_eq!(at, super::AccessTokenType::Bearer);
+        }
+
+        for testcase in ["dpop", "dPoP", "DPOP", "DPoP"] {
+            let at: super::AccessTokenType =
+                serde_json::from_str(&format!("\"{}\"", testcase)).expect("Failed to parse");
+            assert_eq!(at, super::AccessTokenType::DPoP);
+        }
+
+        for testcase in ["cheese"] {
+            let at = serde_json::from_str::<super::AccessTokenType>(&format!("\"{}\"", testcase));
+            assert!(at.is_err())
+        }
+    }
 }
diff --git a/server/core/src/repl/codec.rs b/server/core/src/repl/codec.rs
index 79bd0922b..dd6e40305 100644
--- a/server/core/src/repl/codec.rs
+++ b/server/core/src/repl/codec.rs
@@ -211,7 +211,7 @@ mod tests {
         // Length header reports a zero size request.
         let zero = [0, 0, 0, 0];
         buf.extend_from_slice(&zero);
-        assert!(buf.len() == 8);
+        assert_eq!(buf.len(), 8);
         assert!(consumer_codec.decode(&mut buf).is_err());
 
         // Clear buffer - setup a request with a length > allowed max.
@@ -221,7 +221,7 @@ mod tests {
 
         // Even though the buf len is only 8, this will error as the overall
         // request will be too large.
-        assert!(buf.len() == 8);
+        assert_eq!(buf.len(), 8);
         assert!(consumer_codec.decode(&mut buf).is_err());
 
         // Assert that we request more data on a validly sized req
@@ -230,7 +230,7 @@ mod tests {
         buf.extend_from_slice(&len_bytes);
         // Pad in some extra bytes.
         buf.extend_from_slice(&zero);
-        assert!(buf.len() == 12);
+        assert_eq!(buf.len(), 12);
         assert!(matches!(consumer_codec.decode(&mut buf), Ok(None)));
 
         // Make a request that is correctly sized.
diff --git a/server/core/src/repl/mod.rs b/server/core/src/repl/mod.rs
index 5bf5df209..bc05a84eb 100644
--- a/server/core/src/repl/mod.rs
+++ b/server/core/src/repl/mod.rs
@@ -731,7 +731,7 @@ async fn repl_acceptor(
                     ));
 
                     task_handles.push_back(handle);
-                    debug_assert!(task_handles.len() == task_tx.receiver_count());
+                    debug_assert_eq!(task_handles.len(), task_tx.receiver_count());
                 }
                 RepNodeConfig::AllowPull { consumer_cert: _ } => {}
             };
diff --git a/server/lib-macros/src/entry.rs b/server/lib-macros/src/entry.rs
index 7539764fa..6301eb182 100644
--- a/server/lib-macros/src/entry.rs
+++ b/server/lib-macros/src/entry.rs
@@ -152,7 +152,7 @@ pub(crate) fn qs_test(args: TokenStream, item: TokenStream) -> TokenStream {
                 // Make sure there are no errors.
                 let verifications = test_server.verify().await;
                 trace!("Verification result: {:?}", verifications);
-                assert!(verifications.len() == 0);
+                assert_eq!(verifications.len(),0);
             };
             #[allow(clippy::expect_used, clippy::diverging_sub_expression)]
             {
@@ -351,7 +351,7 @@ pub(crate) fn idm_test(args: &TokenStream, item: TokenStream) -> TokenStream {
                 let mut idm_read_txn = test_server.proxy_read().await.unwrap();
                 let verifications = idm_read_txn.qs_read.verify();
                 trace!("Verification result: {:?}", verifications);
-                assert!(verifications.len() == 0);
+                assert_eq!(verifications.len(),0);
 
                 idms_delayed.check_is_empty_or_panic();
                 idms_audit.check_is_empty_or_panic();
diff --git a/server/lib/src/be/dbvalue.rs b/server/lib/src/be/dbvalue.rs
index 0c136be20..a99e2dc04 100644
--- a/server/lib/src/be/dbvalue.rs
+++ b/server/lib/src/be/dbvalue.rs
@@ -951,6 +951,6 @@ mod tests {
 
         let _e_dbcred: Vec<DbCred> = serde_json::from_str(&json).unwrap();
 
-        // assert!(dbcred == e_dbcred);
+        // assert_eq!(dbcred,e_dbcred);
     }
 }
diff --git a/server/lib/src/be/idl_sqlite.rs b/server/lib/src/be/idl_sqlite.rs
index e6e1e5f9b..b29f4db4a 100644
--- a/server/lib/src/be/idl_sqlite.rs
+++ b/server/lib/src/be/idl_sqlite.rs
@@ -1741,7 +1741,7 @@ impl IdlSqliteWriteTransaction {
 impl IdlSqlite {
     pub fn new(cfg: &BackendConfig, vacuum: bool) -> Result<Self, OperationError> {
         if cfg.path.is_empty() {
-            debug_assert!(cfg.pool_size == 1);
+            debug_assert_eq!(cfg.pool_size, 1);
         }
         // If provided, set the page size to match the tuning we want. By default we use 4096. The VACUUM
         // immediately after is so that on db create the page size takes effect.
diff --git a/server/lib/src/be/mod.rs b/server/lib/src/be/mod.rs
index 4873a9ce9..7900f9b3f 100644
--- a/server/lib/src/be/mod.rs
+++ b/server/lib/src/be/mod.rs
@@ -1164,7 +1164,7 @@ impl<'a> BackendWriteTransaction<'a> {
             return Err(OperationError::EmptyRequest);
         }
 
-        assert!(post_entries.len() == pre_entries.len());
+        assert_eq!(post_entries.len(), pre_entries.len());
 
         let post_entries_iter = post_entries.iter().filter(|e| {
             trace!(?cid);
@@ -1464,7 +1464,7 @@ impl<'a> BackendWriteTransaction<'a> {
             }
             (Some(pre), Some(post)) => {
                 trace!("Attempting to modify entry indexes");
-                assert!(pre.get_id() == post.get_id());
+                assert_eq!(pre.get_id(), post.get_id());
                 (
                     post.get_uuid(),
                     post.get_id(),
@@ -2689,11 +2689,11 @@ mod tests {
         run_test!(|be: &mut BackendWriteTransaction| {
             let sid1 = be.get_db_s_uuid().unwrap();
             let sid2 = be.get_db_s_uuid().unwrap();
-            assert!(sid1 == sid2);
+            assert_eq!(sid1, sid2);
             let sid3 = be.reset_db_s_uuid().unwrap();
             assert!(sid1 != sid3);
             let sid4 = be.get_db_s_uuid().unwrap();
-            assert!(sid3 == sid4);
+            assert_eq!(sid3, sid4);
         });
     }
 
@@ -2702,7 +2702,7 @@ mod tests {
         run_test!(|be: &mut BackendWriteTransaction| {
             // Add some test data?
             let missing = be.missing_idxs().unwrap();
-            assert!(missing.len() == 7);
+            assert_eq!(missing.len(), 7);
             assert!(be.reindex().is_ok());
             let missing = be.missing_idxs().unwrap();
             debug!("{:?}", missing);
@@ -2736,7 +2736,7 @@ mod tests {
             be.danger_purge_idxs().unwrap();
             // Check they are gone
             let missing = be.missing_idxs().unwrap();
-            assert!(missing.len() == 7);
+            assert_eq!(missing.len(), 7);
             assert!(be.reindex().is_ok());
             let missing = be.missing_idxs().unwrap();
             debug!("{:?}", missing);
@@ -2852,15 +2852,30 @@ mod tests {
             let claire_uuid = uuid!("bd651620-00dd-426b-aaa0-4494f7b7906f");
             let william_uuid = uuid!("db237e8a-0079-4b8c-8a56-593b22aa44d1");
 
-            assert!(be.name2uuid("claire") == Ok(Some(claire_uuid)));
-            assert!(be.name2uuid("william") == Ok(Some(william_uuid)));
-            assert!(be.name2uuid("db237e8a-0079-4b8c-8a56-593b22aa44d1") == Ok(None));
+            assert_eq!(be.name2uuid("claire"), Ok(Some(claire_uuid)));
+            assert_eq!(be.name2uuid("william"), Ok(Some(william_uuid)));
+            assert_eq!(
+                be.name2uuid("db237e8a-0079-4b8c-8a56-593b22aa44d1"),
+                Ok(None)
+            );
             // check uuid2spn
-            assert!(be.uuid2spn(claire_uuid) == Ok(Some(Value::new_iname("claire"))));
-            assert!(be.uuid2spn(william_uuid) == Ok(Some(Value::new_iname("william"))));
+            assert_eq!(
+                be.uuid2spn(claire_uuid),
+                Ok(Some(Value::new_iname("claire")))
+            );
+            assert_eq!(
+                be.uuid2spn(william_uuid),
+                Ok(Some(Value::new_iname("william")))
+            );
             // check uuid2rdn
-            assert!(be.uuid2rdn(claire_uuid) == Ok(Some("name=claire".to_string())));
-            assert!(be.uuid2rdn(william_uuid) == Ok(Some("name=william".to_string())));
+            assert_eq!(
+                be.uuid2rdn(claire_uuid),
+                Ok(Some("name=claire".to_string()))
+            );
+            assert_eq!(
+                be.uuid2rdn(william_uuid),
+                Ok(Some("name=william".to_string()))
+            );
         });
     }
 
@@ -2916,9 +2931,12 @@ mod tests {
             );
 
             let william_uuid = uuid!("db237e8a-0079-4b8c-8a56-593b22aa44d1");
-            assert!(be.name2uuid("william") == Ok(Some(william_uuid)));
-            assert!(be.uuid2spn(william_uuid) == Ok(Some(Value::from("william"))));
-            assert!(be.uuid2rdn(william_uuid) == Ok(Some("name=william".to_string())));
+            assert_eq!(be.name2uuid("william"), Ok(Some(william_uuid)));
+            assert_eq!(be.uuid2spn(william_uuid), Ok(Some(Value::from("william"))));
+            assert_eq!(
+                be.uuid2rdn(william_uuid),
+                Ok(Some("name=william".to_string()))
+            );
 
             // == Now we reap_tombstones, and assert we removed the items.
             let e1_ts = e1.to_tombstone(CID_ONE.clone()).into_sealed_committed();
@@ -2957,9 +2975,9 @@ mod tests {
                 Some(Vec::with_capacity(0))
             );
 
-            assert!(be.name2uuid("william") == Ok(None));
-            assert!(be.uuid2spn(william_uuid) == Ok(None));
-            assert!(be.uuid2rdn(william_uuid) == Ok(None));
+            assert_eq!(be.name2uuid("william"), Ok(None));
+            assert_eq!(be.uuid2spn(william_uuid), Ok(None));
+            assert_eq!(be.uuid2rdn(william_uuid), Ok(None));
         })
     }
 
@@ -3043,19 +3061,25 @@ mod tests {
             let william_uuid = uuid!("db237e8a-0079-4b8c-8a56-593b22aa44d1");
             let lucy_uuid = uuid!("7b23c99d-c06b-4a9a-a958-3afa56383e1d");
 
-            assert!(be.name2uuid("claire") == Ok(Some(claire_uuid)));
+            assert_eq!(be.name2uuid("claire"), Ok(Some(claire_uuid)));
             let x = be.uuid2spn(claire_uuid);
             trace!(?x);
-            assert!(be.uuid2spn(claire_uuid) == Ok(Some(Value::new_iname("claire"))));
-            assert!(be.uuid2rdn(claire_uuid) == Ok(Some("name=claire".to_string())));
+            assert_eq!(
+                be.uuid2spn(claire_uuid),
+                Ok(Some(Value::new_iname("claire")))
+            );
+            assert_eq!(
+                be.uuid2rdn(claire_uuid),
+                Ok(Some("name=claire".to_string()))
+            );
 
-            assert!(be.name2uuid("william") == Ok(None));
-            assert!(be.uuid2spn(william_uuid) == Ok(None));
-            assert!(be.uuid2rdn(william_uuid) == Ok(None));
+            assert_eq!(be.name2uuid("william"), Ok(None));
+            assert_eq!(be.uuid2spn(william_uuid), Ok(None));
+            assert_eq!(be.uuid2rdn(william_uuid), Ok(None));
 
-            assert!(be.name2uuid("lucy") == Ok(None));
-            assert!(be.uuid2spn(lucy_uuid) == Ok(None));
-            assert!(be.uuid2rdn(lucy_uuid) == Ok(None));
+            assert_eq!(be.name2uuid("lucy"), Ok(None));
+            assert_eq!(be.uuid2spn(lucy_uuid), Ok(None));
+            assert_eq!(be.uuid2rdn(lucy_uuid), Ok(None));
         })
     }
 
@@ -3125,10 +3149,16 @@ mod tests {
             );
 
             let william_uuid = uuid!("db237e8a-0079-4b8c-8a56-593b22aa44d1");
-            assert!(be.name2uuid("william") == Ok(None));
-            assert!(be.name2uuid("claire") == Ok(Some(william_uuid)));
-            assert!(be.uuid2spn(william_uuid) == Ok(Some(Value::new_iname("claire"))));
-            assert!(be.uuid2rdn(william_uuid) == Ok(Some("name=claire".to_string())));
+            assert_eq!(be.name2uuid("william"), Ok(None));
+            assert_eq!(be.name2uuid("claire"), Ok(Some(william_uuid)));
+            assert_eq!(
+                be.uuid2spn(william_uuid),
+                Ok(Some(Value::new_iname("claire")))
+            );
+            assert_eq!(
+                be.uuid2rdn(william_uuid),
+                Ok(Some("name=claire".to_string()))
+            );
         })
     }
 
@@ -3210,12 +3240,18 @@ mod tests {
 
             let claire_uuid = uuid!("04091a7a-6ce4-42d2-abf5-c2ce244ac9e8");
             let william_uuid = uuid!("db237e8a-0079-4b8c-8a56-593b22aa44d1");
-            assert!(be.name2uuid("william") == Ok(None));
-            assert!(be.name2uuid("claire") == Ok(Some(claire_uuid)));
-            assert!(be.uuid2spn(william_uuid) == Ok(None));
-            assert!(be.uuid2rdn(william_uuid) == Ok(None));
-            assert!(be.uuid2spn(claire_uuid) == Ok(Some(Value::new_iname("claire"))));
-            assert!(be.uuid2rdn(claire_uuid) == Ok(Some("name=claire".to_string())));
+            assert_eq!(be.name2uuid("william"), Ok(None));
+            assert_eq!(be.name2uuid("claire"), Ok(Some(claire_uuid)));
+            assert_eq!(be.uuid2spn(william_uuid), Ok(None));
+            assert_eq!(be.uuid2rdn(william_uuid), Ok(None));
+            assert_eq!(
+                be.uuid2spn(claire_uuid),
+                Ok(Some(Value::new_iname("claire")))
+            );
+            assert_eq!(
+                be.uuid2rdn(claire_uuid),
+                Ok(Some("name=claire".to_string()))
+            );
         })
     }
 
@@ -3262,7 +3298,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(feq.to_inner(), 0).unwrap();
             match r {
                 IdList::Indexed(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(vec![1]));
+                    assert_eq!(idl, IDLBitRange::from_iter(vec![1]));
                 }
                 _ => {
                     panic!("");
@@ -3282,7 +3318,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(f_in_and.to_inner(), 0).unwrap();
             match r {
                 IdList::Indexed(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(vec![1]));
+                    assert_eq!(idl, IDLBitRange::from_iter(vec![1]));
                 }
                 _ => {
                     panic!("");
@@ -3303,7 +3339,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(f_p1.to_inner(), 0).unwrap();
             match r {
                 IdList::Partial(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(vec![1]));
+                    assert_eq!(idl, IDLBitRange::from_iter(vec![1]));
                 }
                 _ => unreachable!(),
             }
@@ -3311,7 +3347,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(f_p2.to_inner(), 0).unwrap();
             match r {
                 IdList::Partial(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(vec![1]));
+                    assert_eq!(idl, IDLBitRange::from_iter(vec![1]));
                 }
                 _ => unreachable!(),
             }
@@ -3323,7 +3359,7 @@ mod tests {
             trace!(?r, ?plan);
             match r {
                 IdList::Partial(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(vec![1]));
+                    assert_eq!(idl, IDLBitRange::from_iter(vec![1]));
                 }
                 _ => unreachable!(),
             }
@@ -3351,7 +3387,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(f_in_or.to_inner(), 0).unwrap();
             match r {
                 IdList::Indexed(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(vec![1]));
+                    assert_eq!(idl, IDLBitRange::from_iter(vec![1]));
                 }
                 _ => {
                     panic!("");
@@ -3380,7 +3416,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(f_r_andnot.to_inner(), 0).unwrap();
             match r {
                 IdList::Indexed(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(Vec::with_capacity(0)));
+                    assert_eq!(idl, IDLBitRange::from_iter(Vec::with_capacity(0)));
                 }
                 _ => {
                     panic!("");
@@ -3396,7 +3432,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(f_and_andnot.to_inner(), 0).unwrap();
             match r {
                 IdList::Indexed(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(Vec::with_capacity(0)));
+                    assert_eq!(idl, IDLBitRange::from_iter(Vec::with_capacity(0)));
                 }
                 _ => {
                     panic!("");
@@ -3411,7 +3447,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(f_or_andnot.to_inner(), 0).unwrap();
             match r {
                 IdList::Indexed(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(Vec::with_capacity(0)));
+                    assert_eq!(idl, IDLBitRange::from_iter(Vec::with_capacity(0)));
                 }
                 _ => {
                     panic!("");
@@ -3428,7 +3464,7 @@ mod tests {
             match r {
                 IdList::Indexed(idl) => {
                     debug!("{:?}", idl);
-                    assert!(idl == IDLBitRange::from_iter(vec![1]));
+                    assert_eq!(idl, IDLBitRange::from_iter(vec![1]));
                 }
                 _ => {
                     panic!("");
@@ -3443,7 +3479,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(f_and_andnot.to_inner(), 0).unwrap();
             match r {
                 IdList::Indexed(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(vec![1]));
+                    assert_eq!(idl, IDLBitRange::from_iter(vec![1]));
                 }
                 _ => {
                     panic!("");
@@ -3482,7 +3518,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(f_e_or.to_inner(), 0).unwrap();
             match r {
                 IdList::Indexed(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(vec![]));
+                    assert_eq!(idl, IDLBitRange::from_iter(vec![]));
                 }
                 _ => {
                     panic!("");
@@ -3494,7 +3530,7 @@ mod tests {
             let (r, _plan) = be.filter2idl(f_e_and.to_inner(), 0).unwrap();
             match r {
                 IdList::Indexed(idl) => {
-                    assert!(idl == IDLBitRange::from_iter(vec![]));
+                    assert_eq!(idl, IDLBitRange::from_iter(vec![]));
                 }
                 _ => {
                     panic!("");
@@ -3658,9 +3694,9 @@ mod tests {
 
             // check deny on allids
             let res = be.search(&lim_deny_allids, &filt);
-            assert!(res == Err(OperationError::ResourceLimit));
+            assert_eq!(res, Err(OperationError::ResourceLimit));
             let res = be.exists(&lim_deny_allids, &filt);
-            assert!(res == Err(OperationError::ResourceLimit));
+            assert_eq!(res, Err(OperationError::ResourceLimit));
         })
     }
 
@@ -3698,7 +3734,7 @@ mod tests {
 
             // check deny on entry max
             let res = be.search(&lim_deny, &filt);
-            assert!(res == Err(OperationError::ResourceLimit));
+            assert_eq!(res, Err(OperationError::ResourceLimit));
             // we don't limit on exists because we never load the entries.
             let res = be.exists(&lim_deny, &filt);
             assert!(res.is_ok());
@@ -3706,7 +3742,7 @@ mod tests {
             // --> This will shortcut due to indexing.
             assert!(be.reindex().is_ok());
             let res = be.search(&lim_deny, &filt);
-            assert!(res == Err(OperationError::ResourceLimit));
+            assert_eq!(res, Err(OperationError::ResourceLimit));
             // we don't limit on exists because we never load the entries.
             let res = be.exists(&lim_deny, &filt);
             assert!(res.is_ok());
@@ -3775,10 +3811,10 @@ mod tests {
 
             // check deny on entry max
             let res = be.search(&lim_deny, &filt);
-            assert!(res == Err(OperationError::ResourceLimit));
+            assert_eq!(res, Err(OperationError::ResourceLimit));
             // we don't limit on exists because we never load the entries.
             let res = be.exists(&lim_deny, &filt);
-            assert!(res == Err(OperationError::ResourceLimit));
+            assert_eq!(res, Err(OperationError::ResourceLimit));
         })
     }
 
diff --git a/server/lib/src/constants/entries.rs b/server/lib/src/constants/entries.rs
index e16cb47f4..128f80325 100644
--- a/server/lib/src/constants/entries.rs
+++ b/server/lib/src/constants/entries.rs
@@ -20,8 +20,8 @@ use uuid::Uuid;
 
 #[test]
 fn test_valueattribute_as_str() {
-    assert!(Attribute::Class.as_ref() == "class");
-    assert!(Attribute::Class.to_string() == *"class");
+    assert_eq!(Attribute::Class.as_ref(), "class");
+    assert_eq!(Attribute::Class.to_string(), *"class");
 }
 
 #[test]
@@ -32,7 +32,7 @@ fn test_valueattribute_round_trip() {
     for attr in the_list {
         let s: &'static str = attr.into();
         let attr2 = Attribute::try_from(s).unwrap();
-        assert!(attr == attr2);
+        assert_eq!(attr, attr2);
     }
 }
 
diff --git a/server/lib/src/credential/softlock.rs b/server/lib/src/credential/softlock.rs
index 02c5bf833..d8a11b158 100644
--- a/server/lib/src/credential/softlock.rs
+++ b/server/lib/src/credential/softlock.rs
@@ -277,7 +277,10 @@ mod tests {
         let ct4 = ct2 + Duration::from_secs(2);
         slock2.apply_time_step(ct4);
         eprintln!("{:?}", slock2.peek_state());
-        assert!(slock2.peek_state() == &LockState::Unlocked(2, Duration::from_secs(ONEDAY)));
+        assert_eq!(
+            slock2.peek_state(),
+            &LockState::Unlocked(2, Duration::from_secs(ONEDAY))
+        );
         slock2.apply_time_step(ct3);
         assert!(slock2.is_state_init());
         assert!(slock2.is_valid());
diff --git a/server/lib/src/credential/totp.rs b/server/lib/src/credential/totp.rs
index d5b6e22bd..04a822d6f 100644
--- a/server/lib/src/credential/totp.rs
+++ b/server/lib/src/credential/totp.rs
@@ -289,11 +289,11 @@ mod tests {
     #[test]
     fn hotp_basic() {
         let otp_sha1 = Totp::new(vec![0], 30, TotpAlgo::Sha1, TotpDigits::Six);
-        assert!(otp_sha1.digest(0) == Ok(328482));
+        assert_eq!(otp_sha1.digest(0), Ok(328482));
         let otp_sha256 = Totp::new(vec![0], 30, TotpAlgo::Sha256, TotpDigits::Six);
-        assert!(otp_sha256.digest(0) == Ok(356306));
+        assert_eq!(otp_sha256.digest(0), Ok(356306));
         let otp_sha512 = Totp::new(vec![0], 30, TotpAlgo::Sha512, TotpDigits::Six);
-        assert!(otp_sha512.digest(0) == Ok(674061));
+        assert_eq!(otp_sha512.digest(0), Ok(674061));
     }
 
     fn do_test(
diff --git a/server/lib/src/entry.rs b/server/lib/src/entry.rs
index 3afbf7a83..7cbede050 100644
--- a/server/lib/src/entry.rs
+++ b/server/lib/src/entry.rs
@@ -718,7 +718,7 @@ impl Entry<EntryIncremental, EntryNew> {
 
     pub(crate) fn is_add_conflict(&self, db_entry: &EntrySealedCommitted) -> bool {
         use crate::repl::entry::State;
-        debug_assert!(self.valid.uuid == db_entry.valid.uuid);
+        debug_assert_eq!(self.valid.uuid, db_entry.valid.uuid);
         // This is a conflict if the state 'at' is not identical
         let self_cs = &self.valid.ecstate;
         let db_cs = db_entry.get_changestate();
@@ -739,7 +739,7 @@ impl Entry<EntryIncremental, EntryNew> {
         db_ent: &EntrySealedCommitted,
     ) -> (Option<EntrySealedNew>, EntryIncrementalCommitted) {
         use crate::repl::entry::State;
-        debug_assert!(self.valid.uuid == db_ent.valid.uuid);
+        debug_assert_eq!(self.valid.uuid, db_ent.valid.uuid);
         let self_cs = &self.valid.ecstate;
         let db_cs = db_ent.get_changestate();
 
@@ -867,7 +867,7 @@ impl Entry<EntryIncremental, EntryNew> {
         use crate::repl::entry::State;
 
         // Paranoid check.
-        debug_assert!(self.valid.uuid == db_ent.valid.uuid);
+        debug_assert_eq!(self.valid.uuid, db_ent.valid.uuid);
 
         // First, determine if either side is a tombstone. This is needed so that only
         // when both sides are live
@@ -885,7 +885,7 @@ impl Entry<EntryIncremental, EntryNew> {
                     changes: changes_right,
                 },
             ) => {
-                debug_assert!(at_left == at_right);
+                debug_assert_eq!(at_left, at_right);
                 // Given the current db entry, compare and merge our attributes to
                 // form a resultant entry attr and ecstate
                 //
@@ -1702,7 +1702,7 @@ impl Entry<EntrySealed, EntryCommitted> {
                     .collect()
             }
             (Some(pre_e), Some(post_e)) => {
-                assert!(pre_e.state.id == post_e.state.id);
+                assert_eq!(pre_e.state.id, post_e.state.id);
                 idxmeta
                     .keys()
                     .flat_map(|ikey| {
@@ -3718,7 +3718,7 @@ mod tests {
         // When we do None, None, we get nothing back.
         let r1 = Entry::idx_diff(&idxmeta, None, None);
         eprintln!("{r1:?}");
-        assert!(r1 == Vec::with_capacity(0));
+        assert_eq!(r1, Vec::with_capacity(0));
 
         // Check generating a delete diff
         let mut del_r = Entry::idx_diff(&idxmeta, Some(&e1), None);
@@ -3836,7 +3836,7 @@ mod tests {
     fn test_entry_idx_name2uuid_diff() {
         // none, none,
         let r = Entry::idx_name2uuid_diff(None, None);
-        assert!(r == (None, None));
+        assert_eq!(r, (None, None));
 
         // none, some - test adding an entry gives back add sets
         {
diff --git a/server/lib/src/filter.rs b/server/lib/src/filter.rs
index a23af26dc..8918777dd 100644
--- a/server/lib/src/filter.rs
+++ b/server/lib/src/filter.rs
@@ -1650,7 +1650,7 @@ mod tests {
             debug!("init   --> {:?}", f_init_r);
             debug!("opt    --> {:?}", f_init_o);
             debug!("expect --> {:?}", f_init_e);
-            assert!(f_init_o == f_init_e);
+            assert_eq!(f_init_o, f_init_e);
         }};
     }
 
@@ -1767,14 +1767,14 @@ mod tests {
         let f_t1b = filter!(f_pres(Attribute::UserId));
         let f_t1c = filter!(f_pres(Attribute::NonExist));
 
-        assert!(f_t1a == f_t1b);
+        assert_eq!(f_t1a, f_t1b);
         assert!(f_t1a != f_t1c);
         assert!(f_t1b != f_t1c);
 
         let f_t2a = filter!(f_and!([f_pres(Attribute::UserId)]));
         let f_t2b = filter!(f_and!([f_pres(Attribute::UserId)]));
         let f_t2c = filter!(f_and!([f_pres(Attribute::NonExist)]));
-        assert!(f_t2a == f_t2b);
+        assert_eq!(f_t2a, f_t2b);
         assert!(f_t2a != f_t2c);
         assert!(f_t2b != f_t2c);
 
@@ -1821,14 +1821,14 @@ mod tests {
         let f_t1b = f_t1a.clone();
         let f_t1c = filter_resolved!(f_pres(Attribute::NonExist));
 
-        assert!(f_t1a == f_t1b);
+        assert_eq!(f_t1a, f_t1b);
         assert!(f_t1a != f_t1c);
 
         let f_t2a = filter_resolved!(f_and!([f_pres(Attribute::UserId)]));
         let f_t2b = f_t2a.clone();
         let f_t2c = filter_resolved!(f_and!([f_pres(Attribute::NonExist)]));
 
-        assert!(f_t2a == f_t2b);
+        assert_eq!(f_t2a, f_t2b);
         assert!(f_t2a != f_t2c);
     }
 
@@ -2021,7 +2021,7 @@ mod tests {
             f_eq(Attribute::Class, PartialValue::new_iutf8("1001")),
         ]));
 
-        assert!(f_t1a.get_attr_set() == f_expect);
+        assert_eq!(f_t1a.get_attr_set(), f_expect);
 
         let f_t2a = filter_valid!(f_and!([
             f_eq(Attribute::UserId, PartialValue::new_iutf8("alice")),
@@ -2029,7 +2029,7 @@ mod tests {
             f_eq(Attribute::UserId, PartialValue::new_iutf8("claire")),
         ]));
 
-        assert!(f_t2a.get_attr_set() == f_expect);
+        assert_eq!(f_t2a.get_attr_set(), f_expect);
     }
 
     #[qs_test]
@@ -2106,31 +2106,37 @@ mod tests {
         // Resolving most times should yield expected results
         let t1 = vs_utf8!["teststring".to_string()] as _;
         let r1 = server_txn.resolve_valueset(&t1);
-        assert!(r1 == Ok(vec!["teststring".to_string()]));
+        assert_eq!(r1, Ok(vec!["teststring".to_string()]));
 
         // Resolve UUID with matching spn
         let t_uuid = vs_refer![uuid!("cc8e95b4-c24f-4d68-ba54-8bed76f63930")] as _;
         let r_uuid = server_txn.resolve_valueset(&t_uuid);
         debug!("{:?}", r_uuid);
-        assert!(r_uuid == Ok(vec!["testperson1@example.com".to_string()]));
+        assert_eq!(r_uuid, Ok(vec!["testperson1@example.com".to_string()]));
 
         // Resolve UUID with matching name
         let t_uuid = vs_refer![uuid!("a67c0c71-0b35-4218-a6b0-22d23d131d27")] as _;
         let r_uuid = server_txn.resolve_valueset(&t_uuid);
         debug!("{:?}", r_uuid);
-        assert!(r_uuid == Ok(vec!["testperson2@example.com".to_string()]));
+        assert_eq!(r_uuid, Ok(vec!["testperson2@example.com".to_string()]));
 
         // Resolve UUID non-exist
         let t_uuid_non = vs_refer![uuid!("b83e98f0-3d2e-41d2-9796-d8d993289c86")] as _;
         let r_uuid_non = server_txn.resolve_valueset(&t_uuid_non);
         debug!("{:?}", r_uuid_non);
-        assert!(r_uuid_non == Ok(vec!["b83e98f0-3d2e-41d2-9796-d8d993289c86".to_string()]));
+        assert_eq!(
+            r_uuid_non,
+            Ok(vec!["b83e98f0-3d2e-41d2-9796-d8d993289c86".to_string()])
+        );
 
         // Resolve UUID to tombstone/recycled (same an non-exst)
         let t_uuid_ts = vs_refer![uuid!("9557f49c-97a5-4277-a9a5-097d17eb8317")] as _;
         let r_uuid_ts = server_txn.resolve_valueset(&t_uuid_ts);
         debug!("{:?}", r_uuid_ts);
-        assert!(r_uuid_ts == Ok(vec!["9557f49c-97a5-4277-a9a5-097d17eb8317".to_string()]));
+        assert_eq!(
+            r_uuid_ts,
+            Ok(vec!["9557f49c-97a5-4277-a9a5-097d17eb8317".to_string()])
+        );
     }
 
     #[qs_test]
@@ -2151,11 +2157,11 @@ mod tests {
 
         // Test proto + read
         let res = Filter::from_ro(&ev, &inv_proto, &mut r_txn);
-        assert!(res == Err(OperationError::ResourceLimit));
+        assert_eq!(res, Err(OperationError::ResourceLimit));
 
         // ldap
         let res = Filter::from_ldap_ro(&ev, &inv_ldap, &mut r_txn);
-        assert!(res == Err(OperationError::ResourceLimit));
+        assert_eq!(res, Err(OperationError::ResourceLimit));
 
         // Can only have one db conn at a time.
         std::mem::drop(r_txn);
@@ -2163,7 +2169,7 @@ mod tests {
         // proto + write
         let mut wr_txn = server.write(duration_from_epoch_now()).await.expect("txn");
         let res = Filter::from_rw(&ev, &inv_proto, &mut wr_txn);
-        assert!(res == Err(OperationError::ResourceLimit));
+        assert_eq!(res, Err(OperationError::ResourceLimit));
     }
 
     #[qs_test]
@@ -2188,11 +2194,11 @@ mod tests {
 
         // Test proto + read
         let res = Filter::from_ro(&ev, &inv_proto, &mut r_txn);
-        assert!(res == Err(OperationError::ResourceLimit));
+        assert_eq!(res, Err(OperationError::ResourceLimit));
 
         // ldap
         let res = Filter::from_ldap_ro(&ev, &inv_ldap, &mut r_txn);
-        assert!(res == Err(OperationError::ResourceLimit));
+        assert_eq!(res, Err(OperationError::ResourceLimit));
 
         // Can only have one db conn at a time.
         std::mem::drop(r_txn);
@@ -2200,6 +2206,6 @@ mod tests {
         // proto + write
         let mut wr_txn = server.write(duration_from_epoch_now()).await.expect("txn");
         let res = Filter::from_rw(&ev, &inv_proto, &mut wr_txn);
-        assert!(res == Err(OperationError::ResourceLimit));
+        assert_eq!(res, Err(OperationError::ResourceLimit));
     }
 }
diff --git a/server/lib/src/idm/account.rs b/server/lib/src/idm/account.rs
index 6ad49954e..f012931ae 100644
--- a/server/lib/src/idm/account.rs
+++ b/server/lib/src/idm/account.rs
@@ -1066,7 +1066,7 @@ mod tests {
             .expect("Unable to create uat");
 
         // Check the ui hints are as expected.
-        assert!(uat.ui_hints.len() == 1);
+        assert_eq!(uat.ui_hints.len(), 1);
         assert!(uat.ui_hints.contains(&UiHint::CredentialUpdate));
 
         // Modify the user to be a posix account, ensure they get the hint.
@@ -1096,7 +1096,7 @@ mod tests {
             )
             .expect("Unable to create uat");
 
-        assert!(uat.ui_hints.len() == 2);
+        assert_eq!(uat.ui_hints.len(), 2);
         assert!(uat.ui_hints.contains(&UiHint::PosixAccount));
         assert!(uat.ui_hints.contains(&UiHint::CredentialUpdate));
 
@@ -1129,7 +1129,7 @@ mod tests {
             )
             .expect("Unable to create uat");
 
-        assert!(uat.ui_hints.len() == 3);
+        assert_eq!(uat.ui_hints.len(), 3);
         assert!(uat.ui_hints.contains(&UiHint::PosixAccount));
         assert!(uat.ui_hints.contains(&UiHint::ExperimentalFeatures));
         assert!(uat.ui_hints.contains(&UiHint::CredentialUpdate));
diff --git a/server/lib/src/idm/application.rs b/server/lib/src/idm/application.rs
index 167078bc1..d32f934e1 100644
--- a/server/lib/src/idm/application.rs
+++ b/server/lib/src/idm/application.rs
@@ -630,7 +630,7 @@ mod tests {
                 })
                 .expect("Failed to search for account");
 
-            assert!(account.apps_pwds.values().count() == 0);
+            assert_eq!(account.apps_pwds.values().count(), 0);
         }
     }
 
@@ -691,7 +691,7 @@ mod tests {
             .validate_client_auth_info_to_ident(api_token.clone().into(), ct)
             .expect("Unable to verify api token.");
 
-        assert!(ident.get_uuid() == Some(test_entry_uuid));
+        assert_eq!(ident.get_uuid(), Some(test_entry_uuid));
 
         // Check the expiry
         assert!(
@@ -713,7 +713,7 @@ mod tests {
         let ident = idms_prox_write
             .validate_client_auth_info_to_ident(api_token.clone().into(), ct)
             .expect("Unable to verify api token.");
-        assert!(ident.get_uuid() == Some(test_entry_uuid));
+        assert_eq!(ident.get_uuid(), Some(test_entry_uuid));
 
         // Past gracewindow?
         assert!(
diff --git a/server/lib/src/idm/authsession.rs b/server/lib/src/idm/authsession.rs
index e683b5532..a3a225417 100644
--- a/server/lib/src/idm/authsession.rs
+++ b/server/lib/src/idm/authsession.rs
@@ -1932,7 +1932,7 @@ mod tests {
             &webauthn,
             &pw_badlist_cache,
         ) {
-            Ok(AuthState::Denied(msg)) => assert!(msg == PW_BADLIST_MSG),
+            Ok(AuthState::Denied(msg)) => assert_eq!(msg, PW_BADLIST_MSG),
             _ => panic!(),
         };
 
@@ -2120,7 +2120,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_AUTH_TYPE_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_AUTH_TYPE_MSG),
                 _ => panic!(),
             };
 
@@ -2144,7 +2144,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_AUTH_TYPE_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_AUTH_TYPE_MSG),
                 _ => panic!(),
             };
 
@@ -2165,7 +2165,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_TOTP_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_TOTP_MSG),
                 _ => panic!(),
             };
 
@@ -2188,7 +2188,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -2199,7 +2199,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_PASSWORD_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_PASSWORD_MSG),
                 _ => panic!(),
             };
 
@@ -2222,7 +2222,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -2295,7 +2295,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -2306,7 +2306,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == PW_BADLIST_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, PW_BADLIST_MSG),
                 _ => panic!(),
             };
 
@@ -2351,7 +2351,7 @@ mod tests {
                 .expect("Failed to select Passkey mech.");
 
             let wan_chal = if let AuthState::Continue(auth_mechs) = state {
-                assert!(auth_mechs.len() == 1);
+                assert_eq!(auth_mechs.len(), 1);
                 auth_mechs
                     .into_iter()
                     .fold(None, |_acc, x| match x {
@@ -2452,7 +2452,7 @@ mod tests {
                 &webauthn,
                 &Default::default(),
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_AUTH_TYPE_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_AUTH_TYPE_MSG),
                 _ => panic!(),
             };
 
@@ -2513,7 +2513,7 @@ mod tests {
                 &webauthn,
                 &Default::default(),
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_WEBAUTHN_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_WEBAUTHN_MSG),
                 _ => panic!(),
             };
 
@@ -2561,7 +2561,7 @@ mod tests {
                 &webauthn,
                 &Default::default(),
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_WEBAUTHN_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_WEBAUTHN_MSG),
                 _ => panic!(),
             };
 
@@ -2611,7 +2611,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_AUTH_TYPE_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_AUTH_TYPE_MSG),
                 _ => panic!(),
             };
 
@@ -2633,7 +2633,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_AUTH_TYPE_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_AUTH_TYPE_MSG),
                 _ => panic!(),
             };
 
@@ -2665,7 +2665,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_WEBAUTHN_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_WEBAUTHN_MSG),
                 _ => panic!(),
             };
 
@@ -2693,7 +2693,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -2704,7 +2704,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_PASSWORD_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_PASSWORD_MSG),
                 _ => panic!(),
             };
 
@@ -2738,7 +2738,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -2815,7 +2815,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_AUTH_TYPE_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_AUTH_TYPE_MSG),
                 _ => panic!(),
             };
 
@@ -2837,7 +2837,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_TOTP_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_TOTP_MSG),
                 _ => panic!(),
             };
 
@@ -2867,7 +2867,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_WEBAUTHN_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_WEBAUTHN_MSG),
                 _ => panic!(),
             };
 
@@ -2895,7 +2895,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -2906,7 +2906,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_PASSWORD_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_PASSWORD_MSG),
                 _ => panic!(),
             };
 
@@ -2934,7 +2934,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -2945,7 +2945,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_PASSWORD_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_PASSWORD_MSG),
                 _ => panic!(),
             };
 
@@ -2967,7 +2967,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -3006,7 +3006,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -3094,7 +3094,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_AUTH_TYPE_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_AUTH_TYPE_MSG),
                 _ => panic!(),
             };
 
@@ -3115,7 +3115,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_BACKUPCODE_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_BACKUPCODE_MSG),
                 _ => panic!(),
             };
 
@@ -3137,7 +3137,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -3148,7 +3148,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Denied(msg)) => assert!(msg == BAD_PASSWORD_MSG),
+                Ok(AuthState::Denied(msg)) => assert_eq!(msg, BAD_PASSWORD_MSG),
                 _ => panic!(),
             };
 
@@ -3176,7 +3176,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -3217,7 +3217,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -3296,7 +3296,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
@@ -3329,7 +3329,7 @@ mod tests {
                 &webauthn,
                 &pw_badlist_cache,
             ) {
-                Ok(AuthState::Continue(cont)) => assert!(cont == vec![AuthAllowed::Password]),
+                Ok(AuthState::Continue(cont)) => assert_eq!(cont, vec![AuthAllowed::Password]),
                 _ => panic!(),
             };
             match session.validate_creds(
diff --git a/server/lib/src/idm/credupdatesession.rs b/server/lib/src/idm/credupdatesession.rs
index f4e272c57..03aca1fae 100644
--- a/server/lib/src/idm/credupdatesession.rs
+++ b/server/lib/src/idm/credupdatesession.rs
@@ -3473,7 +3473,7 @@ mod tests {
 
         // Check we have the passkey
         trace!(?c_status);
-        assert!(c_status.passkeys.len() == 1);
+        assert_eq!(c_status.passkeys.len(), 1);
 
         c_status
     }
@@ -3514,7 +3514,7 @@ mod tests {
 
         trace!(?c_status);
         assert!(c_status.primary.is_none());
-        assert!(c_status.passkeys.len() == 1);
+        assert_eq!(c_status.passkeys.len(), 1);
 
         let c_status = cutxn
             .credential_passkey_remove(&cust, ct, pk_uuid)
@@ -3809,7 +3809,7 @@ mod tests {
 
         assert!(c_status.can_commit);
         assert!(c_status.warnings.is_empty());
-        assert!(c_status.passkeys.len() == 1);
+        assert_eq!(c_status.passkeys.len(), 1);
 
         drop(cutxn);
         commit_session(idms, ct, cust).await;
@@ -3867,7 +3867,7 @@ mod tests {
 
         assert!(c_status.can_commit);
         assert!(c_status.warnings.is_empty());
-        assert!(c_status.passkeys.len() == 1);
+        assert_eq!(c_status.passkeys.len(), 1);
 
         drop(cutxn);
         commit_session(idms, ct, cust).await;
@@ -4047,7 +4047,7 @@ mod tests {
         trace!(?c_status);
         assert!(c_status.primary.is_none());
         assert!(c_status.passkeys.is_empty());
-        assert!(c_status.attested_passkeys.len() == 1);
+        assert_eq!(c_status.attested_passkeys.len(), 1);
 
         let c_status = cutxn
             .credential_attested_passkey_remove(&cust, ct, pk_uuid)
diff --git a/server/lib/src/idm/ldap.rs b/server/lib/src/idm/ldap.rs
index 4649a3a5b..35b6a7789 100644
--- a/server/lib/src/idm/ldap.rs
+++ b/server/lib/src/idm/ldap.rs
@@ -884,13 +884,13 @@ mod tests {
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
         let admin_t = ldaps
             .do_bind(idms, "admin@example.com", TEST_PASSWORD)
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
 
         // Setting UNIX_PW_BIND flag to false:
         // Hence all of the below authentication will fail (asserts are still satisfied)
@@ -905,7 +905,10 @@ mod tests {
             .is_ok());
         assert!(idms_prox_write.commit().is_ok());
         let anon_t = ldaps.do_bind(idms, "", "").await.unwrap().unwrap();
-        assert!(anon_t.effective_session == LdapSession::UnixBind(UUID_ANONYMOUS));
+        assert_eq!(
+            anon_t.effective_session,
+            LdapSession::UnixBind(UUID_ANONYMOUS)
+        );
         assert!(
             ldaps.do_bind(idms, "", "test").await.unwrap_err() == OperationError::NotAuthenticated
         );
@@ -927,25 +930,25 @@ mod tests {
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
         let admin_t = ldaps
             .do_bind(idms, "admin@example.com", TEST_PASSWORD)
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
         let admin_t = ldaps
             .do_bind(idms, STR_UUID_ADMIN, TEST_PASSWORD)
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
         let admin_t = ldaps
             .do_bind(idms, "name=admin,dc=example,dc=com", TEST_PASSWORD)
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
         let admin_t = ldaps
             .do_bind(
                 idms,
@@ -955,7 +958,7 @@ mod tests {
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
         let admin_t = ldaps
             .do_bind(
                 idms,
@@ -965,20 +968,20 @@ mod tests {
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
 
         let admin_t = ldaps
             .do_bind(idms, "name=admin", TEST_PASSWORD)
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
         let admin_t = ldaps
             .do_bind(idms, "spn=admin@example.com", TEST_PASSWORD)
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
         let admin_t = ldaps
             .do_bind(
                 idms,
@@ -988,20 +991,20 @@ mod tests {
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
 
         let admin_t = ldaps
             .do_bind(idms, "admin,dc=example,dc=com", TEST_PASSWORD)
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
         let admin_t = ldaps
             .do_bind(idms, "admin@example.com,dc=example,dc=com", TEST_PASSWORD)
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
         let admin_t = ldaps
             .do_bind(
                 idms,
@@ -1011,7 +1014,7 @@ mod tests {
             .await
             .unwrap()
             .unwrap();
-        assert!(admin_t.effective_session == LdapSession::UnixBind(UUID_ADMIN));
+        assert_eq!(admin_t.effective_session, LdapSession::UnixBind(UUID_ADMIN));
 
         // Bad password, check last to prevent softlocking of the admin account.
         assert!(ldaps
@@ -1120,7 +1123,10 @@ mod tests {
 
         // Setup the anonymous login
         let anon_t = ldaps.do_bind(idms, "", "").await.unwrap().unwrap();
-        assert!(anon_t.effective_session == LdapSession::UnixBind(UUID_ANONYMOUS));
+        assert_eq!(
+            anon_t.effective_session,
+            LdapSession::UnixBind(UUID_ANONYMOUS)
+        );
 
         // Searches under application base DN must show same content
         let sr = SearchRequest {
@@ -1149,7 +1155,7 @@ mod tests {
             .await
             .unwrap();
         assert!(!r1.is_empty());
-        assert!(r1.len() == r2.len());
+        assert_eq!(r1.len(), r2.len());
     }
 
     #[idm_test]
@@ -1606,7 +1612,7 @@ mod tests {
             .application_auth_ldap(&lae, time_low)
             .await
             .expect_err("Authentication succeeded");
-        assert!(r1 == OperationError::SessionExpired);
+        assert_eq!(r1, OperationError::SessionExpired);
 
         let r1 = idms_auth
             .application_auth_ldap(&lae, time)
@@ -1618,7 +1624,7 @@ mod tests {
             .application_auth_ldap(&lae, time_high)
             .await
             .expect_err("Authentication succeeded");
-        assert!(r1 == OperationError::SessionExpired);
+        assert_eq!(r1, OperationError::SessionExpired);
     }
 
     macro_rules! assert_entry_contains {
@@ -1688,7 +1694,10 @@ mod tests {
 
         // Setup the anonymous login.
         let anon_t = ldaps.do_bind(idms, "", "").await.unwrap().unwrap();
-        assert!(anon_t.effective_session == LdapSession::UnixBind(UUID_ANONYMOUS));
+        assert_eq!(
+            anon_t.effective_session,
+            LdapSession::UnixBind(UUID_ANONYMOUS)
+        );
 
         // Check that when we request *, we get default list.
         let sr = SearchRequest {
@@ -1704,7 +1713,7 @@ mod tests {
             .unwrap();
 
         // The result, and the ldap proto success msg.
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -1739,7 +1748,7 @@ mod tests {
             .unwrap();
 
         // The result, and the ldap proto success msg.
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -1786,7 +1795,7 @@ mod tests {
             .unwrap();
 
         // The result, and the ldap proto success msg.
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -1912,13 +1921,16 @@ mod tests {
 
         // Bind with anonymous, search and show mail attr isn't accessible.
         let anon_lbt = ldaps.do_bind(idms, "", "").await.unwrap().unwrap();
-        assert!(anon_lbt.effective_session == LdapSession::UnixBind(UUID_ANONYMOUS));
+        assert_eq!(
+            anon_lbt.effective_session,
+            LdapSession::UnixBind(UUID_ANONYMOUS)
+        );
 
         let r1 = ldaps
             .do_search(idms, &sr, &anon_lbt, Source::Internal)
             .await
             .unwrap();
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -1945,7 +1957,10 @@ mod tests {
             .await
             .unwrap()
             .unwrap();
-        assert!(sa_lbt.effective_session == LdapSession::ApiToken(apitoken_inner.clone()));
+        assert_eq!(
+            sa_lbt.effective_session,
+            LdapSession::ApiToken(apitoken_inner.clone())
+        );
 
         // Bind using the token as a pw
         let sa_lbt = ldaps
@@ -1953,14 +1968,17 @@ mod tests {
             .await
             .unwrap()
             .unwrap();
-        assert!(sa_lbt.effective_session == LdapSession::ApiToken(apitoken_inner));
+        assert_eq!(
+            sa_lbt.effective_session,
+            LdapSession::ApiToken(apitoken_inner)
+        );
 
         // Search and retrieve mail that's now accessible.
         let r1 = ldaps
             .do_search(idms, &sr, &sa_lbt, Source::Internal)
             .await
             .unwrap();
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -2020,7 +2038,7 @@ mod tests {
             .await
             .unwrap();
 
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -2073,7 +2091,10 @@ mod tests {
 
         // Setup the anonymous login.
         let anon_t = ldaps.do_bind(idms, "", "").await.unwrap().unwrap();
-        assert!(anon_t.effective_session == LdapSession::UnixBind(UUID_ANONYMOUS));
+        assert_eq!(
+            anon_t.effective_session,
+            LdapSession::UnixBind(UUID_ANONYMOUS)
+        );
 
         // Check that when we request a virtual attr by name *and* all_attrs we get all the requested values.
         let sr = SearchRequest {
@@ -2095,7 +2116,7 @@ mod tests {
             .unwrap();
 
         // The result, and the ldap proto success msg.
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -2142,7 +2163,10 @@ mod tests {
 
         // Setup the anonymous login.
         let anon_t = ldaps.do_bind(idms, "", "").await.unwrap().unwrap();
-        assert!(anon_t.effective_session == LdapSession::UnixBind(UUID_ANONYMOUS));
+        assert_eq!(
+            anon_t.effective_session,
+            LdapSession::UnixBind(UUID_ANONYMOUS)
+        );
 
         // If we request only 1.1, we get no attributes.
         let sr = SearchRequest {
@@ -2158,7 +2182,7 @@ mod tests {
             .unwrap();
 
         // The result, and the ldap proto success msg.
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_eq!(
@@ -2188,7 +2212,7 @@ mod tests {
             .unwrap();
 
         // The result, and the ldap proto success msg.
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -2209,7 +2233,10 @@ mod tests {
         let ldaps = LdapServer::new(idms).await.expect("failed to start ldap");
 
         let anon_t = ldaps.do_bind(idms, "", "").await.unwrap().unwrap();
-        assert!(anon_t.effective_session == LdapSession::UnixBind(UUID_ANONYMOUS));
+        assert_eq!(
+            anon_t.effective_session,
+            LdapSession::UnixBind(UUID_ANONYMOUS)
+        );
 
         let sr = SearchRequest {
             msgid: 1,
@@ -2226,7 +2253,7 @@ mod tests {
         trace!(?r1);
 
         // The result, and the ldap proto success msg.
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -2262,7 +2289,10 @@ mod tests {
         let ldaps = LdapServer::new(idms).await.expect("failed to start ldap");
 
         let anon_t = ldaps.do_bind(idms, "", "").await.unwrap().unwrap();
-        assert!(anon_t.effective_session == LdapSession::UnixBind(UUID_ANONYMOUS));
+        assert_eq!(
+            anon_t.effective_session,
+            LdapSession::UnixBind(UUID_ANONYMOUS)
+        );
 
         let sr = SearchRequest {
             msgid: 1,
@@ -2279,7 +2309,7 @@ mod tests {
         trace!(?r1);
 
         // The result, and the ldap proto success msg.
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -2324,7 +2354,10 @@ mod tests {
 
         // Setup the anonymous login.
         let anon_t = ldaps.do_bind(idms, "", "").await.unwrap().unwrap();
-        assert!(anon_t.effective_session == LdapSession::UnixBind(UUID_ANONYMOUS));
+        assert_eq!(
+            anon_t.effective_session,
+            LdapSession::UnixBind(UUID_ANONYMOUS)
+        );
 
         // SSSD tries to just search for silly attrs all the time. We ignore them.
         let sr = SearchRequest {
@@ -2356,7 +2389,7 @@ mod tests {
             .unwrap();
 
         // Empty results and ldap proto success msg.
-        assert!(r1.len() == 1);
+        assert_eq!(r1.len(), 1);
 
         // Second search
 
@@ -2382,7 +2415,7 @@ mod tests {
         trace!(?r1);
 
         // The result, and the ldap proto success msg.
-        assert!(r1.len() == 2);
+        assert_eq!(r1.len(), 2);
         match &r1[0].op {
             LdapOp::SearchResultEntry(lsre) => {
                 assert_entry_contains!(
@@ -2432,11 +2465,14 @@ mod tests {
 
         // Setup the anonymous login.
         let anon_t = ldaps.do_bind(idms, "", "").await.unwrap().unwrap();
-        assert!(anon_t.effective_session == LdapSession::UnixBind(UUID_ANONYMOUS));
+        assert_eq!(
+            anon_t.effective_session,
+            LdapSession::UnixBind(UUID_ANONYMOUS)
+        );
 
         #[track_caller]
         fn assert_compare_result(r: &[LdapMsg], code: &LdapResultCode) {
-            assert!(r.len() == 1);
+            assert_eq!(r.len(), 1);
             match &r[0].op {
                 LdapOp::CompareResult(lcr) => {
                     assert_eq!(&lcr.code, code);
diff --git a/server/lib/src/idm/oauth2.rs b/server/lib/src/idm/oauth2.rs
index e48140e63..72c87919d 100644
--- a/server/lib/src/idm/oauth2.rs
+++ b/server/lib/src/idm/oauth2.rs
@@ -34,8 +34,8 @@ pub use kanidm_proto::oauth2::{
     OidcDiscoveryResponse, PkceAlg, TokenRevokeRequest,
 };
 use kanidm_proto::oauth2::{
-    ClaimType, DisplayValue, GrantType, IdTokenSignAlg, ResponseMode, ResponseType, SubjectType,
-    TokenEndpointAuthMethod,
+    AccessTokenType, ClaimType, DisplayValue, GrantType, IdTokenSignAlg, ResponseMode,
+    ResponseType, SubjectType, TokenEndpointAuthMethod,
 };
 use openssl::sha;
 use serde::{Deserialize, Serialize};
@@ -1364,7 +1364,7 @@ impl<'a> IdmServerProxyWriteTransaction<'a> {
 
         Ok(AccessTokenResponse {
             access_token,
-            token_type: "Bearer".to_string(),
+            token_type: AccessTokenType::Bearer,
             expires_in,
             refresh_token: None,
             scope,
@@ -1572,7 +1572,7 @@ impl<'a> IdmServerProxyWriteTransaction<'a> {
 
         Ok(AccessTokenResponse {
             access_token: access_token.to_string(),
-            token_type: "Bearer".to_string(),
+            token_type: AccessTokenType::Bearer,
             expires_in,
             refresh_token: Some(refresh_token),
             scope,
@@ -2135,7 +2135,7 @@ impl<'a> IdmServerProxyReadTransaction<'a> {
                 Some(account.spn.clone())
             };
 
-            let token_type = Some("access_token".to_string());
+            let token_type = Some(AccessTokenType::Bearer);
             Ok(AccessTokenIntrospectResponse {
                 active: true,
                 scope,
@@ -2199,7 +2199,7 @@ impl<'a> IdmServerProxyReadTransaction<'a> {
                         Some(str_join(&scopes))
                     };
 
-                    let token_type = Some("access_token".to_string());
+                    let token_type = Some(AccessTokenType::Bearer);
 
                     let username = if prefer_short_username {
                         entry
@@ -3125,7 +3125,7 @@ mod tests {
             .expect("Failed to perform OAuth2 permit");
 
         // Check we are reflecting the CSRF properly.
-        assert!(permit_success.state == "123");
+        assert_eq!(permit_success.state, "123");
 
         // == Submit the token exchange code.
 
@@ -3145,7 +3145,7 @@ mod tests {
             .expect("Failed to perform OAuth2 token exchange");
 
         // 🎉 We got a token! In the future we can then check introspection from this point.
-        assert!(token_response.token_type == "Bearer");
+        assert_eq!(token_response.token_type, AccessTokenType::Bearer);
 
         assert!(idms_prox_write.commit().is_ok());
     }
@@ -3187,7 +3187,7 @@ mod tests {
             .expect("Failed to perform OAuth2 permit");
 
         // Check we are reflecting the CSRF properly.
-        assert!(permit_success.state == "123");
+        assert_eq!(permit_success.state, "123");
 
         // == Submit the token exchange code.
 
@@ -3207,7 +3207,7 @@ mod tests {
             .expect("Failed to perform OAuth2 token exchange");
 
         // 🎉 We got a token! In the future we can then check introspection from this point.
-        assert!(token_response.token_type == "Bearer");
+        assert_eq!(token_response.token_type, AccessTokenType::Bearer);
 
         assert!(idms_prox_write.commit().is_ok());
     }
@@ -3701,7 +3701,7 @@ mod tests {
             .expect("Failed to perform OAuth2 permit");
 
         // Check we are reflecting the CSRF properly.
-        assert!(permit_success.state == "123");
+        assert_eq!(permit_success.state, "123");
 
         // == Submit the token exchange code.
         // ⚠️  This is where we submit a different origin!
@@ -3721,7 +3721,7 @@ mod tests {
             .expect("Failed to perform OAuth2 token exchange");
 
         // 🎉 We got a token! In the future we can then check introspection from this point.
-        assert!(token_response.token_type == "Bearer");
+        assert_eq!(token_response.token_type, AccessTokenType::Bearer);
 
         assert!(idms_prox_write.commit().is_ok());
 
@@ -3762,7 +3762,7 @@ mod tests {
 
         // == Manually submit the consent token to the permit for the permit_success
         // Check we are reflecting the CSRF properly.
-        assert!(permit_success.state == "123");
+        assert_eq!(permit_success.state, "123");
 
         // == Submit the token exchange code.
         // ⚠️  This is where we submit a different origin!
@@ -3785,7 +3785,7 @@ mod tests {
             .expect("Failed to perform OAuth2 token exchange");
 
         // 🎉 We got a token! In the future we can then check introspection from this point.
-        assert!(token_response.token_type == "Bearer");
+        assert_eq!(token_response.token_type, AccessTokenType::Bearer);
     }
 
     #[idm_test]
@@ -3847,12 +3847,18 @@ mod tests {
 
         eprintln!("👉  {intr_response:?}");
         assert!(intr_response.active);
-        assert!(intr_response.scope.as_deref() == Some("openid supplement"));
-        assert!(intr_response.client_id.as_deref() == Some("test_resource_server"));
-        assert!(intr_response.username.as_deref() == Some("testperson1@example.com"));
-        assert!(intr_response.token_type.as_deref() == Some("access_token"));
-        assert!(intr_response.iat == Some(ct.as_secs() as i64));
-        assert!(intr_response.nbf == Some(ct.as_secs() as i64));
+        assert_eq!(intr_response.scope.as_deref(), Some("openid supplement"));
+        assert_eq!(
+            intr_response.client_id.as_deref(),
+            Some("test_resource_server")
+        );
+        assert_eq!(
+            intr_response.username.as_deref(),
+            Some("testperson1@example.com")
+        );
+        assert_eq!(intr_response.token_type, Some(AccessTokenType::Bearer));
+        assert_eq!(intr_response.iat, Some(ct.as_secs() as i64));
+        assert_eq!(intr_response.nbf, Some(ct.as_secs() as i64));
 
         drop(idms_prox_read);
         // start a write,
@@ -4195,7 +4201,7 @@ mod tests {
             .check_oauth2_authorise_reject(&ident, &consent_token, ct)
             .expect("Failed to perform OAuth2 reject");
 
-        assert!(reject_success == redirect_uri);
+        assert_eq!(reject_success, redirect_uri);
 
         // Too much time past to reject
         let past_ct = Duration::from_secs(TEST_CURRENT_TIME + 301);
@@ -4282,9 +4288,15 @@ mod tests {
                 ])
         );
 
-        assert!(discovery.response_types_supported == vec![ResponseType::Code]);
-        assert!(discovery.response_modes_supported == vec![ResponseMode::Query]);
-        assert!(discovery.grant_types_supported == vec![GrantType::AuthorisationCode]);
+        assert_eq!(discovery.response_types_supported, vec![ResponseType::Code]);
+        assert_eq!(
+            discovery.response_modes_supported,
+            vec![ResponseMode::Query]
+        );
+        assert_eq!(
+            discovery.grant_types_supported,
+            vec![GrantType::AuthorisationCode]
+        );
         assert!(
             discovery.token_endpoint_auth_methods_supported
                 == vec![
@@ -4376,7 +4388,7 @@ mod tests {
                     (JwaAlg::ES256, IdTokenSignAlg::ES256) => {}
                     _ => panic!(),
                 };
-                assert!(use_.unwrap() == JwkUse::Sig);
+                assert_eq!(use_.unwrap(), JwkUse::Sig);
                 assert!(kid.is_some())
             }
             _ => panic!(),
@@ -4424,11 +4436,20 @@ mod tests {
                 ])
         );
 
-        assert!(discovery.response_types_supported == vec![ResponseType::Code]);
-        assert!(discovery.response_modes_supported == vec![ResponseMode::Query]);
-        assert!(discovery.grant_types_supported == vec![GrantType::AuthorisationCode]);
-        assert!(discovery.subject_types_supported == vec![SubjectType::Public]);
-        assert!(discovery.id_token_signing_alg_values_supported == vec![IdTokenSignAlg::ES256]);
+        assert_eq!(discovery.response_types_supported, vec![ResponseType::Code]);
+        assert_eq!(
+            discovery.response_modes_supported,
+            vec![ResponseMode::Query]
+        );
+        assert_eq!(
+            discovery.grant_types_supported,
+            vec![GrantType::AuthorisationCode]
+        );
+        assert_eq!(discovery.subject_types_supported, vec![SubjectType::Public]);
+        assert_eq!(
+            discovery.id_token_signing_alg_values_supported,
+            vec![IdTokenSignAlg::ES256]
+        );
         assert!(discovery.userinfo_signing_alg_values_supported.is_none());
         assert!(
             discovery.token_endpoint_auth_methods_supported
@@ -4437,8 +4458,11 @@ mod tests {
                     TokenEndpointAuthMethod::ClientSecretPost
                 ]
         );
-        assert!(discovery.display_values_supported == Some(vec![DisplayValue::Page]));
-        assert!(discovery.claim_types_supported == vec![ClaimType::Normal]);
+        assert_eq!(
+            discovery.display_values_supported,
+            Some(vec![DisplayValue::Page])
+        );
+        assert_eq!(discovery.claim_types_supported, vec![ClaimType::Normal]);
         assert!(discovery.claims_supported.is_none());
         assert!(discovery.service_documentation.is_some());
 
@@ -4522,7 +4546,7 @@ mod tests {
             .expect("Failed to perform OAuth2 token exchange");
 
         // 🎉 We got a token!
-        assert!(token_response.token_type == "Bearer");
+        assert_eq!(token_response.token_type, AccessTokenType::Bearer);
 
         let id_token = token_response.id_token.expect("No id_token in response!");
 
@@ -4566,22 +4590,25 @@ mod tests {
                 == Url::parse("https://idm.example.com/oauth2/openid/test_resource_server")
                     .unwrap()
         );
-        assert!(oidc.sub == OidcSubject::U(UUID_TESTPERSON_1));
-        assert!(oidc.aud == "test_resource_server");
-        assert!(oidc.iat == iat);
-        assert!(oidc.nbf == Some(iat));
+        assert_eq!(oidc.sub, OidcSubject::U(UUID_TESTPERSON_1));
+        assert_eq!(oidc.aud, "test_resource_server");
+        assert_eq!(oidc.iat, iat);
+        assert_eq!(oidc.nbf, Some(iat));
         // Previously this was the auth session but it's now inline with the access token expiry.
-        assert!(oidc.exp == iat + (OAUTH2_ACCESS_TOKEN_EXPIRY as i64));
+        assert_eq!(oidc.exp, iat + (OAUTH2_ACCESS_TOKEN_EXPIRY as i64));
         assert!(oidc.auth_time.is_none());
         // Is nonce correctly passed through?
-        assert!(oidc.nonce == Some("abcdef".to_string()));
+        assert_eq!(oidc.nonce, Some("abcdef".to_string()));
         assert!(oidc.at_hash.is_none());
         assert!(oidc.acr.is_none());
         assert!(oidc.amr.is_none());
-        assert!(oidc.azp == Some("test_resource_server".to_string()));
+        assert_eq!(oidc.azp, Some("test_resource_server".to_string()));
         assert!(oidc.jti.is_none());
-        assert!(oidc.s_claims.name == Some("Test Person 1".to_string()));
-        assert!(oidc.s_claims.preferred_username == Some("testperson1@example.com".to_string()));
+        assert_eq!(oidc.s_claims.name, Some("Test Person 1".to_string()));
+        assert_eq!(
+            oidc.s_claims.preferred_username,
+            Some("testperson1@example.com".to_string())
+        );
         assert!(
             oidc.s_claims.scopes == vec![OAUTH2_SCOPE_OPENID.to_string(), "supplement".to_string()]
         );
@@ -4592,20 +4619,20 @@ mod tests {
             .oauth2_openid_userinfo("test_resource_server", access_token, ct)
             .expect("failed to get userinfo");
 
-        assert!(oidc.iss == userinfo.iss);
-        assert!(oidc.sub == userinfo.sub);
-        assert!(oidc.aud == userinfo.aud);
-        assert!(oidc.iat == userinfo.iat);
-        assert!(oidc.nbf == userinfo.nbf);
-        assert!(oidc.exp == userinfo.exp);
+        assert_eq!(oidc.iss, userinfo.iss);
+        assert_eq!(oidc.sub, userinfo.sub);
+        assert_eq!(oidc.aud, userinfo.aud);
+        assert_eq!(oidc.iat, userinfo.iat);
+        assert_eq!(oidc.nbf, userinfo.nbf);
+        assert_eq!(oidc.exp, userinfo.exp);
         assert!(userinfo.auth_time.is_none());
-        assert!(userinfo.nonce == Some("abcdef".to_string()));
+        assert_eq!(userinfo.nonce, Some("abcdef".to_string()));
         assert!(userinfo.at_hash.is_none());
         assert!(userinfo.acr.is_none());
-        assert!(oidc.amr == userinfo.amr);
-        assert!(oidc.azp == userinfo.azp);
+        assert_eq!(oidc.amr, userinfo.amr);
+        assert_eq!(oidc.azp, userinfo.azp);
         assert!(userinfo.jti.is_none());
-        assert!(oidc.s_claims == userinfo.s_claims);
+        assert_eq!(oidc.s_claims, userinfo.s_claims);
         assert!(userinfo.claims.is_empty());
 
         drop(idms_prox_read);
@@ -4637,20 +4664,20 @@ mod tests {
             .oauth2_openid_userinfo("test_resource_server", access_token, ct)
             .expect("failed to get userinfo");
 
-        assert!(oidc.iss == userinfo.iss);
-        assert!(oidc.sub == userinfo.sub);
-        assert!(oidc.aud == userinfo.aud);
-        assert!(oidc.iat == userinfo.iat);
-        assert!(oidc.nbf == userinfo.nbf);
-        assert!(oidc.exp == userinfo.exp);
+        assert_eq!(oidc.iss, userinfo.iss);
+        assert_eq!(oidc.sub, userinfo.sub);
+        assert_eq!(oidc.aud, userinfo.aud);
+        assert_eq!(oidc.iat, userinfo.iat);
+        assert_eq!(oidc.nbf, userinfo.nbf);
+        assert_eq!(oidc.exp, userinfo.exp);
         assert!(userinfo.auth_time.is_none());
-        assert!(userinfo.nonce == Some("abcdef".to_string()));
+        assert_eq!(userinfo.nonce, Some("abcdef".to_string()));
         assert!(userinfo.at_hash.is_none());
         assert!(userinfo.acr.is_none());
-        assert!(oidc.amr == userinfo.amr);
-        assert!(oidc.azp == userinfo.azp);
+        assert_eq!(oidc.amr, userinfo.amr);
+        assert_eq!(oidc.azp, userinfo.azp);
         assert!(userinfo.jti.is_none());
-        assert!(oidc.s_claims == userinfo.s_claims);
+        assert_eq!(oidc.s_claims, userinfo.s_claims);
         assert!(userinfo.claims.is_empty());
     }
 
@@ -4730,13 +4757,16 @@ mod tests {
             .expect("Failed to verify oidc");
 
         // Do we have the short username in the token claims?
-        assert!(oidc.s_claims.preferred_username == Some("testperson1".to_string()));
+        assert_eq!(
+            oidc.s_claims.preferred_username,
+            Some("testperson1".to_string())
+        );
         // Do the id_token details line up to the userinfo?
         let userinfo = idms_prox_read
             .oauth2_openid_userinfo("test_resource_server", access_token, ct)
             .expect("failed to get userinfo");
 
-        assert!(oidc.s_claims == userinfo.s_claims);
+        assert_eq!(oidc.s_claims, userinfo.s_claims);
     }
 
     #[idm_test]
@@ -4831,7 +4861,7 @@ mod tests {
             .expect("failed to get userinfo");
 
         // does the userinfo endpoint provide the same groups?
-        assert!(oidc.claims.get("groups") == userinfo.claims.get("groups"));
+        assert_eq!(oidc.claims.get("groups"), userinfo.claims.get("groups"));
     }
 
     //  Check insecure pkce behaviour.
@@ -4904,7 +4934,7 @@ mod tests {
                     (JwaAlg::RS256, IdTokenSignAlg::RS256) => {}
                     _ => panic!(),
                 };
-                assert!(use_.unwrap() == JwkUse::Sig);
+                assert_eq!(use_.unwrap(), JwkUse::Sig);
                 assert!(kid.is_some());
             }
             _ => panic!(),
@@ -4950,7 +4980,7 @@ mod tests {
             .expect("Failed to perform OAuth2 token exchange");
 
         // 🎉 We got a token!
-        assert!(token_response.token_type == "Bearer");
+        assert_eq!(token_response.token_type, AccessTokenType::Bearer);
         let id_token = token_response.id_token.expect("No id_token in response!");
 
         let jws_validator =
@@ -4967,7 +4997,7 @@ mod tests {
             .verify_exp(iat)
             .expect("Failed to verify oidc");
 
-        assert!(oidc.sub == OidcSubject::U(UUID_TESTPERSON_1));
+        assert_eq!(oidc.sub, OidcSubject::U(UUID_TESTPERSON_1));
 
         assert!(idms_prox_write.commit().is_ok());
     }
@@ -5587,7 +5617,7 @@ mod tests {
             .check_oauth2_token_exchange(&client_authz, &token_req, ct)
             .unwrap_err();
 
-        assert!(access_token_response_4 == Oauth2Error::InvalidGrant);
+        assert_eq!(access_token_response_4, Oauth2Error::InvalidGrant);
 
         assert!(idms_prox_write.commit().is_ok());
     }
@@ -5637,7 +5667,7 @@ mod tests {
             // Should be unable to exchange.
             .unwrap_err();
 
-        assert!(access_token_response_2 == Oauth2Error::InvalidGrant);
+        assert_eq!(access_token_response_2, Oauth2Error::InvalidGrant);
 
         assert!(idms_prox_write.commit().is_ok());
     }
@@ -5676,7 +5706,7 @@ mod tests {
             .check_oauth2_token_exchange(&bad_client_authz, &token_req, ct)
             .unwrap_err();
 
-        assert!(access_token_response_2 == Oauth2Error::AuthenticationRequired);
+        assert_eq!(access_token_response_2, Oauth2Error::AuthenticationRequired);
 
         assert!(idms_prox_write.commit().is_ok());
     }
@@ -5713,7 +5743,7 @@ mod tests {
             .check_oauth2_token_exchange(&client_authz, &token_req, ct)
             .unwrap_err();
 
-        assert!(access_token_response_2 == Oauth2Error::InvalidScope);
+        assert_eq!(access_token_response_2, Oauth2Error::InvalidScope);
 
         assert!(idms_prox_write.commit().is_ok());
     }
@@ -5775,7 +5805,7 @@ mod tests {
             .check_oauth2_token_exchange(&client_authz, &token_req, ct)
             .unwrap_err();
 
-        assert!(access_token_response_3 == Oauth2Error::InvalidGrant);
+        assert_eq!(access_token_response_3, Oauth2Error::InvalidGrant);
 
         let entry = idms_prox_write
             .qs_write
@@ -6145,7 +6175,7 @@ mod tests {
             .expect("Failed to perform OAuth2 token exchange");
 
         // 🎉 We got a token!
-        assert!(token_response.token_type == "Bearer");
+        assert_eq!(token_response.token_type, AccessTokenType::Bearer);
 
         let id_token = token_response.id_token.expect("No id_token in response!");
         let access_token =
@@ -6182,22 +6212,25 @@ mod tests {
                 == Url::parse("https://idm.example.com/oauth2/openid/test_resource_server")
                     .unwrap()
         );
-        assert!(oidc.sub == OidcSubject::U(UUID_TESTPERSON_1));
-        assert!(oidc.aud == "test_resource_server");
-        assert!(oidc.iat == iat);
-        assert!(oidc.nbf == Some(iat));
+        assert_eq!(oidc.sub, OidcSubject::U(UUID_TESTPERSON_1));
+        assert_eq!(oidc.aud, "test_resource_server");
+        assert_eq!(oidc.iat, iat);
+        assert_eq!(oidc.nbf, Some(iat));
         // Previously this was the auth session but it's now inline with the access token expiry.
-        assert!(oidc.exp == iat + (OAUTH2_ACCESS_TOKEN_EXPIRY as i64));
+        assert_eq!(oidc.exp, iat + (OAUTH2_ACCESS_TOKEN_EXPIRY as i64));
         assert!(oidc.auth_time.is_none());
         // Is nonce correctly passed through?
-        assert!(oidc.nonce == Some("abcdef".to_string()));
+        assert_eq!(oidc.nonce, Some("abcdef".to_string()));
         assert!(oidc.at_hash.is_none());
         assert!(oidc.acr.is_none());
         assert!(oidc.amr.is_none());
-        assert!(oidc.azp == Some("test_resource_server".to_string()));
+        assert_eq!(oidc.azp, Some("test_resource_server".to_string()));
         assert!(oidc.jti.is_none());
-        assert!(oidc.s_claims.name == Some("Test Person 1".to_string()));
-        assert!(oidc.s_claims.preferred_username == Some("testperson1@example.com".to_string()));
+        assert_eq!(oidc.s_claims.name, Some("Test Person 1".to_string()));
+        assert_eq!(
+            oidc.s_claims.preferred_username,
+            Some("testperson1@example.com".to_string())
+        );
         assert!(
             oidc.s_claims.scopes == vec![OAUTH2_SCOPE_OPENID.to_string(), "supplement".to_string()]
         );
@@ -6217,20 +6250,20 @@ mod tests {
             .oauth2_openid_userinfo("test_resource_server", access_token, ct)
             .expect("failed to get userinfo");
 
-        assert!(oidc.iss == userinfo.iss);
-        assert!(oidc.sub == userinfo.sub);
-        assert!(oidc.aud == userinfo.aud);
-        assert!(oidc.iat == userinfo.iat);
-        assert!(oidc.nbf == userinfo.nbf);
-        assert!(oidc.exp == userinfo.exp);
+        assert_eq!(oidc.iss, userinfo.iss);
+        assert_eq!(oidc.sub, userinfo.sub);
+        assert_eq!(oidc.aud, userinfo.aud);
+        assert_eq!(oidc.iat, userinfo.iat);
+        assert_eq!(oidc.nbf, userinfo.nbf);
+        assert_eq!(oidc.exp, userinfo.exp);
         assert!(userinfo.auth_time.is_none());
-        assert!(userinfo.nonce == Some("abcdef".to_string()));
+        assert_eq!(userinfo.nonce, Some("abcdef".to_string()));
         assert!(userinfo.at_hash.is_none());
         assert!(userinfo.acr.is_none());
-        assert!(oidc.amr == userinfo.amr);
-        assert!(oidc.azp == userinfo.azp);
+        assert_eq!(oidc.amr, userinfo.amr);
+        assert_eq!(oidc.azp, userinfo.azp);
         assert!(userinfo.jti.is_none());
-        assert!(oidc.s_claims == userinfo.s_claims);
+        assert_eq!(oidc.s_claims, userinfo.s_claims);
         assert_eq!(oidc.claims, userinfo.claims);
 
         // Check the oauth2 introspect bits.
@@ -6244,12 +6277,18 @@ mod tests {
 
         eprintln!("👉  {intr_response:?}");
         assert!(intr_response.active);
-        assert!(intr_response.scope.as_deref() == Some("openid supplement"));
-        assert!(intr_response.client_id.as_deref() == Some("test_resource_server"));
-        assert!(intr_response.username.as_deref() == Some("testperson1@example.com"));
-        assert!(intr_response.token_type.as_deref() == Some("access_token"));
-        assert!(intr_response.iat == Some(ct.as_secs() as i64));
-        assert!(intr_response.nbf == Some(ct.as_secs() as i64));
+        assert_eq!(intr_response.scope.as_deref(), Some("openid supplement"));
+        assert_eq!(
+            intr_response.client_id.as_deref(),
+            Some("test_resource_server")
+        );
+        assert_eq!(
+            intr_response.username.as_deref(),
+            Some("testperson1@example.com")
+        );
+        assert_eq!(intr_response.token_type, Some(AccessTokenType::Bearer));
+        assert_eq!(intr_response.iat, Some(ct.as_secs() as i64));
+        assert_eq!(intr_response.nbf, Some(ct.as_secs() as i64));
         // Introspect doesn't have custom claims.
 
         drop(idms_prox_read);
@@ -6318,7 +6357,7 @@ mod tests {
             .expect("Failed to perform OAuth2 permit");
 
         // Check we are reflecting the CSRF properly.
-        assert!(permit_success.state == "123");
+        assert_eq!(permit_success.state, "123");
 
         // == Submit the token exchange code.
         let token_req = AccessTokenRequest {
@@ -6337,7 +6376,7 @@ mod tests {
             .expect("Failed to perform OAuth2 token exchange");
 
         // 🎉 We got a token! In the future we can then check introspection from this point.
-        assert!(token_response.token_type == "Bearer");
+        assert_eq!(token_response.token_type, AccessTokenType::Bearer);
 
         assert!(idms_prox_write.commit().is_ok());
     }
@@ -6368,7 +6407,7 @@ mod tests {
         assert!(idms_prox_write.commit().is_ok());
 
         // 🎉 We got a token! In the future we can then check introspection from this point.
-        assert!(oauth2_token.token_type == "Bearer");
+        assert_eq!(oauth2_token.token_type, AccessTokenType::Bearer);
 
         // Check Oauth2 Token Introspection
         let mut idms_prox_read = idms.proxy_read().await.unwrap();
@@ -6392,7 +6431,7 @@ mod tests {
             intr_response.username.as_deref(),
             Some("test_resource_server@example.com")
         );
-        assert_eq!(intr_response.token_type.as_deref(), Some("access_token"));
+        assert_eq!(intr_response.token_type, Some(AccessTokenType::Bearer));
         assert_eq!(intr_response.iat, Some(ct.as_secs() as i64));
         assert_eq!(intr_response.nbf, Some(ct.as_secs() as i64));
 
diff --git a/server/lib/src/idm/scim.rs b/server/lib/src/idm/scim.rs
index 1d22be5a8..1b001b40b 100644
--- a/server/lib/src/idm/scim.rs
+++ b/server/lib/src/idm/scim.rs
@@ -1583,7 +1583,7 @@ mod tests {
             .validate_sync_client_auth_info_to_ident(sync_token.into(), ct)
             .expect("Failed to validate sync token");
 
-        assert!(Some(sync_uuid) == ident.get_uuid());
+        assert_eq!(Some(sync_uuid), ident.get_uuid());
 
         let sync_state = idms_prox_read
             .scim_sync_get_state(&ident)
@@ -1638,7 +1638,7 @@ mod tests {
         let ident = idms_prox_read
             .validate_sync_client_auth_info_to_ident(sync_token.clone().into(), ct)
             .expect("Failed to validate sync token");
-        assert!(Some(sync_uuid) == ident.get_uuid());
+        assert_eq!(Some(sync_uuid), ident.get_uuid());
         drop(idms_prox_read);
 
         // -- Revoke the session
@@ -1833,7 +1833,7 @@ mod tests {
             synced_entry.get_ava_single_iutf8(Attribute::SyncExternalId)
                 == Some("dn=william,ou=people,dc=test")
         );
-        assert!(synced_entry.get_uuid() == user_sync_uuid);
+        assert_eq!(synced_entry.get_uuid(), user_sync_uuid);
 
         assert!(idms_prox_write.commit().is_ok());
     }
@@ -1959,7 +1959,7 @@ mod tests {
             .internal_search_uuid(user_sync_uuid)
             .expect("Unable to access entry");
 
-        assert!(ent.get_ava_single_iname(Attribute::Name) == Some("testgroup"));
+        assert_eq!(ent.get_ava_single_iname(Attribute::Name), Some("testgroup"));
         assert!(
             ent.get_ava_single_iutf8(Attribute::SyncExternalId)
                 == Some("cn=testgroup,ou=people,dc=test")
@@ -2156,7 +2156,7 @@ mod tests {
             )))
             // Should be none as the entry was masked by being recycled.
             .map(|entries| {
-                assert!(entries.len() == 1);
+                assert_eq!(entries.len(), 1);
                 let ent = entries.first().unwrap();
                 ent.mask_recycled_ts().is_none()
             })
@@ -2351,7 +2351,7 @@ mod tests {
             )))
             // Should be none as the entry was masked by being recycled.
             .map(|entries| {
-                assert!(entries.len() == 1);
+                assert_eq!(entries.len(), 1);
                 let ent = entries.first().unwrap();
                 ent.mask_recycled_ts().is_none()
             })
@@ -2435,7 +2435,7 @@ mod tests {
             )))
             // Should be none as the entry was masked by being recycled.
             .map(|entries| {
-                assert!(entries.len() == 1);
+                assert_eq!(entries.len(), 1);
                 let ent = entries.first().unwrap();
                 ent.mask_recycled_ts().is_none()
             })
@@ -2450,7 +2450,7 @@ mod tests {
             )))
             // Should be none as the entry was masked by being recycled.
             .map(|entries| {
-                assert!(entries.len() == 1);
+                assert_eq!(entries.len(), 1);
                 let ent = entries.first().unwrap();
                 ent.mask_recycled_ts().is_none()
             })
@@ -2518,7 +2518,7 @@ mod tests {
             .internal_search_uuid(sync_uuid_a)
             .expect("Unable to access entry");
 
-        assert!(ent.get_ava_single_iname(Attribute::Name) == Some("testgroup"));
+        assert_eq!(ent.get_ava_single_iname(Attribute::Name), Some("testgroup"));
 
         assert!(idms_prox_write.commit().is_ok());
     }
@@ -2627,7 +2627,10 @@ mod tests {
             testposix.get_ava_single_iutf8(Attribute::SyncExternalId)
                 == Some("cn=testposix,cn=groups,cn=accounts,dc=dev,dc=blackhats,dc=net,dc=au")
         );
-        assert!(testposix.get_ava_single_uint32(Attribute::GidNumber) == Some(1234567));
+        assert_eq!(
+            testposix.get_ava_single_uint32(Attribute::GidNumber),
+            Some(1234567)
+        );
 
         let testexternal = get_single_entry("testexternal", &mut idms_prox_write);
         assert!(
@@ -2643,9 +2646,18 @@ mod tests {
             testuser.get_ava_single_iutf8(Attribute::SyncExternalId)
                 == Some("uid=testuser,cn=users,cn=accounts,dc=dev,dc=blackhats,dc=net,dc=au")
         );
-        assert!(testuser.get_ava_single_uint32(Attribute::GidNumber) == Some(12345));
-        assert!(testuser.get_ava_single_utf8(Attribute::DisplayName) == Some("Test User"));
-        assert!(testuser.get_ava_single_iutf8(Attribute::LoginShell) == Some("/bin/sh"));
+        assert_eq!(
+            testuser.get_ava_single_uint32(Attribute::GidNumber),
+            Some(12345)
+        );
+        assert_eq!(
+            testuser.get_ava_single_utf8(Attribute::DisplayName),
+            Some("Test User")
+        );
+        assert_eq!(
+            testuser.get_ava_single_iutf8(Attribute::LoginShell),
+            Some("/bin/sh")
+        );
 
         let mut ssh_keyiter = testuser
             .get_ava_iter_sshpubkeys(Attribute::SshPublicKey)
@@ -2700,7 +2712,10 @@ mod tests {
             testposix.get_ava_single_iutf8(Attribute::SyncExternalId)
                 == Some("cn=testposix,cn=groups,cn=accounts,dc=dev,dc=blackhats,dc=net,dc=au")
         );
-        assert!(testposix.get_ava_single_uint32(Attribute::GidNumber) == Some(1234567));
+        assert_eq!(
+            testposix.get_ava_single_uint32(Attribute::GidNumber),
+            Some(1234567)
+        );
 
         let testexternal = get_single_entry("testexternal2", &mut idms_prox_write);
         info!("{:?}", testexternal);
@@ -2768,7 +2783,10 @@ mod tests {
             testposix.get_ava_single_iutf8(Attribute::SyncExternalId)
                 == Some("cn=testposix,cn=groups,cn=accounts,dc=dev,dc=blackhats,dc=net,dc=au")
         );
-        assert!(testposix.get_ava_single_uint32(Attribute::GidNumber) == Some(1234567));
+        assert_eq!(
+            testposix.get_ava_single_uint32(Attribute::GidNumber),
+            Some(1234567)
+        );
 
         let testexternal = get_single_entry("testexternal", &mut idms_prox_write);
         assert!(
@@ -2784,9 +2802,18 @@ mod tests {
             testuser.get_ava_single_iutf8(Attribute::SyncExternalId)
                 == Some("uid=testuser,cn=users,cn=accounts,dc=dev,dc=blackhats,dc=net,dc=au")
         );
-        assert!(testuser.get_ava_single_uint32(Attribute::GidNumber) == Some(12345));
-        assert!(testuser.get_ava_single_utf8(Attribute::DisplayName) == Some("Test User"));
-        assert!(testuser.get_ava_single_iutf8(Attribute::LoginShell) == Some("/bin/sh"));
+        assert_eq!(
+            testuser.get_ava_single_uint32(Attribute::GidNumber),
+            Some(12345)
+        );
+        assert_eq!(
+            testuser.get_ava_single_utf8(Attribute::DisplayName),
+            Some("Test User")
+        );
+        assert_eq!(
+            testuser.get_ava_single_iutf8(Attribute::LoginShell),
+            Some("/bin/sh")
+        );
 
         // Check memberof works.
         let testgroup_mb = testgroup
@@ -2844,9 +2871,18 @@ mod tests {
             testuser.get_ava_single_iutf8(Attribute::SyncExternalId)
                 == Some("uid=testuser,cn=users,cn=accounts,dc=dev,dc=blackhats,dc=net,dc=au")
         );
-        assert!(testuser.get_ava_single_uint32(Attribute::GidNumber) == Some(12345));
-        assert!(testuser.get_ava_single_utf8(Attribute::DisplayName) == Some("Test User"));
-        assert!(testuser.get_ava_single_iutf8(Attribute::LoginShell) == Some("/bin/sh"));
+        assert_eq!(
+            testuser.get_ava_single_uint32(Attribute::GidNumber),
+            Some(12345)
+        );
+        assert_eq!(
+            testuser.get_ava_single_utf8(Attribute::DisplayName),
+            Some("Test User")
+        );
+        assert_eq!(
+            testuser.get_ava_single_iutf8(Attribute::LoginShell),
+            Some("/bin/sh")
+        );
 
         // Check memberof works.
         let testgroup_mb = testgroup
diff --git a/server/lib/src/idm/server.rs b/server/lib/src/idm/server.rs
index 42b2f4adc..60fa0ebbf 100644
--- a/server/lib/src/idm/server.rs
+++ b/server/lib/src/idm/server.rs
@@ -2217,10 +2217,10 @@ mod tests {
                 match state {
                     AuthState::Choose(mut conts) => {
                         // Should only be one auth mech
-                        assert!(conts.len() == 1);
+                        assert_eq!(conts.len(), 1);
                         // And it should be anonymous
                         let m = conts.pop().expect("Should not fail");
-                        assert!(m == AuthMech::Anonymous);
+                        assert_eq!(m, AuthMech::Anonymous);
                     }
                     _ => {
                         error!("A critical error has occurred! We have a non-continue result!");
@@ -2263,8 +2263,8 @@ mod tests {
                 match state {
                     AuthState::Continue(allowed) => {
                         // Check the uat.
-                        assert!(allowed.len() == 1);
-                        assert!(allowed.first() == Some(&AuthAllowed::Anonymous));
+                        assert_eq!(allowed.len(), 1);
+                        assert_eq!(allowed.first(), Some(&AuthAllowed::Anonymous));
                     }
                     _ => {
                         error!("A critical error has occurred! We have a non-continue result!");
@@ -2662,7 +2662,7 @@ mod tests {
             .expect("Failed to generate radius auth token");
 
         // view the token?
-        assert!(r1 == tok_r.secret);
+        assert_eq!(r1, tok_r.secret);
     }
 
     #[idm_test]
@@ -2716,19 +2716,19 @@ mod tests {
             .get_unixgrouptoken(&ugte)
             .expect("Failed to generate unix group token");
 
-        assert!(tok_g.name == "testgroup");
-        assert!(tok_g.spn == "testgroup@example.com");
+        assert_eq!(tok_g.name, "testgroup");
+        assert_eq!(tok_g.spn, "testgroup@example.com");
 
         let uute = UnixUserTokenEvent::new_internal(UUID_ADMIN);
         let tok_r = idms_prox_read
             .get_unixusertoken(&uute, duration_from_epoch_now())
             .expect("Failed to generate unix user token");
 
-        assert!(tok_r.name == "admin");
-        assert!(tok_r.spn == "admin@example.com");
-        assert!(tok_r.groups.len() == 2);
-        assert!(tok_r.groups[0].name == "admin");
-        assert!(tok_r.groups[1].name == "testgroup");
+        assert_eq!(tok_r.name, "admin");
+        assert_eq!(tok_r.spn, "admin@example.com");
+        assert_eq!(tok_r.groups.len(), 2);
+        assert_eq!(tok_r.groups[0].name, "admin");
+        assert_eq!(tok_r.groups[1].name, "testgroup");
         assert!(tok_r.valid);
 
         // Show we can get the admin as a unix group token too
@@ -2740,8 +2740,8 @@ mod tests {
             .get_unixgrouptoken(&ugte)
             .expect("Failed to generate unix group token");
 
-        assert!(tok_g.name == "admin");
-        assert!(tok_g.spn == "admin@example.com");
+        assert_eq!(tok_g.name, "admin");
+        assert_eq!(tok_g.spn, "admin@example.com");
     }
 
     #[idm_test]
@@ -2871,7 +2871,7 @@ mod tests {
         // The second is the auth session record
         let da = idms_delayed.try_recv().expect("invalid");
         assert!(matches!(da, DelayedAction::AuthSessionRecord(_)));
-        assert!(Ok(true) == r);
+        assert_eq!(Ok(true), r);
 
         let mut idms_prox_read = idms.proxy_read().await.unwrap();
         let person_entry = idms_prox_read
@@ -3094,14 +3094,14 @@ mod tests {
             .get_unixusertoken(&uute, time_low)
             .expect("Failed to generate unix user token");
 
-        assert!(tok_r.name == "testperson1");
+        assert_eq!(tok_r.name, "testperson1");
         assert!(!tok_r.valid);
 
         let tok_r = idms_prox_read
             .get_unixusertoken(&uute, time_high)
             .expect("Failed to generate unix user token");
 
-        assert!(tok_r.name == "testperson1");
+        assert_eq!(tok_r.name, "testperson1");
         assert!(!tok_r.valid);
     }
 
@@ -3241,7 +3241,7 @@ mod tests {
 
         match state {
             AuthState::Denied(reason) => {
-                assert!(reason == "Account is temporarily locked");
+                assert_eq!(reason, "Account is temporarily locked");
             }
             _ => {
                 error!("Sessions was not denied (softlock)");
@@ -3393,7 +3393,7 @@ mod tests {
                 } = ar;
                 match state {
                     AuthState::Denied(reason) => {
-                        assert!(reason == "Account is temporarily locked");
+                        assert_eq!(reason, "Account is temporarily locked");
                     }
                     _ => {
                         error!("A critical error has occurred! We have a non-denied result!");
@@ -3480,7 +3480,7 @@ mod tests {
         assert!(matches!(da, DelayedAction::AuthSessionRecord(_)));
         // Persist it.
         let r = idms.delayed_action(ct, da).await;
-        assert!(Ok(true) == r);
+        assert_eq!(Ok(true), r);
         idms_delayed.check_is_empty_or_panic();
 
         let mut idms_prox_read = idms.proxy_read().await.unwrap();
@@ -3537,7 +3537,7 @@ mod tests {
         });
         // Persist it.
         let r = idms.delayed_action(ct, da).await;
-        assert!(Ok(true) == r);
+        assert_eq!(Ok(true), r);
 
         // Check it was written, and check
         let mut idms_prox_read = idms.proxy_read().await.unwrap();
@@ -3548,7 +3548,7 @@ mod tests {
         let sessions = admin
             .get_ava_as_session_map(Attribute::UserAuthTokenSession)
             .expect("Sessions must be present!");
-        assert!(sessions.len() == 1);
+        assert_eq!(sessions.len(), 1);
         let session_data_a = sessions.get(&session_a).expect("Session A is missing!");
         assert!(matches!(session_data_a.state, SessionState::ExpiresAt(_)));
 
@@ -3569,7 +3569,7 @@ mod tests {
         });
         // Persist it.
         let r = idms.delayed_action(expiry_a, da).await;
-        assert!(Ok(true) == r);
+        assert_eq!(Ok(true), r);
 
         let mut idms_prox_read = idms.proxy_read().await.unwrap();
         let admin = idms_prox_read
@@ -3580,7 +3580,7 @@ mod tests {
             .get_ava_as_session_map(Attribute::UserAuthTokenSession)
             .expect("Sessions must be present!");
         trace!(?sessions);
-        assert!(sessions.len() == 2);
+        assert_eq!(sessions.len(), 2);
 
         let session_data_a = sessions.get(&session_a).expect("Session A is missing!");
         assert!(matches!(session_data_a.state, SessionState::RevokedAt(_)));
@@ -3616,7 +3616,7 @@ mod tests {
         let da = idms_delayed.try_recv().expect("invalid");
         assert!(matches!(da, DelayedAction::AuthSessionRecord(_)));
         let r = idms.delayed_action(ct, da).await;
-        assert!(Ok(true) == r);
+        assert_eq!(Ok(true), r);
 
         let mut idms_prox_read = idms.proxy_read().await.unwrap();
 
@@ -3742,10 +3742,10 @@ mod tests {
                 match state {
                     AuthState::Choose(mut conts) => {
                         // Should only be one auth mech
-                        assert!(conts.len() == 1);
+                        assert_eq!(conts.len(), 1);
                         // And it should be anonymous
                         let m = conts.pop().expect("Should not fail");
-                        assert!(m == AuthMech::Anonymous);
+                        assert_eq!(m, AuthMech::Anonymous);
                     }
                     _ => {
                         error!("A critical error has occurred! We have a non-continue result!");
@@ -3781,8 +3781,8 @@ mod tests {
                 match state {
                     AuthState::Continue(allowed) => {
                         // Check the uat.
-                        assert!(allowed.len() == 1);
-                        assert!(allowed.first() == Some(&AuthAllowed::Anonymous));
+                        assert_eq!(allowed.len(), 1);
+                        assert_eq!(allowed.first(), Some(&AuthAllowed::Anonymous));
                     }
                     _ => {
                         error!("A critical error has occurred! We have a non-continue result!");
diff --git a/server/lib/src/idm/serviceaccount.rs b/server/lib/src/idm/serviceaccount.rs
index b915a8aa9..e6d1aac7b 100644
--- a/server/lib/src/idm/serviceaccount.rs
+++ b/server/lib/src/idm/serviceaccount.rs
@@ -475,7 +475,7 @@ mod tests {
             .validate_client_auth_info_to_ident(api_token.clone().into(), ct)
             .expect("Unable to verify api token.");
 
-        assert!(ident.get_uuid() == Some(testaccount_uuid));
+        assert_eq!(ident.get_uuid(), Some(testaccount_uuid));
 
         // Woohoo! Okay lets test the other edge cases.
 
@@ -499,7 +499,7 @@ mod tests {
         let ident = idms_prox_write
             .validate_client_auth_info_to_ident(api_token.clone().into(), ct)
             .expect("Unable to verify api token.");
-        assert!(ident.get_uuid() == Some(testaccount_uuid));
+        assert_eq!(ident.get_uuid(), Some(testaccount_uuid));
 
         // Past gracewindow?
         assert!(
diff --git a/server/lib/src/macros.rs b/server/lib/src/macros.rs
index dbda2595f..9af15f41a 100644
--- a/server/lib/src/macros.rs
+++ b/server/lib/src/macros.rs
@@ -98,7 +98,7 @@ macro_rules! run_create_test {
                 .unwrap();
             let r = qs_write.create(&ce);
             trace!("test result: {:?}", r);
-            assert!(r == $expect);
+            assert_eq!(r, $expect);
             $check(&mut qs_write);
             match r {
                 Ok(_) => {
@@ -117,7 +117,7 @@ macro_rules! run_create_test {
             .unwrap()
             .block_on(qs.verify());
         trace!("verification -> {:?}", ver);
-        assert!(ver.len() == 0);
+        assert_eq!(ver.len(), 0);
     }};
 }
 
@@ -172,7 +172,7 @@ macro_rules! run_modify_test {
             let r = qs_write.modify(&me);
             $check(&mut qs_write);
             trace!("test result: {:?}", r);
-            assert!(r == $expect);
+            assert_eq!(r, $expect);
             match r {
                 Ok(_) => {
                     qs_write.commit().expect("commit failure!");
@@ -190,7 +190,7 @@ macro_rules! run_modify_test {
             .unwrap()
             .block_on(qs.verify());
         trace!("verification -> {:?}", ver);
-        assert!(ver.len() == 0);
+        assert_eq!(ver.len(), 0);
     }};
 }
 
@@ -226,7 +226,7 @@ macro_rules! run_delete_test {
             let r = qs_write.delete(&de);
             trace!("test result: {:?}", r);
             $check(&mut qs_write);
-            assert!(r == $expect);
+            assert_eq!(r, $expect);
             match r {
                 Ok(_) => {
                     qs_write.commit().expect("commit failure!");
@@ -244,7 +244,7 @@ macro_rules! run_delete_test {
             .unwrap()
             .block_on(qs.verify());
         trace!("verification -> {:?}", ver);
-        assert!(ver.len() == 0);
+        assert_eq!(ver.len(), 0);
     }};
 }
 
diff --git a/server/lib/src/plugins/cred_import.rs b/server/lib/src/plugins/cred_import.rs
index f70d07b22..752bfab39 100644
--- a/server/lib/src/plugins/cred_import.rs
+++ b/server/lib/src/plugins/cred_import.rs
@@ -338,7 +338,7 @@ mod tests {
                     .expect("failed to get primary cred.");
                 match &c.type_ {
                     CredentialType::PasswordMfa(_pw, totp, webauthn, backup_code) => {
-                        assert!(totp.len() == 1);
+                        assert_eq!(totp.len(), 1);
                         assert!(webauthn.is_empty());
                         assert!(backup_code.is_none());
                     }
@@ -399,12 +399,12 @@ mod tests {
                     .expect("failed to get primary cred.");
                 match &c.type_ {
                     CredentialType::PasswordMfa(_pw, totp, webauthn, backup_code) => {
-                        assert!(totp.len() == 2);
+                        assert_eq!(totp.len(), 2);
                         assert!(webauthn.is_empty());
                         assert!(backup_code.is_none());
 
-                        assert!(totp.get("a") == Some(&totp_a));
-                        assert!(totp.get("b") == Some(&totp_b));
+                        assert_eq!(totp.get("a"), Some(&totp_a));
+                        assert_eq!(totp.get("b"), Some(&totp_b));
                     }
                     _ => panic!("Oh no"),
                 };
diff --git a/server/lib/src/plugins/dyngroup.rs b/server/lib/src/plugins/dyngroup.rs
index d0cd9b7a7..5f20ea14a 100644
--- a/server/lib/src/plugins/dyngroup.rs
+++ b/server/lib/src/plugins/dyngroup.rs
@@ -476,7 +476,7 @@ mod tests {
                     .get_ava_set(Attribute::DynMember)
                     .expect("No members on dyn group");
 
-                assert!(members.to_refer_single() == Some(UUID_TEST_GROUP));
+                assert_eq!(members.to_refer_single(), Some(UUID_TEST_GROUP));
             }
         );
     }
@@ -525,7 +525,7 @@ mod tests {
                     .get_ava_set(Attribute::DynMember)
                     .expect("No members on dyn group");
 
-                assert!(members.to_refer_single() == Some(UUID_TEST_GROUP));
+                assert_eq!(members.to_refer_single(), Some(UUID_TEST_GROUP));
             }
         );
     }
@@ -619,7 +619,7 @@ mod tests {
                     .get_ava_set(Attribute::DynMember)
                     .expect("No members on dyn group");
 
-                assert!(members.to_refer_single() == Some(UUID_TEST_GROUP));
+                assert_eq!(members.to_refer_single(), Some(UUID_TEST_GROUP));
                 assert!(d_group.get_ava_set(Attribute::Member).is_none());
             }
         );
@@ -681,7 +681,7 @@ mod tests {
                     .get_ava_set(Attribute::DynMember)
                     .expect("No members on dyn group");
 
-                assert!(members.to_refer_single() == Some(UUID_TEST_GROUP));
+                assert_eq!(members.to_refer_single(), Some(UUID_TEST_GROUP));
             }
         );
     }
@@ -794,7 +794,7 @@ mod tests {
                     .expect("No members on dyn group");
                 // We assert to refer single here because we should have "removed" uuid_admin being added
                 // at all.
-                assert!(members.to_refer_single() == Some(UUID_TEST_GROUP));
+                assert_eq!(members.to_refer_single(), Some(UUID_TEST_GROUP));
             }
         );
     }
@@ -846,7 +846,7 @@ mod tests {
                     .get_ava_set(Attribute::DynMember)
                     .expect("No members on dyn group");
                 // We assert to refer single here because we should have re-added the members
-                assert!(members.to_refer_single() == Some(UUID_TEST_GROUP));
+                assert_eq!(members.to_refer_single(), Some(UUID_TEST_GROUP));
             }
         );
     }
@@ -901,7 +901,7 @@ mod tests {
                     .get_ava_set(Attribute::DynMember)
                     .expect("No members on dyn group");
 
-                assert!(members.to_refer_single() == Some(UUID_TEST_GROUP));
+                assert_eq!(members.to_refer_single(), Some(UUID_TEST_GROUP));
             }
         );
     }
diff --git a/server/lib/src/plugins/memberof.rs b/server/lib/src/plugins/memberof.rs
index 4658d539a..751395a31 100644
--- a/server/lib/src/plugins/memberof.rs
+++ b/server/lib/src/plugins/memberof.rs
@@ -809,7 +809,7 @@ mod tests {
             ]));
             let cands = $qs.internal_search(filt).expect("Internal search failure");
             debug!("assert_mo_cands {:?}", cands);
-            assert!(cands.len() == $cand);
+            assert_eq!(cands.len(), $cand);
         }};
     }
 
diff --git a/server/lib/src/plugins/refint.rs b/server/lib/src/plugins/refint.rs
index 69cc76c54..0f4ff2ad6 100644
--- a/server/lib/src/plugins/refint.rs
+++ b/server/lib/src/plugins/refint.rs
@@ -1263,7 +1263,7 @@ mod tests {
         let dyn_member = dyna
             .get_ava_refer(Attribute::DynMember)
             .expect("Failed to get dyn member attribute");
-        assert!(dyn_member.len() == 1);
+        assert_eq!(dyn_member.len(), 1);
         assert!(dyn_member.contains(&tgroup_uuid));
 
         let group = server_txn
@@ -1273,7 +1273,7 @@ mod tests {
         let grp_member = group
             .get_ava_refer(Attribute::MemberOf)
             .expect("Failed to get memberof attribute");
-        assert!(grp_member.len() == 1);
+        assert_eq!(grp_member.len(), 1);
         assert!(grp_member.contains(&dyn_uuid));
 
         assert!(server_txn.commit().is_ok());
diff --git a/server/lib/src/plugins/spn.rs b/server/lib/src/plugins/spn.rs
index 2086e6d08..499dccd37 100644
--- a/server/lib/src/plugins/spn.rs
+++ b/server/lib/src/plugins/spn.rs
@@ -341,7 +341,7 @@ mod tests {
             .expect("must not fail");
 
         let e_pre_spn = e_pre.get_ava_single(Attribute::Spn).expect("must not fail");
-        assert!(e_pre_spn == ex1);
+        assert_eq!(e_pre_spn, ex1);
 
         // trigger the domain_name change (this will be a cli option to the server
         // in the final version), but it will still call the same qs function to perform the
@@ -360,7 +360,7 @@ mod tests {
             .expect("must not fail");
         debug!("{:?}", e_post_spn);
         debug!("{:?}", ex2);
-        assert!(e_post_spn == ex2);
+        assert_eq!(e_post_spn, ex2);
 
         server_txn.commit().expect("Must not fail");
     }
diff --git a/server/lib/src/repl/cid.rs b/server/lib/src/repl/cid.rs
index bc186085c..ff250b406 100644
--- a/server/lib/src/repl/cid.rs
+++ b/server/lib/src/repl/cid.rs
@@ -100,9 +100,9 @@ mod tests {
             Duration::new(15, 0),
         );
 
-        assert!(cid_a.cmp(&cid_a) == Ordering::Equal);
-        assert!(cid_a.cmp(&cid_b) == Ordering::Less);
-        assert!(cid_b.cmp(&cid_a) == Ordering::Greater);
+        assert_eq!(cid_a.cmp(&cid_a), Ordering::Equal);
+        assert_eq!(cid_a.cmp(&cid_b), Ordering::Less);
+        assert_eq!(cid_b.cmp(&cid_a), Ordering::Greater);
 
         // check same ts, d_uuid, diff s_uuid
         let cid_e = Cid::new(
@@ -114,9 +114,9 @@ mod tests {
             Duration::new(5, 0),
         );
 
-        assert!(cid_e.cmp(&cid_e) == Ordering::Equal);
-        assert!(cid_e.cmp(&cid_f) == Ordering::Less);
-        assert!(cid_f.cmp(&cid_e) == Ordering::Greater);
+        assert_eq!(cid_e.cmp(&cid_e), Ordering::Equal);
+        assert_eq!(cid_e.cmp(&cid_f), Ordering::Less);
+        assert_eq!(cid_f.cmp(&cid_e), Ordering::Greater);
     }
 
     #[test]
@@ -130,11 +130,11 @@ mod tests {
         let cid_z = Cid::new_zero();
 
         let cid_a = Cid::new_lamport(s_uuid, ts5, &ts5);
-        assert!(cid_a.cmp(&cid_z) == Ordering::Greater);
+        assert_eq!(cid_a.cmp(&cid_z), Ordering::Greater);
         let cid_b = Cid::new_lamport(s_uuid, ts15, &ts10);
-        assert!(cid_b.cmp(&cid_a) == Ordering::Greater);
+        assert_eq!(cid_b.cmp(&cid_a), Ordering::Greater);
         // Even with an older ts, we should still step forward.
         let cid_c = Cid::new_lamport(s_uuid, ts10, &ts15);
-        assert!(cid_c.cmp(&cid_b) == Ordering::Greater);
+        assert_eq!(cid_c.cmp(&cid_b), Ordering::Greater);
     }
 }
diff --git a/server/lib/src/repl/tests.rs b/server/lib/src/repl/tests.rs
index 56e4714fb..f9efa9b37 100644
--- a/server/lib/src/repl/tests.rs
+++ b/server/lib/src/repl/tests.rs
@@ -41,7 +41,7 @@ fn repl_initialise(
 
     trace!(?a_ruv_range);
     trace!(?b_ruv_range);
-    assert!(a_ruv_range == b_ruv_range);
+    assert_eq!(a_ruv_range, b_ruv_range);
 
     Ok(())
 }
@@ -238,7 +238,7 @@ async fn test_repl_increment_basic_entry_add(server_a: &QueryServer, server_b: &
 
     trace!(?a_ruv_range);
     trace!(?b_ruv_range);
-    assert!(a_ruv_range == b_ruv_range);
+    assert_eq!(a_ruv_range, b_ruv_range);
 
     server_a_txn.commit().expect("Failed to commit");
 
@@ -321,7 +321,7 @@ async fn test_repl_increment_basic_entry_add(server_a: &QueryServer, server_b: &
 
     trace!(?a_ruv_range);
     trace!(?b_ruv_range);
-    assert!(a_ruv_range == b_ruv_range);
+    assert_eq!(a_ruv_range, b_ruv_range);
 
     // Assert the entry is now present, and the same on both sides
     let e1 = server_a_txn
@@ -331,7 +331,7 @@ async fn test_repl_increment_basic_entry_add(server_a: &QueryServer, server_b: &
         .internal_search_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -387,7 +387,7 @@ async fn test_repl_increment_basic_entry_recycle(server_a: &QueryServer, server_
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -455,7 +455,7 @@ async fn test_repl_increment_basic_entry_tombstone(server_a: &QueryServer, serve
 
     assert!(e1.attribute_equality(Attribute::Class, &EntryClass::Tombstone.into()));
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -617,7 +617,7 @@ async fn test_repl_increment_basic_bidirectional_write(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     // Now perform a write on A
     assert!(server_a_txn
@@ -642,7 +642,7 @@ async fn test_repl_increment_basic_bidirectional_write(
         .expect("Unable to access entry.");
 
     // They are consistent again.
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     assert!(e1.get_ava_set(Attribute::Description).is_none());
 
     server_b_txn.commit().expect("Failed to commit");
@@ -703,11 +703,11 @@ async fn test_repl_increment_basic_deleted_attr(server_a: &QueryServer, server_b
 
     // They are consistent again.
     assert!(e1.get_ava_set(Attribute::Description).is_none());
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     let e1_cs = e1.get_changestate();
     let e2_cs = e2.get_changestate();
-    assert!(e1_cs == e2_cs);
+    assert_eq!(e1_cs, e2_cs);
     assert!(e1_cs.get_attr_cid(Attribute::Description).is_some());
 
     server_b_txn.commit().expect("Failed to commit");
@@ -766,7 +766,7 @@ async fn test_repl_increment_simultaneous_bidirectional_write(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     // Now perform a write on A
     assert!(server_a_txn
@@ -817,9 +817,15 @@ async fn test_repl_increment_simultaneous_bidirectional_write(
         .expect("Unable to access entry.");
 
     // They are consistent again.
-    assert!(e1 == e2);
-    assert!(e1.get_ava_single_utf8(Attribute::Description) == Some("repl_test"));
-    assert!(e1.get_ava_single_utf8(Attribute::DisplayName) == Some("repl_test"));
+    assert_eq!(e1, e2);
+    assert_eq!(
+        e1.get_ava_single_utf8(Attribute::Description),
+        Some("repl_test")
+    );
+    assert_eq!(
+        e1.get_ava_single_utf8(Attribute::DisplayName),
+        Some("repl_test")
+    );
 }
 
 // Create entry on A -> B
@@ -878,7 +884,7 @@ async fn test_repl_increment_basic_bidirectional_lifecycle(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -902,7 +908,7 @@ async fn test_repl_increment_basic_bidirectional_lifecycle(
         .expect("Unable to access entry.");
 
     // They are consistent again.
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     assert!(e1.attribute_equality(Attribute::Class, &EntryClass::Recycled.into()));
 
     server_b_txn.commit().expect("Failed to commit");
@@ -959,7 +965,7 @@ async fn test_repl_increment_basic_bidirectional_lifecycle(
 
     // Ts on both.
     assert!(e1.attribute_equality(Attribute::Class, &EntryClass::Tombstone.into()));
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -1015,7 +1021,7 @@ async fn test_repl_increment_basic_bidirectional_recycle(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -1049,7 +1055,7 @@ async fn test_repl_increment_basic_bidirectional_recycle(
 
     // They are equal, but their CL states are not. e2 should have been
     // retained due to being the latest!
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     assert!(e1.attribute_equality(Attribute::Class, &EntryClass::Recycled.into()));
 
     // Remember entry comparison doesn't compare last_mod_cid.
@@ -1092,11 +1098,11 @@ async fn test_repl_increment_basic_bidirectional_recycle(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     let e1_cs = e1.get_changestate();
     let e2_cs = e2.get_changestate();
-    assert!(e1_cs == e2_cs);
+    assert_eq!(e1_cs, e2_cs);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -1143,7 +1149,7 @@ async fn test_repl_increment_basic_bidirectional_tombstone(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -1196,7 +1202,7 @@ async fn test_repl_increment_basic_bidirectional_tombstone(
 
     assert!(e1.attribute_equality(Attribute::Class, &EntryClass::Tombstone.into()));
     assert!(e2.attribute_equality(Attribute::Class, &EntryClass::Tombstone.into()));
-    assert!(e1.get_last_changed() == e2.get_last_changed());
+    assert_eq!(e1.get_last_changed(), e2.get_last_changed());
 
     server_b_txn.commit().expect("Failed to commit");
     drop(server_a_txn);
@@ -1314,7 +1320,7 @@ async fn test_repl_increment_creation_uuid_conflict(
     trace!(?e1_acc);
     trace!(?e2_acc);
 
-    assert!(e1.get_last_changed() == e2.get_last_changed());
+    assert_eq!(e1.get_last_changed(), e2.get_last_changed());
 
     let cnf_a = server_a_txn
         .internal_search_conflict_uuid(t_uuid)
@@ -1322,7 +1328,10 @@ async fn test_repl_increment_creation_uuid_conflict(
         // Should be a vec.
         .pop()
         .expect("No conflict entries present");
-    assert!(cnf_a.get_ava_single_iname(Attribute::Name) == Some("testperson1"));
+    assert_eq!(
+        cnf_a.get_ava_single_iname(Attribute::Name),
+        Some("testperson1")
+    );
 
     let cnf_b = server_b_txn
         .internal_search_conflict_uuid(t_uuid)
@@ -1364,7 +1373,7 @@ async fn test_repl_increment_creation_uuid_conflict(
     trace!(?cnf_a);
     trace!(?cnf_b);
 
-    assert!(cnf_a.get_last_changed() == cnf_b.get_last_changed());
+    assert_eq!(cnf_a.get_last_changed(), cnf_b.get_last_changed());
 
     let e1 = server_a_txn
         .internal_search_all_uuid(t_uuid)
@@ -1477,7 +1486,7 @@ async fn test_repl_increment_create_tombstone_uuid_conflict(
     let e2 = server_b_txn
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     assert!(e1.attribute_equality(Attribute::Class, &EntryClass::Tombstone.into()));
 
     server_b_txn.commit().expect("Failed to commit");
@@ -1575,7 +1584,7 @@ async fn test_repl_increment_create_tombstone_conflict(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     assert!(e1.attribute_equality(Attribute::Class, &EntryClass::Tombstone.into()));
 
     server_a_txn.commit().expect("Failed to commit");
@@ -1624,7 +1633,7 @@ async fn test_repl_increment_schema_conflict(server_a: &QueryServer, server_b: &
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -1747,7 +1756,7 @@ async fn test_repl_increment_consumer_lagging_attributes(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -1874,7 +1883,7 @@ async fn test_repl_increment_consumer_ruv_trim_past_valid(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -2009,7 +2018,7 @@ async fn test_repl_increment_consumer_ruv_trim_idle_servers(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -2149,11 +2158,11 @@ async fn test_repl_increment_domain_rename(server_a: &QueryServer, server_b: &Qu
         .internal_search_all_uuid(UUID_DOMAIN_INFO)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     let e1_cs = e1.get_changestate();
     let e2_cs = e2.get_changestate();
-    assert!(e1_cs == e2_cs);
+    assert_eq!(e1_cs, e2_cs);
 
     // Check that an existing user was updated properly.
     let e1 = server_a_txn
@@ -2165,11 +2174,11 @@ async fn test_repl_increment_domain_rename(server_a: &QueryServer, server_b: &Qu
 
     let vx1 = e1.get_ava_single(Attribute::Spn).expect("spn not present");
     let ex1 = Value::new_spn_str("admin", "new.example.com");
-    assert!(vx1 == ex1);
+    assert_eq!(vx1, ex1);
 
     trace!(?e1);
     trace!(?e2);
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     // Due to the domain rename, the spn regens on everything. This only occurs
     // once per-replica, and is not unlimited.
@@ -2192,7 +2201,7 @@ async fn test_repl_increment_domain_rename(server_a: &QueryServer, server_b: &Qu
 
     let vx2 = e2.get_ava_single(Attribute::Spn).expect("spn not present");
     let ex2 = Value::new_spn_str("testperson1", "new.example.com");
-    assert!(vx2 == ex2);
+    assert_eq!(vx2, ex2);
 
     server_b_txn.commit().expect("Failed to commit");
     drop(server_a_txn);
@@ -2220,12 +2229,12 @@ async fn test_repl_increment_domain_rename(server_a: &QueryServer, server_b: &Qu
 
     let vx1 = e1.get_ava_single(Attribute::Spn).expect("spn not present");
     let ex1 = Value::new_spn_str("admin", "new.example.com");
-    assert!(vx1 == ex1);
-    assert!(e1 == e2);
+    assert_eq!(vx1, ex1);
+    assert_eq!(e1, e2);
 
     let e1_cs = e1.get_changestate();
     let e2_cs = e2.get_changestate();
-    assert!(e1_cs == e2_cs);
+    assert_eq!(e1_cs, e2_cs);
 
     // Check the test person is back over and now in sync.
     let e1 = server_a_txn
@@ -2237,12 +2246,12 @@ async fn test_repl_increment_domain_rename(server_a: &QueryServer, server_b: &Qu
 
     let vx2 = e2.get_ava_single(Attribute::Spn).expect("spn not present");
     let ex2 = Value::new_spn_str("testperson1", "new.example.com");
-    assert!(vx2 == ex2);
-    assert!(e1 == e2);
+    assert_eq!(vx2, ex2);
+    assert_eq!(e1, e2);
 
     let e1_cs = e1.get_changestate();
     let e2_cs = e2.get_changestate();
-    assert!(e1_cs == e2_cs);
+    assert_eq!(e1_cs, e2_cs);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -2306,7 +2315,7 @@ async fn test_repl_increment_schema_dynamic(server_a: &QueryServer, server_b: &Q
         .internal_search_all_uuid(s_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     let e1 = server_a_txn
         .internal_search_all_uuid(t_uuid)
@@ -2315,7 +2324,7 @@ async fn test_repl_increment_schema_dynamic(server_a: &QueryServer, server_b: &Q
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_b_txn.commit().expect("Failed to commit");
     drop(server_a_txn);
@@ -2379,7 +2388,7 @@ async fn test_repl_increment_memberof_basic(server_a: &QueryServer, server_b: &Q
         .internal_search_all_uuid(g_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     let e1 = server_a_txn
         .internal_search_all_uuid(t_uuid)
@@ -2388,7 +2397,7 @@ async fn test_repl_increment_memberof_basic(server_a: &QueryServer, server_b: &Q
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     assert!(e1.attribute_equality(Attribute::MemberOf, &PartialValue::Refer(g_uuid)));
     // We should also check dyngroups too here :)
     assert!(e1.attribute_equality(
@@ -2496,7 +2505,7 @@ async fn test_repl_increment_memberof_conflict(server_a: &QueryServer, server_b:
         .internal_search_all_uuid(g_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     assert!(!e1.attribute_equality(Attribute::Member, &PartialValue::Refer(t_uuid)));
     assert!(e1.attribute_equality(
         Attribute::Name,
@@ -2510,7 +2519,7 @@ async fn test_repl_increment_memberof_conflict(server_a: &QueryServer, server_b:
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     assert!(!e1.attribute_equality(Attribute::MemberOf, &PartialValue::Refer(g_uuid)));
 
     server_a_txn.commit().expect("Failed to commit");
@@ -2622,9 +2631,9 @@ async fn test_repl_increment_refint_tombstone(server_a: &QueryServer, server_b:
     let e1_cs = e1.get_changestate();
     let e2_cs = e2.get_changestate();
 
-    assert!(e1_cs == e2_cs);
+    assert_eq!(e1_cs, e2_cs);
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     assert!(!e1.attribute_equality(Attribute::Member, &PartialValue::Refer(t_uuid)));
 
     server_a_txn.commit().expect("Failed to commit");
@@ -2723,9 +2732,9 @@ async fn test_repl_increment_refint_conflict(server_a: &QueryServer, server_b: &
 
     let e1_cs = e1.get_changestate();
     let e2_cs = e2.get_changestate();
-    assert!(e1_cs == e2_cs);
+    assert_eq!(e1_cs, e2_cs);
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     assert!(!e1.attribute_equality(Attribute::Member, &PartialValue::Refer(t_uuid)));
 
     server_a_txn.commit().expect("Failed to commit");
@@ -2839,8 +2848,8 @@ async fn test_repl_increment_refint_delete_to_member_holder(
     let e1_cs = e1.get_changestate();
     let e2_cs = e2.get_changestate();
 
-    assert!(e1_cs == e2_cs);
-    assert!(e1 == e2);
+    assert_eq!(e1_cs, e2_cs);
+    assert_eq!(e1, e2);
     assert!(!e1.attribute_equality(Attribute::Member, &PartialValue::Refer(t_uuid)));
 
     server_b_txn.commit().expect("Failed to commit");
@@ -2933,7 +2942,7 @@ async fn test_repl_increment_attrunique_conflict_basic(
         .internal_search_all_uuid(g_a_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     let e1 = server_a_txn
         .internal_search_all_uuid(g_b_uuid)
@@ -2942,7 +2951,7 @@ async fn test_repl_increment_attrunique_conflict_basic(
         .internal_search_all_uuid(g_b_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
     server_b_txn.commit().expect("Failed to commit");
     drop(server_a_txn);
 
@@ -2986,14 +2995,20 @@ async fn test_repl_increment_attrunique_conflict_basic(
         .expect("Unable to search conflict entries.")
         .pop()
         .expect("No conflict entries present");
-    assert!(cnf_a.get_ava_single_iname(Attribute::Name) == Some("name_conflict"));
+    assert_eq!(
+        cnf_a.get_ava_single_iname(Attribute::Name),
+        Some("name_conflict")
+    );
 
     let cnf_b = server_a_txn
         .internal_search_conflict_uuid(g_b_uuid)
         .expect("Unable to search conflict entries.")
         .pop()
         .expect("No conflict entries present");
-    assert!(cnf_b.get_ava_single_iname(Attribute::Name) == Some("name_conflict"));
+    assert_eq!(
+        cnf_b.get_ava_single_iname(Attribute::Name),
+        Some("name_conflict")
+    );
 
     // Check the person has MO A/B removed.
     let e = server_a_txn
@@ -3025,14 +3040,20 @@ async fn test_repl_increment_attrunique_conflict_basic(
         .expect("Unable to search conflict entries.")
         .pop()
         .expect("No conflict entries present");
-    assert!(cnf_a.get_ava_single_iname(Attribute::Name) == Some("name_conflict"));
+    assert_eq!(
+        cnf_a.get_ava_single_iname(Attribute::Name),
+        Some("name_conflict")
+    );
 
     let cnf_b = server_b_txn
         .internal_search_conflict_uuid(g_b_uuid)
         .expect("Unable to search conflict entries.")
         .pop()
         .expect("No conflict entries present");
-    assert!(cnf_b.get_ava_single_iname(Attribute::Name) == Some("name_conflict"));
+    assert_eq!(
+        cnf_b.get_ava_single_iname(Attribute::Name),
+        Some("name_conflict")
+    );
 
     server_b_txn.commit().expect("Failed to commit");
     drop(server_a_txn);
@@ -3151,7 +3172,10 @@ async fn test_repl_increment_attrunique_conflict_complex(
         .expect("Unable to search conflict entries.")
         .pop()
         .expect("No conflict entries present");
-    assert!(cnf_a.get_ava_single_iname(Attribute::Name) == Some("name_conflict"));
+    assert_eq!(
+        cnf_a.get_ava_single_iname(Attribute::Name),
+        Some("name_conflict")
+    );
 
     server_b_txn.commit().expect("Failed to commit");
     drop(server_a_txn);
@@ -3342,7 +3366,7 @@ async fn test_repl_increment_session_new(server_a: &QueryServer, server_b: &Quer
         .get_ava_as_session_map(Attribute::UserAuthTokenSession)
         .unwrap();
 
-    assert!(sessions_a.len() == 1);
+    assert_eq!(sessions_a.len(), 1);
     assert!(sessions_a.get(&session_id_a).is_some());
     assert!(sessions_a.get(&session_id_b).is_none());
 
@@ -3350,7 +3374,7 @@ async fn test_repl_increment_session_new(server_a: &QueryServer, server_b: &Quer
         .get_ava_as_session_map(Attribute::UserAuthTokenSession)
         .unwrap();
 
-    assert!(sessions_b.len() == 2);
+    assert_eq!(sessions_b.len(), 2);
     assert!(sessions_b.get(&session_id_a).is_some());
     assert!(sessions_b.get(&session_id_b).is_some());
 
@@ -3374,10 +3398,10 @@ async fn test_repl_increment_session_new(server_a: &QueryServer, server_b: &Quer
     let e1_cs = e1.get_changestate();
     let e2_cs = e2.get_changestate();
 
-    assert!(e1_cs == e2_cs);
+    assert_eq!(e1_cs, e2_cs);
     trace!(?e1);
     trace!(?e2);
-    assert!(e1 == e2);
+    assert_eq!(e1, e2);
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -3460,7 +3484,7 @@ async fn test_repl_increment_consumer_lagging_refresh(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1.get_last_changed() == e2.get_last_changed());
+    assert_eq!(e1.get_last_changed(), e2.get_last_changed());
 
     server_b_txn.commit().expect("Failed to commit");
     drop(server_a_txn);
@@ -3603,7 +3627,7 @@ async fn test_repl_increment_consumer_lagging_refresh(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1.get_last_changed() == e2.get_last_changed());
+    assert_eq!(e1.get_last_changed(), e2.get_last_changed());
 
     server_a_txn.commit().expect("Failed to commit");
     drop(server_b_txn);
@@ -3620,7 +3644,7 @@ async fn test_repl_increment_consumer_lagging_refresh(
         .internal_search_all_uuid(t_uuid)
         .expect("Unable to access entry.");
 
-    assert!(e1.get_last_changed() == e2.get_last_changed());
+    assert_eq!(e1.get_last_changed(), e2.get_last_changed());
 
     server_b_txn.commit().expect("Failed to commit");
     drop(server_a_txn);
diff --git a/server/lib/src/schema.rs b/server/lib/src/schema.rs
index 08e5384d3..a44da1f37 100644
--- a/server/lib/src/schema.rs
+++ b/server/lib/src/schema.rs
@@ -2976,7 +2976,7 @@ mod tests {
 
         assert!(schema.update_classes(vec![class]).is_ok());
 
-        assert!(schema.validate().len() == 1);
+        assert_eq!(schema.validate().len(), 1);
     }
 
     #[test]
diff --git a/server/lib/src/server/access/mod.rs b/server/lib/src/server/access/mod.rs
index b5705e7eb..4110e16d7 100644
--- a/server/lib/src/server/access/mod.rs
+++ b/server/lib/src/server/access/mod.rs
@@ -1544,7 +1544,7 @@ mod tests {
             debug!("result --> {:?}", res);
             debug!("expect --> {:?}", $expect);
             // should be ok, and same as expect.
-            assert!(res == $expect);
+            assert_eq!(res, $expect);
         }};
     }
 
@@ -1576,7 +1576,7 @@ mod tests {
             debug!("expect --> {:?}", expect_set);
             debug!("result --> {:?}", reduced);
             // should be ok, and same as expect.
-            assert!(reduced == expect_set);
+            assert_eq!(reduced, expect_set);
         }};
     }
 
@@ -1825,7 +1825,7 @@ mod tests {
             debug!("result --> {:?}", res);
             debug!("expect --> {:?}", $expect);
             // should be ok, and same as expect.
-            assert!(res == $expect);
+            assert_eq!(res, $expect);
         }};
         (
             $me:expr,
@@ -1852,7 +1852,7 @@ mod tests {
             debug!("result --> {:?}", res);
             debug!("expect --> {:?}", $expect);
             // should be ok, and same as expect.
-            assert!(res == $expect);
+            assert_eq!(res, $expect);
         }};
     }
 
@@ -2073,7 +2073,7 @@ mod tests {
             debug!("result --> {:?}", res);
             debug!("expect --> {:?}", $expect);
             // should be ok, and same as expect.
-            assert!(res == $expect);
+            assert_eq!(res, $expect);
         }};
     }
 
@@ -2227,7 +2227,7 @@ mod tests {
             debug!("result --> {:?}", res);
             debug!("expect --> {:?}", $expect);
             // should be ok, and same as expect.
-            assert!(res == $expect);
+            assert_eq!(res, $expect);
         }};
     }
 
@@ -2334,7 +2334,7 @@ mod tests {
             debug!("result --> {:?}", res);
             debug!("expect --> {:?}", $expect);
             // should be ok, and same as expect.
-            assert!(res == $expect);
+            assert_eq!(res, $expect);
         }};
     }
 
diff --git a/server/lib/src/server/batch_modify.rs b/server/lib/src/server/batch_modify.rs
index a870570c6..32ce41eb7 100644
--- a/server/lib/src/server/batch_modify.rs
+++ b/server/lib/src/server/batch_modify.rs
@@ -352,7 +352,7 @@ mod tests {
             .internal_search_uuid(uuid_b)
             .expect("Failed to get entry.");
 
-        assert!(ent_a.get_ava_single_utf8(Attribute::Description) == Some("a"));
-        assert!(ent_b.get_ava_single_utf8(Attribute::Description) == Some("b"));
+        assert_eq!(ent_a.get_ava_single_utf8(Attribute::Description), Some("a"));
+        assert_eq!(ent_b.get_ava_single_utf8(Attribute::Description), Some("b"));
     }
 }
diff --git a/server/lib/src/server/create.rs b/server/lib/src/server/create.rs
index 4511d0970..5a996914f 100644
--- a/server/lib/src/server/create.rs
+++ b/server/lib/src/server/create.rs
@@ -226,7 +226,7 @@ mod tests {
 
         let r2 = server_txn.search(&se1).expect("search failure");
         debug!("--> {:?}", r2);
-        assert!(r2.len() == 1);
+        assert_eq!(r2.len(), 1);
 
         // We apply some member-of in the server now, so we add these before we seal.
         e.add_ava(Attribute::Class, EntryClass::MemberOf.into());
diff --git a/server/lib/src/server/mod.rs b/server/lib/src/server/mod.rs
index 06d030175..6feb46293 100644
--- a/server/lib/src/server/mod.rs
+++ b/server/lib/src/server/mod.rs
@@ -2262,16 +2262,16 @@ mod tests {
         assert!(r2.is_err());
         // Name does exist
         let r3 = server_txn.name_to_uuid("testperson1");
-        assert!(r3 == Ok(t_uuid));
+        assert_eq!(r3, Ok(t_uuid));
         // Name is not syntax normalised (but exists)
         let r4 = server_txn.name_to_uuid("tEsTpErSoN1");
-        assert!(r4 == Ok(t_uuid));
+        assert_eq!(r4, Ok(t_uuid));
         // Name is an rdn
         let r5 = server_txn.name_to_uuid("name=testperson1");
-        assert!(r5 == Ok(t_uuid));
+        assert_eq!(r5, Ok(t_uuid));
         // Name is a dn
         let r6 = server_txn.name_to_uuid("name=testperson1,o=example");
-        assert!(r6 == Ok(t_uuid));
+        assert_eq!(r6, Ok(t_uuid));
     }
 
     #[qs_test]
@@ -2293,16 +2293,16 @@ mod tests {
 
         // Name doesn't exist
         let r1 = server_txn.sync_external_id_to_uuid("tobias");
-        assert!(r1 == Ok(None));
+        assert_eq!(r1, Ok(None));
         // Name doesn't exist (not syntax normalised)
         let r2 = server_txn.sync_external_id_to_uuid("tObIAs");
-        assert!(r2 == Ok(None));
+        assert_eq!(r2, Ok(None));
         // Name does exist
         let r3 = server_txn.sync_external_id_to_uuid("uid=testperson");
-        assert!(r3 == Ok(Some(t_uuid)));
+        assert_eq!(r3, Ok(Some(t_uuid)));
         // Name is not syntax normalised (but exists)
         let r4 = server_txn.sync_external_id_to_uuid("uId=TeStPeRsOn");
-        assert!(r4 == Ok(Some(t_uuid)));
+        assert_eq!(r4, Ok(Some(t_uuid)));
     }
 
     #[qs_test]
@@ -2328,14 +2328,20 @@ mod tests {
         // Name doesn't exist
         let r1 = server_txn.uuid_to_spn(uuid!("bae3f507-e6c3-44ba-ad01-f8ff1083534a"));
         // There is nothing.
-        assert!(r1 == Ok(None));
+        assert_eq!(r1, Ok(None));
         // Name does exist
         let r3 = server_txn.uuid_to_spn(uuid!("cc8e95b4-c24f-4d68-ba54-8bed76f63930"));
         println!("{r3:?}");
-        assert!(r3.unwrap().unwrap() == Value::new_spn_str("testperson1", "example.com"));
+        assert_eq!(
+            r3.unwrap().unwrap(),
+            Value::new_spn_str("testperson1", "example.com")
+        );
         // Name is not syntax normalised (but exists)
         let r4 = server_txn.uuid_to_spn(uuid!("CC8E95B4-C24F-4D68-BA54-8BED76F63930"));
-        assert!(r4.unwrap().unwrap() == Value::new_spn_str("testperson1", "example.com"));
+        assert_eq!(
+            r4.unwrap().unwrap(),
+            Value::new_spn_str("testperson1", "example.com")
+        );
     }
 
     #[qs_test]
@@ -2361,14 +2367,14 @@ mod tests {
         // Name doesn't exist
         let r1 = server_txn.uuid_to_rdn(uuid!("bae3f507-e6c3-44ba-ad01-f8ff1083534a"));
         // There is nothing.
-        assert!(r1.unwrap() == "uuid=bae3f507-e6c3-44ba-ad01-f8ff1083534a");
+        assert_eq!(r1.unwrap(), "uuid=bae3f507-e6c3-44ba-ad01-f8ff1083534a");
         // Name does exist
         let r3 = server_txn.uuid_to_rdn(uuid!("cc8e95b4-c24f-4d68-ba54-8bed76f63930"));
         println!("{r3:?}");
-        assert!(r3.unwrap() == "spn=testperson1@example.com");
+        assert_eq!(r3.unwrap(), "spn=testperson1@example.com");
         // Uuid is not syntax normalised (but exists)
         let r4 = server_txn.uuid_to_rdn(uuid!("CC8E95B4-C24F-4D68-BA54-8BED76F63930"));
-        assert!(r4.unwrap() == "spn=testperson1@example.com");
+        assert_eq!(r4.unwrap(), "spn=testperson1@example.com");
     }
 
     #[qs_test]
@@ -2404,13 +2410,19 @@ mod tests {
         // test attr reference
         let r3 = server_txn.clone_value("member", "testperson1");
 
-        assert!(r3 == Ok(Value::Refer(uuid!("cc8e95b4-c24f-4d68-ba54-8bed76f63930"))));
+        assert_eq!(
+            r3,
+            Ok(Value::Refer(uuid!("cc8e95b4-c24f-4d68-ba54-8bed76f63930")))
+        );
 
         // test attr reference already resolved.
         let r4 = server_txn.clone_value("member", "cc8e95b4-c24f-4d68-ba54-8bed76f63930");
 
         debug!("{:?}", r4);
-        assert!(r4 == Ok(Value::Refer(uuid!("cc8e95b4-c24f-4d68-ba54-8bed76f63930"))));
+        assert_eq!(
+            r4,
+            Ok(Value::Refer(uuid!("cc8e95b4-c24f-4d68-ba54-8bed76f63930")))
+        );
     }
 
     #[qs_test]
diff --git a/server/lib/src/server/modify.rs b/server/lib/src/server/modify.rs
index e03a171cb..81a542890 100644
--- a/server/lib/src/server/modify.rs
+++ b/server/lib/src/server/modify.rs
@@ -610,7 +610,10 @@ mod tests {
             filter!(f_pres(Attribute::Class)),
             ModifyList::new_list(vec![]),
         );
-        assert!(server_txn.modify(&me_emp) == Err(OperationError::EmptyRequest));
+        assert_eq!(
+            server_txn.modify(&me_emp),
+            Err(OperationError::EmptyRequest)
+        );
 
         // Mod changes no objects
         let me_nochg = ModifyEvent::new_impersonate_entry_ser(
@@ -624,7 +627,10 @@ mod tests {
                 Value::from("anusaosu"),
             )]),
         );
-        assert!(server_txn.modify(&me_nochg) == Err(OperationError::NoMatchingEntries));
+        assert_eq!(
+            server_txn.modify(&me_nochg),
+            Err(OperationError::NoMatchingEntries)
+        );
 
         // TODO: can we can this, since the filter's defined as an enum now
         // Filter is invalid to schema - to check this due to changes in the way events are
diff --git a/server/lib/src/server/recycle.rs b/server/lib/src/server/recycle.rs
index 9d861c39d..214c9ee09 100644
--- a/server/lib/src/server/recycle.rs
+++ b/server/lib/src/server/recycle.rs
@@ -339,14 +339,14 @@ mod tests {
 
         // Can in be seen by special search? (external recycle search)
         let r2 = server_txn.search(&sre_rc).expect("search failed");
-        assert!(r2.len() == 2);
+        assert_eq!(r2.len(), 2);
 
         // Can it be seen (internal search)
         // Internal search should see it.
         let r2 = server_txn
             .internal_search(filt_i_rc.clone())
             .expect("internal search failed");
-        assert!(r2.len() == 2);
+        assert_eq!(r2.len(), 2);
 
         // There are now two paths forward
         //  revival or purge!
@@ -357,7 +357,7 @@ mod tests {
         let r3 = server_txn
             .internal_search(filt_i_rc.clone())
             .expect("internal search failed");
-        assert!(r3.len() == 1);
+        assert_eq!(r3.len(), 1);
 
         // Commit
         assert!(server_txn.commit().is_ok());
@@ -378,13 +378,13 @@ mod tests {
         let r5 = server_txn
             .internal_search(filt_i_ts.clone())
             .expect("internal search failed");
-        assert!(r5.len() == 1);
+        assert_eq!(r5.len(), 1);
 
         // There should be one entry
         let r6 = server_txn
             .internal_search(filt_i_per.clone())
             .expect("internal search failed");
-        assert!(r6.len() == 1);
+        assert_eq!(r6.len(), 1);
 
         assert!(server_txn.commit().is_ok());
     }
@@ -422,7 +422,7 @@ mod tests {
         let filt_rc = filter_all!(f_eq(Attribute::Class, EntryClass::Recycled.into()));
         let sre_rc = SearchEvent::new_rec_impersonate_entry(admin, filt_rc);
         let r2 = server_txn.search(&sre_rc).expect("search failed");
-        assert!(r2.len() == 1);
+        assert_eq!(r2.len(), 1);
 
         // Create dup uuid (rej)
         // After a delete -> recycle, create duplicate name etc.
@@ -455,14 +455,17 @@ mod tests {
         let cr = server_txn.create(&ce);
         assert!(cr.is_ok());
 
-        assert!(server_txn.uuid_to_rdn(tuuid) == Ok("spn=testperson1@example.com".to_string()));
+        assert_eq!(
+            server_txn.uuid_to_rdn(tuuid),
+            Ok("spn=testperson1@example.com".to_string())
+        );
 
         assert!(
             server_txn.uuid_to_spn(tuuid)
                 == Ok(Some(Value::new_spn_str("testperson1", "example.com")))
         );
 
-        assert!(server_txn.name_to_uuid("testperson1") == Ok(tuuid));
+        assert_eq!(server_txn.name_to_uuid("testperson1"), Ok(tuuid));
 
         // delete
         let de_sin = DeleteEvent::new_internal_invalid(filter!(f_eq(
@@ -477,7 +480,7 @@ mod tests {
                 == Ok("uuid=cc8e95b4-c24f-4d68-ba54-8bed76f63930".to_string())
         );
 
-        assert!(server_txn.uuid_to_spn(tuuid) == Ok(None));
+        assert_eq!(server_txn.uuid_to_spn(tuuid), Ok(None));
 
         assert!(server_txn.name_to_uuid("testperson1").is_err());
 
@@ -494,14 +497,17 @@ mod tests {
 
         // all checks pass
 
-        assert!(server_txn.uuid_to_rdn(tuuid) == Ok("spn=testperson1@example.com".to_string()));
+        assert_eq!(
+            server_txn.uuid_to_rdn(tuuid),
+            Ok("spn=testperson1@example.com".to_string())
+        );
 
         assert!(
             server_txn.uuid_to_spn(tuuid)
                 == Ok(Some(Value::new_spn_str("testperson1", "example.com")))
         );
 
-        assert!(server_txn.name_to_uuid("testperson1") == Ok(tuuid));
+        assert_eq!(server_txn.name_to_uuid("testperson1"), Ok(tuuid));
     }
 
     #[qs_test]
@@ -581,7 +587,7 @@ mod tests {
         let r2 = server_txn
             .internal_search(filt_i_ts.clone())
             .expect("internal search failed");
-        assert!(r2.len() == 1);
+        assert_eq!(r2.len(), 1);
 
         // If we purge now, nothing happens, we aren't past the time window.
         assert!(server_txn.purge_tombstones().is_ok());
@@ -589,7 +595,7 @@ mod tests {
         let r3 = server_txn
             .internal_search(filt_i_ts.clone())
             .expect("internal search failed");
-        assert!(r3.len() == 1);
+        assert_eq!(r3.len(), 1);
 
         // Commit
         assert!(server_txn.commit().is_ok());
diff --git a/server/lib/src/utils.rs b/server/lib/src/utils.rs
index e1d4878cf..1c762b027 100644
--- a/server/lib/src/utils.rs
+++ b/server/lib/src/utils.rs
@@ -171,15 +171,15 @@ mod tests {
     fn test_utils_uuid_to_gid_u32() {
         let u1 = uuid!("00000000-0000-0001-0000-000000000000");
         let r1 = uuid_to_gid_u32(u1);
-        assert!(r1 == 0);
+        assert_eq!(r1, 0);
 
         let u2 = uuid!("00000000-0000-0001-0000-0000ffffffff");
         let r2 = uuid_to_gid_u32(u2);
-        assert!(r2 == 0xffffffff);
+        assert_eq!(r2, 0xffffffff);
 
         let u3 = uuid!("00000000-0000-0001-0000-ffff12345678");
         let r3 = uuid_to_gid_u32(u3);
-        assert!(r3 == 0x12345678);
+        assert_eq!(r3, 0x12345678);
     }
 
     #[test]
diff --git a/server/lib/src/value.rs b/server/lib/src/value.rs
index 1abee030f..1fcfebb24 100644
--- a/server/lib/src/value.rs
+++ b/server/lib/src/value.rs
@@ -871,7 +871,7 @@ impl PartialValue {
             PartialValue::Spn(name, realm) => format!("{name}@{realm}"),
             PartialValue::Uint32(u) => u.to_string(),
             PartialValue::DateTime(odt) => {
-                debug_assert!(odt.offset() == time::UtcOffset::UTC);
+                debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
                 #[allow(clippy::expect_used)]
                 odt.format(&Rfc3339)
                     .expect("Failed to format timestamp into RFC3339")
@@ -1642,7 +1642,7 @@ impl Value {
     pub fn to_datetime(&self) -> Option<OffsetDateTime> {
         match &self {
             Value::DateTime(odt) => {
-                debug_assert!(odt.offset() == time::UtcOffset::UTC);
+                debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
                 Some(*odt)
             }
             _ => None,
@@ -2244,12 +2244,12 @@ mod tests {
         // check it's indexing output
         let vidx_key = spnv.generate_idx_eq_keys().pop().unwrap();
         let idx_key = spnp.get_idx_eq_key();
-        assert!(idx_key == vidx_key);
+        assert_eq!(idx_key,vidx_key);
         // check it can parse from name@realm
         let spn_parse = PartialValue::new_spn_s("claire@example.net.au").unwrap();
-        assert!(spn_parse == spnp);
+        assert_eq!(spn_parse,spnp);
         // check it can produce name@realm as str from the pv.
-        assert!("claire@example.net.au" == spnv.to_proto_string_clone());
+        assert_eq!("claire@example.net.au",spnv.to_proto_string_clone());
     }
     */
 
@@ -2265,7 +2265,7 @@ mod tests {
         let idx_key = u32pv.get_idx_eq_key();
         let vidx_key = u32v.generate_idx_eq_keys().pop().unwrap();
 
-        assert!(idx_key == vidx_key);
+        assert_eq!(idx_key,vidx_key);
     }
     */
 
diff --git a/server/lib/src/valueset/address.rs b/server/lib/src/valueset/address.rs
index e68cc9ec5..3c370bfaf 100644
--- a/server/lib/src/valueset/address.rs
+++ b/server/lib/src/valueset/address.rs
@@ -536,8 +536,11 @@ mod tests {
         //
         let mut vs: ValueSet = ValueSetEmailAddress::new("claire@example.com".to_string());
 
-        assert!(vs.len() == 1);
-        assert!(vs.to_email_address_primary_str() == Some("claire@example.com"));
+        assert_eq!(vs.len(), 1);
+        assert_eq!(
+            vs.to_email_address_primary_str(),
+            Some("claire@example.com")
+        );
 
         // Add another, still not primary.
         assert!(
@@ -546,8 +549,11 @@ mod tests {
             ) == Ok(true)
         );
 
-        assert!(vs.len() == 2);
-        assert!(vs.to_email_address_primary_str() == Some("claire@example.com"));
+        assert_eq!(vs.len(), 2);
+        assert_eq!(
+            vs.to_email_address_primary_str(),
+            Some("claire@example.com")
+        );
 
         // Update primary
         assert!(
@@ -555,28 +561,34 @@ mod tests {
                 Value::new_email_address_primary_s("primary@example.com").expect("Invalid Email")
             ) == Ok(true)
         );
-        assert!(vs.to_email_address_primary_str() == Some("primary@example.com"));
+        assert_eq!(
+            vs.to_email_address_primary_str(),
+            Some("primary@example.com")
+        );
 
         // Restore from dbv1, ensure correct primary
         let vs2 = valueset::from_db_valueset_v2(vs.to_db_valueset_v2())
             .expect("Failed to construct vs2 from dbvalue");
 
         assert_eq!(&vs, &vs2);
-        assert!(vs.to_email_address_primary_str() == vs2.to_email_address_primary_str());
+        assert_eq!(
+            vs.to_email_address_primary_str(),
+            vs2.to_email_address_primary_str()
+        );
 
         // Remove primary, assert it's gone and that the "first" address is assigned.
         assert!(vs.remove(
             &PartialValue::new_email_address_s("primary@example.com"),
             &Cid::new_zero()
         ));
-        assert!(vs.len() == 2);
-        assert!(vs.to_email_address_primary_str() == Some("alice@example.com"));
+        assert_eq!(vs.len(), 2);
+        assert_eq!(vs.to_email_address_primary_str(), Some("alice@example.com"));
 
         // Restore from dbv1, alice persisted.
         let vs3 = valueset::from_db_valueset_v2(vs.to_db_valueset_v2())
             .expect("Failed to construct vs2 from dbvalue");
         assert_eq!(&vs, &vs3);
-        assert!(vs3.len() == 2);
+        assert_eq!(vs3.len(), 2);
         assert!(vs3
             .as_emailaddress_set()
             .map(|(_p, s)| s)
@@ -590,7 +602,7 @@ mod tests {
 
         // If we clear, no primary.
         vs.clear();
-        assert!(vs.len() == 0);
+        assert_eq!(vs.len(), 0);
         assert!(vs.to_email_address_primary_str().is_none());
     }
 }
diff --git a/server/lib/src/valueset/apppwd.rs b/server/lib/src/valueset/apppwd.rs
index 87a152b8e..1c82124d3 100644
--- a/server/lib/src/valueset/apppwd.rs
+++ b/server/lib/src/valueset/apppwd.rs
@@ -283,37 +283,37 @@ mod tests {
         };
 
         let mut vs: ValueSet = ValueSetApplicationPassword::new(ap1);
-        assert!(vs.len() == 1);
+        assert_eq!(vs.len(), 1);
 
         let res = vs
             .insert_checked(Value::ApplicationPassword(ap2))
             .expect("Failed to insert");
         assert!(res);
-        assert!(vs.len() == 2);
+        assert_eq!(vs.len(), 2);
 
         let res = vs
             .insert_checked(Value::ApplicationPassword(ap3))
             .expect("Failed to insert");
         assert!(res);
-        assert!(vs.len() == 3);
+        assert_eq!(vs.len(), 3);
 
         let res = vs.remove(&PartialValue::Uuid(Uuid::new_v4()), &Cid::new_zero());
         assert!(!res);
-        assert!(vs.len() == 3);
+        assert_eq!(vs.len(), 3);
 
         let res = vs.remove(&PartialValue::Uuid(ap1_uuid), &Cid::new_zero());
         assert!(res);
-        assert!(vs.len() == 2);
+        assert_eq!(vs.len(), 2);
 
         let res = vs.remove(&PartialValue::Uuid(ap3_uuid), &Cid::new_zero());
         assert!(res);
-        assert!(vs.len() == 1);
+        assert_eq!(vs.len(), 1);
 
         let res = vs.remove(&PartialValue::Uuid(ap2_uuid), &Cid::new_zero());
         assert!(res);
-        assert!(vs.len() == 0);
+        assert_eq!(vs.len(), 0);
 
         let res = vs.as_application_password_map().unwrap();
-        assert!(res.keys().len() == 0);
+        assert_eq!(res.keys().len(), 0);
     }
 }
diff --git a/server/lib/src/valueset/auditlogstring.rs b/server/lib/src/valueset/auditlogstring.rs
index 1a7bd63a5..27e47c78a 100644
--- a/server/lib/src/valueset/auditlogstring.rs
+++ b/server/lib/src/valueset/auditlogstring.rs
@@ -203,7 +203,7 @@ mod tests {
     #[test]
     fn test_valueset_auditlogstring_merge() {
         let mut vs: ValueSet = ValueSetAuditLogString::new((Cid::new_count(0), "A".to_string()));
-        assert!(vs.len() == 1);
+        assert_eq!(vs.len(), 1);
 
         for i in 1..AUDIT_LOG_STRING_CAPACITY {
             vs.insert_checked(Value::AuditLogString(
@@ -213,7 +213,7 @@ mod tests {
             .unwrap();
         }
 
-        assert!(vs.len() == AUDIT_LOG_STRING_CAPACITY);
+        assert_eq!(vs.len(), AUDIT_LOG_STRING_CAPACITY);
 
         // Add one extra
         vs.insert_checked(Value::AuditLogString(
@@ -222,14 +222,14 @@ mod tests {
         ))
         .unwrap();
 
-        assert!(vs.len() == AUDIT_LOG_STRING_CAPACITY);
+        assert_eq!(vs.len(), AUDIT_LOG_STRING_CAPACITY);
 
         let mut v_iter = vs.to_value_iter();
         let Some(Value::AuditLogString(c, _s)) = v_iter.next() else {
             unreachable!();
         };
         // Should always be '1' since the set merge would have pushed '0' (ring-buffer);
-        assert!(c.ts == Duration::from_secs(1));
+        assert_eq!(c.ts, Duration::from_secs(1));
         println!("{:?}", c);
         drop(v_iter);
 
@@ -238,20 +238,20 @@ mod tests {
             // Notice that 0 here is older than our other set items.
             (Cid::new_count(0), "A".to_string()),
         );
-        assert!(other_vs.len() == 1);
+        assert_eq!(other_vs.len(), 1);
 
         // Merge. The content of other_vs should be dropped.
         vs.merge(&other_vs)
             .expect("Failed to merge, incorrect types");
 
         // No change in the state of the set.
-        assert!(vs.len() == AUDIT_LOG_STRING_CAPACITY);
+        assert_eq!(vs.len(), AUDIT_LOG_STRING_CAPACITY);
         let mut v_iter = vs.to_value_iter();
         let Some(Value::AuditLogString(c, _s)) = v_iter.next() else {
             unreachable!();
         };
         // Should always be '1' since the set merge would have pushed '0' (ring-buffer);
-        assert!(c.ts == Duration::from_secs(1));
+        assert_eq!(c.ts, Duration::from_secs(1));
         println!("{:?}", c);
         drop(v_iter);
 
@@ -266,20 +266,20 @@ mod tests {
             // Notice that 0 here is older than our other set items.
             (Cid::new_count(100), "A".to_string()),
         );
-        assert!(other_vs.len() == 1);
+        assert_eq!(other_vs.len(), 1);
 
         vs.merge(&other_vs)
             .expect("Failed to merge, incorrect types");
 
         // New value has pushed out the next oldest.
-        assert!(vs.len() == AUDIT_LOG_STRING_CAPACITY);
+        assert_eq!(vs.len(), AUDIT_LOG_STRING_CAPACITY);
         let mut v_iter = vs.to_value_iter();
         let Some(Value::AuditLogString(c, _s)) = v_iter.next() else {
             unreachable!();
         };
         // Should always be '1' since the set merge would have pushed '0' (ring-buffer);
         println!("{:?}", c);
-        assert!(c.ts == Duration::from_secs(2));
+        assert_eq!(c.ts, Duration::from_secs(2));
         drop(v_iter);
     }
 
@@ -287,7 +287,7 @@ mod tests {
     fn test_valueset_auditlogstring_repl_merge() {
         let zero_cid = Cid::new_zero();
         let mut vs: ValueSet = ValueSetAuditLogString::new((Cid::new_count(1), "A".to_string()));
-        assert!(vs.len() == 1);
+        assert_eq!(vs.len(), 1);
 
         for i in 2..(AUDIT_LOG_STRING_CAPACITY + 1) {
             vs.insert_checked(Value::AuditLogString(
@@ -297,14 +297,14 @@ mod tests {
             .unwrap();
         }
 
-        assert!(vs.len() == AUDIT_LOG_STRING_CAPACITY);
+        assert_eq!(vs.len(), AUDIT_LOG_STRING_CAPACITY);
 
         // Make a second set.
         let other_vs: ValueSet = ValueSetAuditLogString::new(
             // Notice that 0 here is older than our other set items.
             (Cid::new_count(0), "A".to_string()),
         );
-        assert!(other_vs.len() == 1);
+        assert_eq!(other_vs.len(), 1);
 
         // Merge. The content of other_vs should be dropped.
         let r_vs = vs
@@ -312,13 +312,13 @@ mod tests {
             .expect("merge did not occur");
 
         // No change in the state of the set.
-        assert!(r_vs.len() == AUDIT_LOG_STRING_CAPACITY);
+        assert_eq!(r_vs.len(), AUDIT_LOG_STRING_CAPACITY);
         let mut v_iter = r_vs.to_value_iter();
         let Some(Value::AuditLogString(c, _s)) = v_iter.next() else {
             unreachable!();
         };
         // Should always be '1' since the set merge would have pushed '0' (ring-buffer);
-        assert!(c.ts == Duration::from_secs(1));
+        assert_eq!(c.ts, Duration::from_secs(1));
         println!("{:?}", c);
         drop(v_iter);
 
@@ -333,21 +333,21 @@ mod tests {
             // Notice that 0 here is older than our other set items.
             (Cid::new_count(100), "A".to_string()),
         );
-        assert!(other_vs.len() == 1);
+        assert_eq!(other_vs.len(), 1);
 
         let r_vs = vs
             .repl_merge_valueset(&other_vs, &zero_cid)
             .expect("merge did not occur");
 
         // New value has pushed out the next oldest.
-        assert!(r_vs.len() == AUDIT_LOG_STRING_CAPACITY);
+        assert_eq!(r_vs.len(), AUDIT_LOG_STRING_CAPACITY);
         let mut v_iter = r_vs.to_value_iter();
         let Some(Value::AuditLogString(c, _s)) = v_iter.next() else {
             unreachable!();
         };
         // Should always be '1' since the set merge would have pushed '0' (ring-buffer);
         println!("{:?}", c);
-        assert!(c.ts == Duration::from_secs(2));
+        assert_eq!(c.ts, Duration::from_secs(2));
         drop(v_iter);
     }
 }
diff --git a/server/lib/src/valueset/datetime.rs b/server/lib/src/valueset/datetime.rs
index aeded111f..3cdba3dd9 100644
--- a/server/lib/src/valueset/datetime.rs
+++ b/server/lib/src/valueset/datetime.rs
@@ -111,7 +111,7 @@ impl ValueSetT for ValueSetDateTime {
         self.set
             .iter()
             .map(|odt| {
-                debug_assert!(odt.offset() == time::UtcOffset::UTC);
+                debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
                 #[allow(clippy::expect_used)]
                 odt.format(&Rfc3339)
                     .expect("Failed to format timestamp into RFC3339")
@@ -129,7 +129,7 @@ impl ValueSetT for ValueSetDateTime {
 
     fn to_proto_string_clone_iter(&self) -> Box<dyn Iterator<Item = String> + '_> {
         Box::new(self.set.iter().map(|odt| {
-            debug_assert!(odt.offset() == time::UtcOffset::UTC);
+            debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
             #[allow(clippy::expect_used)]
             odt.format(&Rfc3339)
                 .expect("Failed to format timestamp into RFC3339")
@@ -141,7 +141,7 @@ impl ValueSetT for ValueSetDateTime {
             self.set
                 .iter()
                 .map(|odt| {
-                    debug_assert!(odt.offset() == time::UtcOffset::UTC);
+                    debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
                     #[allow(clippy::expect_used)]
                     odt.format(&Rfc3339)
                         .expect("Failed to format timestamp into RFC3339")
@@ -156,7 +156,7 @@ impl ValueSetT for ValueSetDateTime {
                 .set
                 .iter()
                 .map(|odt| {
-                    debug_assert!(odt.offset() == time::UtcOffset::UTC);
+                    debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
                     #[allow(clippy::expect_used)]
                     odt.format(&Rfc3339)
                         .expect("Failed to format timestamp into RFC3339")
diff --git a/server/lib/src/valueset/key_internal.rs b/server/lib/src/valueset/key_internal.rs
index e56b19dfb..3a3aede9d 100644
--- a/server/lib/src/valueset/key_internal.rs
+++ b/server/lib/src/valueset/key_internal.rs
@@ -405,7 +405,7 @@ mod tests {
         // Simulate session revocation.
         vs_a.purge(&one_cid);
 
-        assert!(vs_a.len() == 1);
+        assert_eq!(vs_a.len(), 1);
 
         let key_internal = vs_a
             .as_key_internal_map()
@@ -448,7 +448,7 @@ mod tests {
 
         vs_a.merge(&vs_b).expect("Failed to merge");
 
-        assert!(vs_a.len() == 1);
+        assert_eq!(vs_a.len(), 1);
         let key_internal = vs_a
             .as_key_internal_map()
             .and_then(|map| map.get(&kid))
@@ -482,7 +482,7 @@ mod tests {
 
         vs_b.merge(&vs_a).expect("Failed to merge");
 
-        assert!(vs_b.len() == 1);
+        assert_eq!(vs_b.len(), 1);
 
         let key_internal = vs_b
             .as_key_internal_map()
@@ -545,7 +545,7 @@ mod tests {
 
         eprintln!("{:?}", key_internal_map);
 
-        assert!(vs_r.len() == 1);
+        assert_eq!(vs_r.len(), 1);
 
         let key_internal = key_internal_map.get(&kid).expect("Unable to access key");
 
@@ -608,7 +608,7 @@ mod tests {
 
         eprintln!("{:?}", key_internal_map);
 
-        assert!(vs_r.len() == 1);
+        assert_eq!(vs_r.len(), 1);
 
         let key_internal = key_internal_map.get(&kid).expect("Unable to access key");
 
diff --git a/server/lib/src/valueset/session.rs b/server/lib/src/valueset/session.rs
index d0bbb6da1..34e6a5b29 100644
--- a/server/lib/src/valueset/session.rs
+++ b/server/lib/src/valueset/session.rs
@@ -44,7 +44,7 @@ impl ValueSetSession {
 
                 state: match &m.state {
                     SessionState::ExpiresAt(odt) => {
-                        debug_assert!(odt.offset() == time::UtcOffset::UTC);
+                        debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
                         #[allow(clippy::expect_used)]
                         odt.format(&Rfc3339)
                             .map(DbValueSessionStateV1::ExpiresAt)
@@ -58,7 +58,7 @@ impl ValueSetSession {
                 },
 
                 issued_at: {
-                    debug_assert!(m.issued_at.offset() == time::UtcOffset::UTC);
+                    debug_assert_eq!(m.issued_at.offset(), time::UtcOffset::UTC);
                     #[allow(clippy::expect_used)]
                     m.issued_at
                         .format(&Rfc3339)
@@ -907,7 +907,7 @@ impl ValueSetT for ValueSetOauth2Session {
                     parent: m.parent,
                     state: match &m.state {
                         SessionState::ExpiresAt(odt) => {
-                            debug_assert!(odt.offset() == time::UtcOffset::UTC);
+                            debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
                             #[allow(clippy::expect_used)]
                             odt.format(&Rfc3339)
                                 .map(DbValueSessionStateV1::ExpiresAt)
@@ -920,7 +920,7 @@ impl ValueSetT for ValueSetOauth2Session {
                         }),
                     },
                     issued_at: {
-                        debug_assert!(m.issued_at.offset() == time::UtcOffset::UTC);
+                        debug_assert_eq!(m.issued_at.offset(), time::UtcOffset::UTC);
                         #[allow(clippy::expect_used)]
                         m.issued_at
                             .format(&Rfc3339)
@@ -942,7 +942,7 @@ impl ValueSetT for ValueSetOauth2Session {
                     parent: m.parent,
                     state: match &m.state {
                         SessionState::ExpiresAt(odt) => {
-                            debug_assert!(odt.offset() == time::UtcOffset::UTC);
+                            debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
                             #[allow(clippy::expect_used)]
                             odt.format(&Rfc3339)
                                 .map(ReplSessionStateV1::ExpiresAt)
@@ -952,7 +952,7 @@ impl ValueSetT for ValueSetOauth2Session {
                         SessionState::RevokedAt(c) => ReplSessionStateV1::RevokedAt(c.into()),
                     },
                     issued_at: {
-                        debug_assert!(m.issued_at.offset() == time::UtcOffset::UTC);
+                        debug_assert_eq!(m.issued_at.offset(), time::UtcOffset::UTC);
                         #[allow(clippy::expect_used)]
                         m.issued_at
                             .format(&Rfc3339)
@@ -1328,13 +1328,13 @@ impl ValueSetT for ValueSetApiToken {
                     refer: *u,
                     label: m.label.clone(),
                     expiry: m.expiry.map(|odt| {
-                        debug_assert!(odt.offset() == time::UtcOffset::UTC);
+                        debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
                         #[allow(clippy::expect_used)]
                         odt.format(&Rfc3339)
                             .expect("Failed to format timestamp into RFC3339")
                     }),
                     issued_at: {
-                        debug_assert!(m.issued_at.offset() == time::UtcOffset::UTC);
+                        debug_assert_eq!(m.issued_at.offset(), time::UtcOffset::UTC);
                         #[allow(clippy::expect_used)]
                         m.issued_at
                             .format(&Rfc3339)
@@ -1364,13 +1364,13 @@ impl ValueSetT for ValueSetApiToken {
                     refer: *u,
                     label: m.label.clone(),
                     expiry: m.expiry.map(|odt| {
-                        debug_assert!(odt.offset() == time::UtcOffset::UTC);
+                        debug_assert_eq!(odt.offset(), time::UtcOffset::UTC);
                         #[allow(clippy::expect_used)]
                         odt.format(&Rfc3339)
                             .expect("Failed to format timestamp into RFC3339")
                     }),
                     issued_at: {
-                        debug_assert!(m.issued_at.offset() == time::UtcOffset::UTC);
+                        debug_assert_eq!(m.issued_at.offset(), time::UtcOffset::UTC);
 
                         #[allow(clippy::expect_used)]
                         m.issued_at
@@ -1459,7 +1459,7 @@ mod tests {
         // Simulate session revocation.
         vs.purge(&zero_cid);
 
-        assert!(vs.len() == 1);
+        assert_eq!(vs.len(), 1);
 
         let session = vs
             .as_session_map()
@@ -1773,7 +1773,7 @@ mod tests {
 
         vs_a.trim(&zero_cid);
 
-        assert!(vs_a.len() == SESSION_MAXIMUM);
+        assert_eq!(vs_a.len(), SESSION_MAXIMUM);
 
         let sessions = vs_a.as_session_map().expect("Unable to access sessions");
 
@@ -1798,7 +1798,7 @@ mod tests {
         // Simulate session revocation.
         vs.purge(&zero_cid);
 
-        assert!(vs.len() == 1);
+        assert_eq!(vs.len(), 1);
 
         let session = vs
             .as_oauth2session_map()
diff --git a/server/lib/src/valueset/uint32.rs b/server/lib/src/valueset/uint32.rs
index 08362419a..ff0292ad7 100644
--- a/server/lib/src/valueset/uint32.rs
+++ b/server/lib/src/valueset/uint32.rs
@@ -171,8 +171,8 @@ mod tests {
     #[test]
     fn test_valueset_basic() {
         let mut vs = ValueSetUint32::new(0);
-        assert!(vs.insert_checked(Value::new_uint32(0)) == Ok(false));
-        assert!(vs.insert_checked(Value::new_uint32(1)) == Ok(true));
-        assert!(vs.insert_checked(Value::new_uint32(1)) == Ok(false));
+        assert_eq!(vs.insert_checked(Value::new_uint32(0)), Ok(false));
+        assert_eq!(vs.insert_checked(Value::new_uint32(1)), Ok(true));
+        assert_eq!(vs.insert_checked(Value::new_uint32(1)), Ok(false));
     }
 }
diff --git a/server/testkit/src/lib.rs b/server/testkit/src/lib.rs
index 03e7d1240..c211a9219 100644
--- a/server/testkit/src/lib.rs
+++ b/server/testkit/src/lib.rs
@@ -323,7 +323,7 @@ pub async fn test_read_attrs(
             _ => e.attrs.contains_key(attr.as_ref()),
         };
         trace!("is_ok: {}, is_readable: {}", is_ok, is_readable);
-        assert!(is_ok == is_readable)
+        assert_eq!(is_ok, is_readable)
     }
 }
 
@@ -338,7 +338,7 @@ pub async fn test_write_attrs(
         println!("Writing to {} - ex {}", attr, is_writeable);
         #[allow(clippy::unwrap_used)]
         let is_ok = is_attr_writable(rsclient, id, *attr).await.unwrap();
-        assert!(is_ok == is_writeable)
+        assert_eq!(is_ok, is_writeable)
     }
 }
 
@@ -354,7 +354,7 @@ pub async fn test_modify_group(
             #[allow(clippy::unwrap_used)]
             let is_writable = is_attr_writable(rsclient, group, attr).await.unwrap();
             dbg!(group, attr, is_writable, can_be_modified);
-            assert!(is_writable == can_be_modified)
+            assert_eq!(is_writable, can_be_modified)
         }
         assert!(
             rsclient
diff --git a/server/testkit/tests/oauth2_test.rs b/server/testkit/tests/oauth2_test.rs
index c9d28f5e4..fbda48b62 100644
--- a/server/testkit/tests/oauth2_test.rs
+++ b/server/testkit/tests/oauth2_test.rs
@@ -9,7 +9,8 @@ use kanidm_proto::constants::*;
 use kanidm_proto::internal::Oauth2ClaimMapJoin;
 use kanidm_proto::oauth2::{
     AccessTokenIntrospectRequest, AccessTokenIntrospectResponse, AccessTokenRequest,
-    AccessTokenResponse, AuthorisationResponse, GrantTypeReq, OidcDiscoveryResponse,
+    AccessTokenResponse, AccessTokenType, AuthorisationResponse, GrantTypeReq,
+    OidcDiscoveryResponse,
 };
 use kanidmd_lib::prelude::{Attribute, IDM_ALL_ACCOUNTS};
 use oauth2_ext::PkceCodeChallenge;
@@ -156,7 +157,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send discovery preflight request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
 
     let cors_header: &str = response
         .headers()
@@ -172,7 +173,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
 
     // Assert CORS on the GET too.
     let cors_header: &str = response
@@ -194,11 +195,17 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
 
     // Most values are checked in idm/oauth2.rs, but we want to sanity check
     // the urls here as an extended function smoke test.
-    assert!(discovery.issuer == rsclient.make_url("/oauth2/openid/test_integration"));
+    assert_eq!(
+        discovery.issuer,
+        rsclient.make_url("/oauth2/openid/test_integration")
+    );
 
-    assert!(discovery.authorization_endpoint == rsclient.make_url("/ui/oauth2"));
+    assert_eq!(
+        discovery.authorization_endpoint,
+        rsclient.make_url("/ui/oauth2")
+    );
 
-    assert!(discovery.token_endpoint == rsclient.make_url("/oauth2/token"));
+    assert_eq!(discovery.token_endpoint, rsclient.make_url("/oauth2/token"));
 
     assert!(
         discovery.userinfo_endpoint
@@ -216,7 +223,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
     assert_no_cache!(response);
 
     let mut jwk_set: JwkKeySet = response
@@ -252,7 +259,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
     assert_no_cache!(response);
 
     let consent_req: AuthorisationResponse = response
@@ -285,7 +292,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
         .expect("Failed to send request.");
 
     // This should yield a 302 redirect with some query params.
-    assert!(response.status() == reqwest::StatusCode::FOUND);
+    assert_eq!(response.status(), reqwest::StatusCode::FOUND);
     assert_no_cache!(response);
 
     // And we should have a URL in the location header.
@@ -305,7 +312,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
 
     let state = pairs.get("state").expect("state not found!");
 
-    assert!(state == "YWJjZGVm");
+    assert_eq!(state, "YWJjZGVm");
 
     // Step 3 - the "resource server" then uses this state and code to directly contact
     // the authorisation server to request a token.
@@ -325,7 +332,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send code exchange request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
 
     let cors_header: &str = response
         .headers()
@@ -361,7 +368,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send token introspect request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
     tracing::trace!("{:?}", response.headers());
     assert!(
         response.headers().get(CONTENT_TYPE) == Some(&HeaderValue::from_static(APPLICATION_JSON))
@@ -375,14 +382,14 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
 
     assert!(tir.active);
     assert!(tir.scope.is_some());
-    assert!(tir.client_id.as_deref() == Some("test_integration"));
-    assert!(tir.username.as_deref() == Some("oauth_test@localhost"));
-    assert!(tir.token_type.as_deref() == Some("access_token"));
+    assert_eq!(tir.client_id.as_deref(), Some("test_integration"));
+    assert_eq!(tir.username.as_deref(), Some("oauth_test@localhost"));
+    assert_eq!(tir.token_type, Some(AccessTokenType::Bearer));
     assert!(tir.exp.is_some());
     assert!(tir.iat.is_some());
     assert!(tir.nbf.is_some());
     assert!(tir.sub.is_some());
-    assert!(tir.aud.as_deref() == Some("test_integration"));
+    assert_eq!(tir.aud.as_deref(), Some("test_integration"));
     assert!(tir.iss.is_none());
     assert!(tir.jti.is_none());
 
@@ -398,10 +405,13 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
 
     // This is mostly checked inside of idm/oauth2.rs. This is more to check the oidc
     // token and the userinfo endpoints.
-    assert!(oidc.iss == rsclient.make_url("/oauth2/openid/test_integration"));
+    assert_eq!(
+        oidc.iss,
+        rsclient.make_url("/oauth2/openid/test_integration")
+    );
     eprintln!("{:?}", oidc.s_claims.email);
-    assert!(oidc.s_claims.email.as_deref() == Some("oauth_test@localhost"));
-    assert!(oidc.s_claims.email_verified == Some(true));
+    assert_eq!(oidc.s_claims.email.as_deref(), Some("oauth_test@localhost"));
+    assert_eq!(oidc.s_claims.email_verified, Some(true));
 
     let response = client
         .get(rsclient.make_url("/oauth2/openid/test_integration/userinfo"))
@@ -422,7 +432,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
     eprintln!("userinfo {userinfo:?}");
     eprintln!("oidc {oidc:?}");
 
-    assert!(userinfo == oidc);
+    assert_eq!(userinfo, oidc);
 
     // Step 6 - Show that our client can perform a client credentials grant
 
@@ -443,7 +453,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send client credentials request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
 
     let atr = response
         .json::<AccessTokenResponse>()
@@ -464,7 +474,7 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send token introspect request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
 
     let tir = response
         .json::<AccessTokenIntrospectResponse>()
@@ -473,9 +483,9 @@ async fn test_oauth2_openid_basic_flow(rsclient: KanidmClient) {
 
     assert!(tir.active);
     assert!(tir.scope.is_some());
-    assert!(tir.client_id.as_deref() == Some("test_integration"));
-    assert!(tir.username.as_deref() == Some("test_integration@localhost"));
-    assert!(tir.token_type.as_deref() == Some("access_token"));
+    assert_eq!(tir.client_id.as_deref(), Some("test_integration"));
+    assert_eq!(tir.username.as_deref(), Some("test_integration@localhost"));
+    assert_eq!(tir.token_type, Some(AccessTokenType::Bearer));
 
     // auth back with admin so we can test deleting things
     let res = rsclient
@@ -605,7 +615,7 @@ async fn test_oauth2_openid_public_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
     assert_no_cache!(response);
 
     let mut jwk_set: JwkKeySet = response
@@ -640,7 +650,7 @@ async fn test_oauth2_openid_public_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
     assert_no_cache!(response);
 
     let consent_req: AuthorisationResponse = response
@@ -672,7 +682,7 @@ async fn test_oauth2_openid_public_flow(rsclient: KanidmClient) {
         .expect("Failed to send request.");
 
     // This should yield a 302 redirect with some query params.
-    assert!(response.status() == reqwest::StatusCode::FOUND);
+    assert_eq!(response.status(), reqwest::StatusCode::FOUND);
     assert_no_cache!(response);
 
     // And we should have a URL in the location header.
@@ -692,7 +702,7 @@ async fn test_oauth2_openid_public_flow(rsclient: KanidmClient) {
 
     let state = pairs.get("state").expect("state not found!");
 
-    assert!(state == "YWJjZGVm");
+    assert_eq!(state, "YWJjZGVm");
 
     // Step 3 - the "resource server" then uses this state and code to directly contact
     // the authorisation server to request a token.
@@ -714,7 +724,7 @@ async fn test_oauth2_openid_public_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send code exchange request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
     assert_no_cache!(response);
 
     // The body is a json AccessTokenResponse
@@ -735,10 +745,13 @@ async fn test_oauth2_openid_public_flow(rsclient: KanidmClient) {
 
     // This is mostly checked inside of idm/oauth2.rs. This is more to check the oidc
     // token and the userinfo endpoints.
-    assert!(oidc.iss == rsclient.make_url("/oauth2/openid/test_integration"));
+    assert_eq!(
+        oidc.iss,
+        rsclient.make_url("/oauth2/openid/test_integration")
+    );
     eprintln!("{:?}", oidc.s_claims.email);
-    assert!(oidc.s_claims.email.as_deref() == Some("oauth_test@localhost"));
-    assert!(oidc.s_claims.email_verified == Some(true));
+    assert_eq!(oidc.s_claims.email.as_deref(), Some("oauth_test@localhost"));
+    assert_eq!(oidc.s_claims.email_verified, Some(true));
 
     eprintln!("{:?}", oidc.claims);
     assert_eq!(
@@ -756,7 +769,7 @@ async fn test_oauth2_openid_public_flow(rsclient: KanidmClient) {
         .await
         .expect("Failed to send userinfo preflight request.");
 
-    assert!(response.status() == reqwest::StatusCode::OK);
+    assert_eq!(response.status(), reqwest::StatusCode::OK);
     let cors_header: &str = response
         .headers()
         .get(http::header::ACCESS_CONTROL_ALLOW_ORIGIN)
@@ -780,7 +793,7 @@ async fn test_oauth2_openid_public_flow(rsclient: KanidmClient) {
     eprintln!("userinfo {userinfo:?}");
     eprintln!("oidc {oidc:?}");
 
-    assert!(userinfo == oidc);
+    assert_eq!(userinfo, oidc);
 
     // auth back with admin so we can test deleting things
     let res = rsclient
@@ -815,7 +828,7 @@ async fn test_oauth2_token_post_bad_bodies(rsclient: KanidmClient) {
         .await
         .expect("Failed to send token request.");
     println!("{:?}", response);
-    assert!(response.status() == StatusCode::UNPROCESSABLE_ENTITY);
+    assert_eq!(response.status(), StatusCode::UNPROCESSABLE_ENTITY);
 
     // test for a bad-auth request
     let response = client
@@ -825,7 +838,7 @@ async fn test_oauth2_token_post_bad_bodies(rsclient: KanidmClient) {
         .await
         .expect("Failed to send token introspection request.");
     println!("{:?}", response);
-    assert!(response.status() == StatusCode::UNAUTHORIZED);
+    assert_eq!(response.status(), StatusCode::UNAUTHORIZED);
 }
 
 #[kanidmd_testkit::test]
@@ -850,7 +863,7 @@ async fn test_oauth2_token_revoke_post(rsclient: KanidmClient) {
         .await
         .expect("Failed to send token request.");
     println!("{:?}", response);
-    assert!(response.status() == StatusCode::UNPROCESSABLE_ENTITY);
+    assert_eq!(response.status(), StatusCode::UNPROCESSABLE_ENTITY);
 
     // test for a invalid format request on token
     let response = client
@@ -862,7 +875,7 @@ async fn test_oauth2_token_revoke_post(rsclient: KanidmClient) {
         .expect("Failed to send token request.");
     println!("{:?}", response);
 
-    assert!(response.status() == StatusCode::UNSUPPORTED_MEDIA_TYPE);
+    assert_eq!(response.status(), StatusCode::UNSUPPORTED_MEDIA_TYPE);
 
     // test for a bad-body request on token
     let response = client
@@ -873,7 +886,7 @@ async fn test_oauth2_token_revoke_post(rsclient: KanidmClient) {
         .await
         .expect("Failed to send token request.");
     println!("{:?}", response);
-    assert!(response.status() == StatusCode::UNPROCESSABLE_ENTITY);
+    assert_eq!(response.status(), StatusCode::UNPROCESSABLE_ENTITY);
 
     // test for a bad-body request on token
     let response = client
@@ -884,5 +897,5 @@ async fn test_oauth2_token_revoke_post(rsclient: KanidmClient) {
         .await
         .expect("Failed to send token request.");
     println!("{:?}", response);
-    assert!(response.status() == StatusCode::UNSUPPORTED_MEDIA_TYPE);
+    assert_eq!(response.status(), StatusCode::UNSUPPORTED_MEDIA_TYPE);
 }
diff --git a/server/testkit/tests/proto_v1_test.rs b/server/testkit/tests/proto_v1_test.rs
index 35a82d1c6..9c793f481 100644
--- a/server/testkit/tests/proto_v1_test.rs
+++ b/server/testkit/tests/proto_v1_test.rs
@@ -71,7 +71,10 @@ async fn test_server_whoami_anonymous(rsclient: KanidmClient) {
         .expect("Unable to call whoami")
         .expect("No entry matching self returned");
     debug!(?e);
-    assert!(e.attrs.get("spn") == Some(&vec!["anonymous@localhost".to_string()]));
+    assert_eq!(
+        e.attrs.get("spn"),
+        Some(&vec!["anonymous@localhost".to_string()])
+    );
 
     // Do a check of the auth/valid endpoint, tells us if our token
     // is okay.
@@ -98,7 +101,10 @@ async fn test_server_whoami_admin_simple_password(rsclient: KanidmClient) {
         .expect("Unable to call whoami")
         .expect("No entry matching self returned");
     debug!(?e);
-    assert!(e.attrs.get("spn") == Some(&vec!["admin@localhost".to_string()]));
+    assert_eq!(
+        e.attrs.get("spn"),
+        Some(&vec!["admin@localhost".to_string()])
+    );
 }
 
 #[kanidmd_testkit::test]
@@ -123,7 +129,7 @@ async fn test_server_search(rsclient: KanidmClient) {
     // Check it's admin.
     println!("{:?}", e);
     let name = e.attrs.get(Attribute::Name.as_ref()).unwrap();
-    assert!(name == &vec!["admin".to_string()]);
+    assert_eq!(name, &vec!["admin".to_string()]);
 }
 
 // test the rest group endpoint.
@@ -175,7 +181,7 @@ async fn test_server_rest_group_lifecycle(rsclient: KanidmClient) {
         .await
         .unwrap();
     let members = rsclient.idm_group_get_members("demo_group").await.unwrap();
-    assert!(members == Some(vec!["admin@localhost".to_string()]));
+    assert_eq!(members, Some(vec!["admin@localhost".to_string()]));
 
     // Set the list of members
     rsclient
@@ -197,7 +203,7 @@ async fn test_server_rest_group_lifecycle(rsclient: KanidmClient) {
         .await
         .unwrap();
     let members = rsclient.idm_group_get_members("demo_group").await.unwrap();
-    assert!(members == Some(vec!["admin@localhost".to_string()]));
+    assert_eq!(members, Some(vec!["admin@localhost".to_string()]));
 
     // purge members
     rsclient
@@ -236,7 +242,7 @@ async fn test_server_rest_group_lifecycle(rsclient: KanidmClient) {
     // Delete the group
     rsclient.idm_group_delete("demo_group").await.unwrap();
     let g_list_3 = rsclient.idm_group_list().await.unwrap();
-    assert!(g_list_3.len() == g_list.len());
+    assert_eq!(g_list_3.len(), g_list.len());
 
     // Check we can get an exact group
     let g = rsclient
@@ -348,15 +354,15 @@ async fn test_server_radius_credential_lifecycle(rsclient: KanidmClient) {
         .idm_account_radius_credential_get("demo_account")
         .await
         .unwrap();
-    assert!(sec1 == r_sec.unwrap());
+    assert_eq!(sec1, r_sec.unwrap());
 
     // test getting the token - we can do this as self or the radius server
     let r_tok = rsclient
         .idm_account_radius_token_get("demo_account")
         .await
         .unwrap();
-    assert!(sec1 == r_tok.secret);
-    assert!(r_tok.name == "demo_account");
+    assert_eq!(sec1, r_tok.secret);
+    assert_eq!(r_tok.name, "demo_account");
 
     // Reset it
     let sec2 = rsclient
@@ -428,7 +434,7 @@ async fn test_server_rest_person_account_lifecycle(rsclient: KanidmClient) {
         .await
         .unwrap();
 
-    assert!(r == Some(vec!["demo@idm.example.com".to_string()]));
+    assert_eq!(r, Some(vec!["demo@idm.example.com".to_string()]));
 
     // Delete the account
     rsclient
@@ -467,7 +473,7 @@ async fn test_server_rest_sshkey_lifecycle(rsclient: KanidmClient) {
 
     // Get, should have the key
     let sk2 = rsclient.idm_account_get_ssh_pubkeys("admin").await.unwrap();
-    assert!(sk2.len() == 1);
+    assert_eq!(sk2.len(), 1);
 
     // Post a valid key
     let r3 = rsclient
@@ -476,7 +482,7 @@ async fn test_server_rest_sshkey_lifecycle(rsclient: KanidmClient) {
 
     // Get, should have both keys.
     let sk3 = rsclient.idm_account_get_ssh_pubkeys("admin").await.unwrap();
-    assert!(sk3.len() == 2);
+    assert_eq!(sk3.len(), 2);
 
     // Delete a key (by tag)
     let r4 = rsclient
@@ -486,12 +492,12 @@ async fn test_server_rest_sshkey_lifecycle(rsclient: KanidmClient) {
 
     // Get, should have remaining key.
     let sk4 = rsclient.idm_account_get_ssh_pubkeys("admin").await.unwrap();
-    assert!(sk4.len() == 1);
+    assert_eq!(sk4.len(), 1);
 
     // get by tag
     let skn = rsclient.idm_account_get_ssh_pubkey("admin", "k2").await;
     assert!(skn.is_ok());
-    assert!(skn.unwrap() == Some("ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBx4TpJYQjd0YI5lQIHqblIsCIK5NKVFURYS/eM3o6/Z william@amethyst".to_string()));
+    assert_eq!(skn.unwrap(),Some("ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBx4TpJYQjd0YI5lQIHqblIsCIK5NKVFURYS/eM3o6/Z william@amethyst".to_string()));
 
     // Add a key and delete with a space in the name.
     let r5 = rsclient
@@ -504,7 +510,7 @@ async fn test_server_rest_sshkey_lifecycle(rsclient: KanidmClient) {
     assert!(r6.is_ok());
 
     let sk5 = rsclient.idm_account_get_ssh_pubkeys("admin").await.unwrap();
-    assert!(sk5.len() == 1);
+    assert_eq!(sk5.len(), 1);
 }
 
 #[kanidmd_testkit::test]
@@ -520,7 +526,7 @@ async fn test_server_rest_domain_lifecycle(rsclient: KanidmClient) {
     rsclient.idm_domain_set_ssid("new_ssid").await.unwrap();
     // check get and get the ssid and domain info
     let nssid = rsclient.idm_domain_get_ssid().await.unwrap();
-    assert!(nssid == "new_ssid");
+    assert_eq!(nssid, "new_ssid");
 
     // Change the domain display name
     rsclient
@@ -625,10 +631,10 @@ async fn test_server_rest_posix_lifecycle(rsclient: KanidmClient) {
         .unwrap();
 
     println!("{:?}", r);
-    assert!(r.name == "posix_account");
-    assert!(r1.name == "posix_account");
-    assert!(r2.name == "posix_account");
-    assert!(r3.name == "posix_account");
+    assert_eq!(r.name, "posix_account");
+    assert_eq!(r1.name, "posix_account");
+    assert_eq!(r2.name, "posix_account");
+    assert_eq!(r3.name, "posix_account");
 
     // get the group by name
     let r = rsclient
@@ -652,10 +658,10 @@ async fn test_server_rest_posix_lifecycle(rsclient: KanidmClient) {
         .unwrap();
 
     println!("{:?}", r);
-    assert!(r.name == "posix_group");
-    assert!(r1.name == "posix_group");
-    assert!(r2.name == "posix_group");
-    assert!(r3.name == "posix_group");
+    assert_eq!(r.name, "posix_group");
+    assert_eq!(r1.name, "posix_group");
+    assert_eq!(r2.name, "posix_group");
+    assert_eq!(r3.name, "posix_group");
 }
 
 #[kanidmd_testkit::test]
@@ -793,7 +799,7 @@ async fn test_server_rest_recycle_lifecycle(rsclient: KanidmClient) {
     // list the recycle bin
     let r_list = rsclient.recycle_bin_list().await.unwrap();
 
-    assert!(r_list.len() == 1);
+    assert_eq!(r_list.len(), 1);
     // get the user in recycle bin
     let r_user = rsclient.recycle_bin_get("recycle_account").await.unwrap();
     assert!(r_user.is_some());
@@ -848,7 +854,7 @@ async fn test_server_rest_oauth2_basic_lifecycle(rsclient: KanidmClient) {
         .await
         .expect("Failed to retrieve oauth2 configs");
 
-    assert!(initial_configs.len() == 1);
+    assert_eq!(initial_configs.len(), 1);
 
     // Get the value. Assert we have oauth2_rs_basic_secret,
     // but can NOT see the token_secret.
@@ -1017,7 +1023,7 @@ async fn test_server_rest_oauth2_basic_lifecycle(rsclient: KanidmClient) {
     eprintln!("{:?}", oauth2_config_updated);
     eprintln!("{:?}", oauth2_config_updated4);
 
-    assert!(oauth2_config_updated == oauth2_config_updated4);
+    assert_eq!(oauth2_config_updated, oauth2_config_updated4);
 
     // Delete the config
     rsclient
@@ -1303,7 +1309,7 @@ async fn setup_demo_account_passkey(rsclient: &KanidmClient) -> WebauthnAuthenti
         .unwrap();
 
     assert!(status.can_commit);
-    assert!(status.passkeys.len() == 1);
+    assert_eq!(status.passkeys.len(), 1);
 
     // Commit it
     rsclient
@@ -1449,7 +1455,7 @@ async fn test_server_api_token_lifecycle(rsclient: KanidmClient) {
         .await
         .expect("Failed to list service account api tokens");
 
-    assert!(tokens == vec![token.clone()]);
+    assert_eq!(tokens, vec![token.clone()]);
 
     rsclient
         .idm_service_account_destroy_api_token(&token.account_id.to_string(), token.token_id)
@@ -1491,7 +1497,7 @@ async fn test_server_api_token_lifecycle(rsclient: KanidmClient) {
         .await
         .expect("Failed to get displayname")
         .expect("Failed to unwrap displayname");
-    assert!(new_displayname == displayname);
+    assert_eq!(new_displayname, displayname);
 
     rsclient
         .idm_service_account_purge_attr(test_service_account_username, Attribute::Mail.as_ref())
@@ -1654,7 +1660,7 @@ async fn test_server_user_auth_token_lifecycle(rsclient: KanidmClient) {
         .await
         .expect("Failed to list user auth tokens");
 
-    assert!(sessions[0].session_id == token.session_id);
+    assert_eq!(sessions[0].session_id, token.session_id);
 
     // idm_account_destroy_user_auth_token
     rsclient
diff --git a/tools/iam_migrations/freeipa/src/tests.rs b/tools/iam_migrations/freeipa/src/tests.rs
index 70f9b6d05..7c12ab61e 100644
--- a/tools/iam_migrations/freeipa/src/tests.rs
+++ b/tools/iam_migrations/freeipa/src/tests.rs
@@ -26,13 +26,13 @@ async fn test_ldap_to_scim() {
         serde_json::to_string_pretty(&scim_sync_request).unwrap()
     );
 
-    assert!(scim_sync_request.from_state == expect_scim_request.from_state);
+    assert_eq!(scim_sync_request.from_state,expect_scim_request.from_state);
 
-    assert!(scim_sync_request.to_state == expect_scim_request.to_state);
+    assert_eq!(scim_sync_request.to_state,expect_scim_request.to_state);
 
-    assert!(scim_sync_request.entries == expect_scim_request.entries);
+    assert_eq!(scim_sync_request.entries,expect_scim_request.entries);
 
-    assert!(scim_sync_request.delete_uuids == expect_scim_request.delete_uuids);
+    assert_eq!(scim_sync_request.delete_uuids,expect_scim_request.delete_uuids);
 }
 
 const TEST_LDAP_SYNC_REPL_1: &str = r#"
diff --git a/unix_integration/resolver/src/db.rs b/unix_integration/resolver/src/db.rs
index 7d4d8e6ab..887b4ef43 100644
--- a/unix_integration/resolver/src/db.rs
+++ b/unix_integration/resolver/src/db.rs
@@ -1138,8 +1138,8 @@ mod tests {
         let m2 = dbtxn
             .get_group_members(uuid::uuid!("b500be97-8552-42a5-aca0-668bc5625705"))
             .unwrap();
-        assert!(m1[0].name == "testuser");
-        assert!(m2[0].name == "testuser");
+        assert_eq!(m1[0].name, "testuser");
+        assert_eq!(m2[0].name, "testuser");
 
         // Now alter testuser, remove gt2, update.
         ut1.groups = vec![gt1];
@@ -1152,7 +1152,7 @@ mod tests {
         let m2 = dbtxn
             .get_group_members(uuid::uuid!("b500be97-8552-42a5-aca0-668bc5625705"))
             .unwrap();
-        assert!(m1[0].name == "testuser");
+        assert_eq!(m1[0].name, "testuser");
         assert!(m2.is_empty());
 
         assert!(dbtxn.commit().is_ok());
@@ -1193,7 +1193,10 @@ mod tests {
         // test adding a group
         dbtxn.update_group(&gt1, 0).unwrap();
         let r0 = dbtxn.get_group(&id_name).unwrap();
-        assert!(r0.unwrap().0.uuid == uuid::uuid!("0302b99c-f0f6-41ab-9492-852692b0fd16"));
+        assert_eq!(
+            r0.unwrap().0.uuid,
+            uuid::uuid!("0302b99c-f0f6-41ab-9492-852692b0fd16")
+        );
 
         // Do the "rename" of gt1 which is what would allow gt2 to be valid.
         gt1.name = "testgroup2".to_string();
@@ -1201,7 +1204,10 @@ mod tests {
         // Now, add gt2 which dups on gt1 name/spn.
         dbtxn.update_group(&gt2, 0).unwrap();
         let r2 = dbtxn.get_group(&id_name).unwrap();
-        assert!(r2.unwrap().0.uuid == uuid::uuid!("799123b2-3802-4b19-b0b8-1ffae2aa9a4b"));
+        assert_eq!(
+            r2.unwrap().0.uuid,
+            uuid::uuid!("799123b2-3802-4b19-b0b8-1ffae2aa9a4b")
+        );
         let r3 = dbtxn.get_group(&id_name2).unwrap();
         assert!(r3.is_none());
 
@@ -1210,9 +1216,15 @@ mod tests {
 
         // Both now coexist
         let r4 = dbtxn.get_group(&id_name).unwrap();
-        assert!(r4.unwrap().0.uuid == uuid::uuid!("799123b2-3802-4b19-b0b8-1ffae2aa9a4b"));
+        assert_eq!(
+            r4.unwrap().0.uuid,
+            uuid::uuid!("799123b2-3802-4b19-b0b8-1ffae2aa9a4b")
+        );
         let r5 = dbtxn.get_group(&id_name2).unwrap();
-        assert!(r5.unwrap().0.uuid == uuid::uuid!("0302b99c-f0f6-41ab-9492-852692b0fd16"));
+        assert_eq!(
+            r5.unwrap().0.uuid,
+            uuid::uuid!("0302b99c-f0f6-41ab-9492-852692b0fd16")
+        );
 
         assert!(dbtxn.commit().is_ok());
     }
@@ -1262,7 +1274,10 @@ mod tests {
         // test adding an account
         dbtxn.update_account(&ut1, 0).unwrap();
         let r0 = dbtxn.get_account(&id_name).unwrap();
-        assert!(r0.unwrap().0.uuid == uuid::uuid!("0302b99c-f0f6-41ab-9492-852692b0fd16"));
+        assert_eq!(
+            r0.unwrap().0.uuid,
+            uuid::uuid!("0302b99c-f0f6-41ab-9492-852692b0fd16")
+        );
 
         // Do the "rename" of gt1 which is what would allow gt2 to be valid.
         ut1.name = "testuser2".to_string();
@@ -1270,7 +1285,10 @@ mod tests {
         // Now, add gt2 which dups on gt1 name/spn.
         dbtxn.update_account(&ut2, 0).unwrap();
         let r2 = dbtxn.get_account(&id_name).unwrap();
-        assert!(r2.unwrap().0.uuid == uuid::uuid!("799123b2-3802-4b19-b0b8-1ffae2aa9a4b"));
+        assert_eq!(
+            r2.unwrap().0.uuid,
+            uuid::uuid!("799123b2-3802-4b19-b0b8-1ffae2aa9a4b")
+        );
         let r3 = dbtxn.get_account(&id_name2).unwrap();
         assert!(r3.is_none());
 
@@ -1279,9 +1297,15 @@ mod tests {
 
         // Both now coexist
         let r4 = dbtxn.get_account(&id_name).unwrap();
-        assert!(r4.unwrap().0.uuid == uuid::uuid!("799123b2-3802-4b19-b0b8-1ffae2aa9a4b"));
+        assert_eq!(
+            r4.unwrap().0.uuid,
+            uuid::uuid!("799123b2-3802-4b19-b0b8-1ffae2aa9a4b")
+        );
         let r5 = dbtxn.get_account(&id_name2).unwrap();
-        assert!(r5.unwrap().0.uuid == uuid::uuid!("0302b99c-f0f6-41ab-9492-852692b0fd16"));
+        assert_eq!(
+            r5.unwrap().0.uuid,
+            uuid::uuid!("0302b99c-f0f6-41ab-9492-852692b0fd16")
+        );
 
         assert!(dbtxn.commit().is_ok());
     }
diff --git a/unix_integration/resolver/tests/cache_layer_test.rs b/unix_integration/resolver/tests/cache_layer_test.rs
index d356d3612..e4e5df9a1 100644
--- a/unix_integration/resolver/tests/cache_layer_test.rs
+++ b/unix_integration/resolver/tests/cache_layer_test.rs
@@ -250,7 +250,7 @@ async fn test_cache_sshkey() {
         .get_sshkeys("testaccount1")
         .await
         .expect("Failed to get from cache.");
-    assert!(sk.len() == 1);
+    assert_eq!(sk.len(), 1);
 
     // Go offline, and get from cache.
     cachelayer.mark_offline().await;
@@ -258,7 +258,7 @@ async fn test_cache_sshkey() {
         .get_sshkeys("testaccount1")
         .await
         .expect("Failed to get from cache.");
-    assert!(sk.len() == 1);
+    assert_eq!(sk.len(), 1);
 }
 
 #[tokio::test]
@@ -285,7 +285,7 @@ async fn test_cache_account() {
     assert!(ut.is_some());
 
     // #392: Check that a `shell=None` is set to `default_shell`.
-    assert!(ut.unwrap().shell == *DEFAULT_SHELL);
+    assert_eq!(ut.unwrap().shell, *DEFAULT_SHELL);
 
     // go offline
     cachelayer.mark_offline().await;
@@ -302,7 +302,7 @@ async fn test_cache_account() {
         .get_nssaccounts()
         .await
         .expect("failed to list all accounts");
-    assert!(us.len() == 1);
+    assert_eq!(us.len(), 1);
 }
 
 #[tokio::test]
@@ -359,14 +359,14 @@ async fn test_cache_group() {
         .expect("Failed to get from cache");
     assert!(gt.is_some());
     // And check we have members in the group, since we came from a userlook up
-    assert!(gt.unwrap().members.len() == 1);
+    assert_eq!(gt.unwrap().members.len(), 1);
 
     // Finally, check we have "all groups" in the list.
     let gs = cachelayer
         .get_nssgroups()
         .await
         .expect("failed to list all groups");
-    assert!(gs.len() == 2);
+    assert_eq!(gs.len(), 2);
 }
 
 #[tokio::test]
@@ -453,7 +453,7 @@ async fn test_cache_account_password() {
         .pam_account_authenticate("testaccount1", TESTACCOUNT1_PASSWORD_INC)
         .await
         .expect("failed to authenticate");
-    assert!(a1 == Some(false));
+    assert_eq!(a1, Some(false));
 
     // We have to wait due to softlocking.
     tokio::time::sleep(Duration::from_secs(1)).await;
@@ -463,7 +463,7 @@ async fn test_cache_account_password() {
         .pam_account_authenticate("testaccount1", TESTACCOUNT1_PASSWORD_A)
         .await
         .expect("failed to authenticate");
-    assert!(a2 == Some(true));
+    assert_eq!(a2, Some(true));
 
     // change pw
     adminclient
@@ -480,7 +480,7 @@ async fn test_cache_account_password() {
         .pam_account_authenticate("testaccount1", TESTACCOUNT1_PASSWORD_A)
         .await
         .expect("failed to authenticate");
-    assert!(a3 == Some(false));
+    assert_eq!(a3, Some(false));
 
     // We have to wait due to softlocking.
     tokio::time::sleep(Duration::from_secs(1)).await;
@@ -490,7 +490,7 @@ async fn test_cache_account_password() {
         .pam_account_authenticate("testaccount1", TESTACCOUNT1_PASSWORD_B)
         .await
         .expect("failed to authenticate");
-    assert!(a4 == Some(true));
+    assert_eq!(a4, Some(true));
 
     // Go offline.
     cachelayer.mark_offline().await;
@@ -500,7 +500,7 @@ async fn test_cache_account_password() {
         .pam_account_authenticate("testaccount1", TESTACCOUNT1_PASSWORD_B)
         .await
         .expect("failed to authenticate");
-    assert!(a5 == Some(true));
+    assert_eq!(a5, Some(true));
 
     // No softlock during offline.
 
@@ -509,7 +509,7 @@ async fn test_cache_account_password() {
         .pam_account_authenticate("testaccount1", TESTACCOUNT1_PASSWORD_INC)
         .await
         .expect("failed to authenticate");
-    assert!(a6 == Some(false));
+    assert_eq!(a6, Some(false));
 
     // clear cache
     cachelayer
@@ -533,7 +533,7 @@ async fn test_cache_account_password() {
         .pam_account_authenticate("testaccount1", TESTACCOUNT1_PASSWORD_B)
         .await
         .expect("failed to authenticate");
-    assert!(a8 == Some(true));
+    assert_eq!(a8, Some(true));
 }
 
 #[tokio::test]
@@ -546,7 +546,7 @@ async fn test_cache_account_pam_allowed() {
         .pam_account_allowed("testaccount1")
         .await
         .expect("failed to authenticate");
-    assert!(a1 == Some(false));
+    assert_eq!(a1, Some(false));
 
     adminclient
         .auth_simple_password("admin", ADMIN_TEST_PASSWORD)
@@ -565,7 +565,7 @@ async fn test_cache_account_pam_allowed() {
         .pam_account_allowed("testaccount1")
         .await
         .expect("failed to authenticate");
-    assert!(a2 == Some(true));
+    assert_eq!(a2, Some(true));
 }
 
 #[tokio::test]
@@ -611,7 +611,7 @@ async fn test_cache_account_expiry() {
         .pam_account_authenticate("testaccount1", TESTACCOUNT1_PASSWORD_A)
         .await
         .expect("failed to authenticate");
-    assert!(a1 == Some(true));
+    assert_eq!(a1, Some(true));
     // Invalidate to make sure we go online next checks.
     assert!(cachelayer.invalidate().await.is_ok());
 
@@ -629,7 +629,7 @@ async fn test_cache_account_expiry() {
         .pam_account_authenticate("testaccount1", TESTACCOUNT1_PASSWORD_A)
         .await
         .expect("failed to authenticate");
-    assert!(a2 == Some(false));
+    assert_eq!(a2, Some(false));
 
     // ssh keys should be empty
     let sk = cachelayer
@@ -643,7 +643,7 @@ async fn test_cache_account_expiry() {
         .pam_account_allowed("testaccount1")
         .await
         .expect("failed to authenticate");
-    assert!(a3 == Some(false));
+    assert_eq!(a3, Some(false));
 
     // go offline
     cachelayer.mark_offline().await;
@@ -654,7 +654,7 @@ async fn test_cache_account_expiry() {
         .pam_account_authenticate("testaccount1", TESTACCOUNT1_PASSWORD_A)
         .await
         .expect("failed to authenticate");
-    assert!(a4 == Some(true));
+    assert_eq!(a4, Some(true));
 
     // ssh keys should be empty
     let sk = cachelayer
@@ -668,7 +668,7 @@ async fn test_cache_account_expiry() {
         .pam_account_allowed("testaccount1")
         .await
         .expect("failed to authenticate");
-    assert!(a5 == Some(false));
+    assert_eq!(a5, Some(false));
 }
 
 #[tokio::test]
@@ -916,7 +916,7 @@ async fn test_cache_group_fk_deferred() {
         .await
         .expect("Failed to get from cache");
     assert!(gt.is_some());
-    assert!(gt.unwrap().members.len() == 1);
+    assert_eq!(gt.unwrap().members.len(), 1);
 
     // Invalidate all items.
     cachelayer.mark_offline().await;
@@ -931,5 +931,5 @@ async fn test_cache_group_fk_deferred() {
         .expect("Failed to get from cache");
     assert!(gt.is_some());
     // And check we have members in the group, since we came from a userlook up
-    assert!(gt.unwrap().members.len() == 1);
+    assert_eq!(gt.unwrap().members.len(), 1);
 }