diff --git a/pallets/smith-members/src/tests.rs b/pallets/smith-members/src/tests.rs
index 224923d02e304b12ea1055775128954ff6812663..826c096a36e4d5aa63e182561cf645c086147970 100644
--- a/pallets/smith-members/src/tests.rs
+++ b/pallets/smith-members/src/tests.rs
@@ -556,6 +556,73 @@ fn certifying_on_different_status() {
     });
 }
 
+#[test]
+fn certifying_an_online_smith() {
+    new_test_ext(GenesisConfig {
+        initial_smiths: btreemap![
+            1 => (false, vec![2, 3, 4]),
+            2 => (false, vec![3, 4]),
+            3 => (false, vec![1, 2]),
+            4 => (false, vec![]),
+        ],
+    })
+    .execute_with(|| {
+        // Go online to be able to invite+certify
+        Pallet::<Runtime>::on_smith_goes_online(1);
+        Pallet::<Runtime>::on_smith_goes_online(2);
+        Pallet::<Runtime>::on_smith_goes_online(3);
+        assert_ok!(Pallet::<Runtime>::invite_smith(RuntimeOrigin::signed(1), 5));
+        assert_ok!(Pallet::<Runtime>::accept_invitation(RuntimeOrigin::signed(
+            5
+        )));
+        assert_ok!(Pallet::<Runtime>::certify_smith(
+            RuntimeOrigin::signed(1),
+            5
+        ));
+        assert_ok!(Pallet::<Runtime>::certify_smith(
+            RuntimeOrigin::signed(2),
+            5
+        ));
+        // Smith can expire
+        assert_eq!(
+            Smiths::<Runtime>::get(5),
+            Some(SmithMeta {
+                status: Smith,
+                expires_on: Some(5),
+                issued_certs: vec![],
+                received_certs: vec![1, 2]
+            })
+        );
+        Pallet::<Runtime>::on_smith_goes_online(5);
+        // After going online, the expiration disappears
+        assert_eq!(
+            Smiths::<Runtime>::get(5),
+            Some(SmithMeta {
+                status: Smith,
+                expires_on: None,
+                issued_certs: vec![],
+                received_certs: vec![1, 2]
+            })
+        );
+
+        // We can receive certification without postponing the expiration (because we are online)
+        assert_ok!(Pallet::<Runtime>::certify_smith(
+            RuntimeOrigin::signed(3),
+            5
+        ));
+        // TODO: this test currently fails because expires_on is not None
+        assert_eq!(
+            Smiths::<Runtime>::get(5),
+            Some(SmithMeta {
+                status: Smith,
+                expires_on: None,
+                issued_certs: vec![],
+                received_certs: vec![1, 2, 3]
+            })
+        );
+    });
+}
+
 #[test]
 fn invitation_on_non_wot_member() {
     new_test_ext(GenesisConfig {