diff --git a/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs b/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs
index feb343cd184b07d51d395575e9506b47e650a59c..f7467970c82c25b156ea10ae30fbf651f00c3f76 100644
--- a/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs
+++ b/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs
@@ -144,3 +144,101 @@ pub fn verify_block_validity<W: WebOfTrust>(
 
     Ok(())
 }
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use dubp_documents_tests_tools::mocks::*;
+    use dup_crypto_tests_tools::mocks::*;
+    use durs_blockchain_dal::entities::block::DALBlock;
+    use durs_blockchain_dal::entities::identity::*;
+
+    #[test]
+    fn test_verify_blocks() {
+        let blocks_dbs = BlocksV10DBs::open(None);
+        let wot_dbs = WotsV10DBs::open(None);
+        let wot_index: HashMap<PubKey, NodeId> = HashMap::new();
+
+        let idty_a = identity::gen_mock_idty(pubkey('A'), BlockId(0));
+        let pubkey_a = idty_a.issuers()[0];
+
+        let idty_b = identity::gen_mock_idty(pubkey('B'), BlockId(0));
+        let pubkey_b = idty_b.issuers()[0];
+
+        let mut blocks = gen_empty_timed_blocks(2, 300);
+
+        // Valid block 0
+        blocks[0].issuers_frame = 1;
+        blocks[0].issuers.push(pubkey_a);
+        blocks[0].identities.push(idty_a.clone());
+        blocks[0].identities.push(idty_b.clone());
+
+        verify_genesis_block_validity(&blocks[0]).expect("Fail to valid genesis block");
+
+        blocks_dbs
+            .blockchain_db
+            .write(|db| {
+                db.insert(
+                    blocks[0].number,
+                    DALBlock {
+                        block: blocks[0].clone(),
+                        expire_certs: None,
+                    },
+                );
+            })
+            .expect("Fail write to blockchain db");
+
+        wot_dbs
+            .identities_db
+            .write(|db| {
+                db.insert(
+                    pubkey_a,
+                    DALIdentity {
+                        hash: String::new(),
+                        state: DALIdentityState::Member(vec![]),
+                        joined_on: blocks[0].blockstamp(),
+                        expired_on: None,
+                        revoked_on: None,
+                        idty_doc: idty_a,
+                        wot_id: NodeId(0),
+                        ms_created_block_id: blocks[0].number,
+                        ms_chainable_on: vec![0],
+                        cert_chainable_on: vec![0],
+                    },
+                );
+                db.insert(
+                    pubkey_b,
+                    DALIdentity {
+                        hash: String::new(),
+                        state: DALIdentityState::Member(vec![]),
+                        joined_on: blocks[0].blockstamp(),
+                        expired_on: None,
+                        revoked_on: None,
+                        idty_doc: idty_b,
+                        wot_id: NodeId(1),
+                        ms_created_block_id: blocks[0].number,
+                        ms_chainable_on: vec![0],
+                        cert_chainable_on: vec![0],
+                    },
+                );
+            })
+            .expect("Fail write to idty db");
+
+        // Valid block 1
+        blocks[1].issuers_count = 1;
+        blocks[1].issuers_frame = 1;
+        blocks[1].issuers_frame_var = 5;
+        blocks[1].issuers.push(pubkey_b);
+        blocks[1].previous_issuer = Some(pubkey_a);
+
+        verify_block_validity(
+            &blocks[1],
+            &blocks_dbs.blockchain_db,
+            &wot_dbs.identities_db,
+            &wot_dbs.certs_db,
+            &wot_index,
+            &wot_dbs.wot_db,
+        )
+        .expect("Fail to valid block");
+    }
+}