diff --git a/lib/structs/events/join_rules.cpp b/lib/structs/events/join_rules.cpp
index 427c674b9698d0625acc26b06fe501ee85dd93b9..6b444b9fde635ee71d340ec6f4ef4aa9e6f58b77 100644
--- a/lib/structs/events/join_rules.cpp
+++ b/lib/structs/events/join_rules.cpp
@@ -33,7 +33,7 @@ stringToJoinRule(const std::string &rule)
                 return JoinRule::Public;
         else if (rule == "invite")
                 return JoinRule::Invite;
-        else if (rule == "Knock")
+        else if (rule == "knock")
                 return JoinRule::Knock;
 
         return JoinRule::Private;
diff --git a/tests/events.cpp b/tests/events.cpp
index 86ca1ced4c9a40d6227c9d852e171fc86767c34a..62de2d710479d6efce448320cbdc3074d47cdb70 100644
--- a/tests/events.cpp
+++ b/tests/events.cpp
@@ -332,6 +332,54 @@ TEST(StateEvents, JoinRules)
         EXPECT_EQ(event.content.join_rule, ns::state::JoinRule::Invite);
 
         EXPECT_EQ(data, json(event));
+
+        data = R"({
+          "origin_server_ts": 1506761924018,
+          "sender": "@mujx:matrix.org",
+          "event_id": "$15067619241414401ASocy:matrix.org",
+          "unsigned": {
+            "age": 3715756273
+	  },
+          "state_key": "",
+          "content": {
+            "join_rule": "public"
+	  },
+          "type": "m.room.join_rules"
+        })"_json;
+
+	EXPECT_EQ(data, json(ns::StateEvent<ns::state::JoinRules>(data)));
+
+        data = R"({
+          "origin_server_ts": 1506761924018,
+          "sender": "@mujx:matrix.org",
+          "event_id": "$15067619241414401ASocy:matrix.org",
+          "unsigned": {
+            "age": 3715756273
+	  },
+          "state_key": "",
+          "content": {
+            "join_rule": "knock"
+	  },
+          "type": "m.room.join_rules"
+        })"_json;
+
+	EXPECT_EQ(data, json(ns::StateEvent<ns::state::JoinRules>(data)));
+
+        data = R"({
+          "origin_server_ts": 1506761924018,
+          "sender": "@mujx:matrix.org",
+          "event_id": "$15067619241414401ASocy:matrix.org",
+          "unsigned": {
+            "age": 3715756273
+	  },
+          "state_key": "",
+          "content": {
+            "join_rule": "private"
+	  },
+          "type": "m.room.join_rules"
+        })"_json;
+
+	EXPECT_EQ(data, json(ns::StateEvent<ns::state::JoinRules>(data)));
 }
 
 TEST(StateEvents, Member)