diff --git a/src/parser_yin.c b/src/parser_yin.c
index e7e600c..c060b5b 100644
--- a/src/parser_yin.c
+++ b/src/parser_yin.c
@@ -169,15 +169,6 @@
     return LY_SUCCESS;
 }
 
-/**
- * @brief Parse namespace statement.
- *
- * @param[in] xml_ctx xml context.
- * @param[in, out] data Data to read from.
- * @param[in, out] namespace Where namespace value should be stored.
- *
- * @return LY_ERR values.
- */
 LY_ERR
 parse_namespace(struct lyxml_context *xml_ctx, const char **data, const char **namespace)
 {
@@ -186,7 +177,7 @@
     ret = yin_parse_attribute(xml_ctx, data, YIN_ARG_URI, namespace);
     LY_CHECK_RET(ret != LY_SUCCESS, ret);
 
-    return LY_SUCCESS;
+    return ret;
 }
 
 /**
diff --git a/src/parser_yin.h b/src/parser_yin.h
index 6aa08e5..01cae2b 100644
--- a/src/parser_yin.h
+++ b/src/parser_yin.h
@@ -42,5 +42,16 @@
  */
 LY_ERR parse_text_element(struct lyxml_context *xml_ctx, const char **data, const char **value);
 
+/**
+ * @brief Parse namespace statement.
+ *
+ * @param[in] xml_ctx xml context.
+ * @param[in, out] data Data to read from.
+ * @param[in, out] namespace Where namespace value should be stored.
+ *
+ * @return LY_ERR values.
+ */
+LY_ERR
+parse_namespace(struct lyxml_context *xml_ctx, const char **data, const char **namespace);
 
 #endif /* LY_PARSER_YIN_H_*/
diff --git a/tests/src/test_parser_yin.c b/tests/src/test_parser_yin.c
index 996ecb3..97d39d8 100644
--- a/tests/src/test_parser_yin.c
+++ b/tests/src/test_parser_yin.c
@@ -71,7 +71,7 @@
                         xmlns:myext=\"urn:example:extensions\">\
                         <namespace uri=\"urn:example:foo\" xmlns:myext=\"urn:example:extensions\"/>\
                         <prefix xmlns:myxt=\"urn:emple:extensions\" value=\"foo\" xmlns:myext=\"urn:example:extensions\"/>\
-                    </module>",
+                     </module>",
                 st->mod);
 
     assert_int_equal(ret, LY_SUCCESS);
@@ -223,6 +223,27 @@
     assert_int_equal(ret, LY_EVALID);
 }
 
+static void
+test_parse_namespace(void **state)
+{
+    struct state *st = *state;
+    const char *res = NULL, *prefix = NULL, *name = NULL;
+    size_t prefix_len = 0, name_len = 0;
+    LY_ERR ret = LY_SUCCESS;
+
+    const char *data = "<namespace uri=\"urn:example:foo\"/>";
+    lyxml_get_element(st->xml_ctx, &data, &prefix, &prefix_len, &name, &name_len);
+    ret = parse_namespace(st->xml_ctx, &data, &res);
+    assert_int_equal(ret, LY_SUCCESS);
+    assert_string_equal(res, "urn:example:foo");
+    lydict_remove(st->ctx, "urn:example:foo");
+
+    data = "<namespace urr=\"urn:example:foo\"/>";
+    lyxml_get_element(st->xml_ctx, &data, &prefix, &prefix_len, &name, &name_len);
+    ret = parse_namespace(st->xml_ctx, &data, &res);
+    assert_int_equal(ret, LY_EVALID);
+}
+
 int
 main(void)
 {
@@ -231,6 +252,7 @@
         cmocka_unit_test_setup_teardown(test_parse, setup_f, teardown_f),
         cmocka_unit_test_setup_teardown(test_meta, setup_f, teardown_f),
         cmocka_unit_test_setup_teardown(test_parse_text_element, setup_f, teardown_f),
+        cmocka_unit_test_setup_teardown(test_parse_namespace, setup_f, teardown_f),
         cmocka_unit_test(test_match_keyword),
         cmocka_unit_test(test_match_argument),
     };
