schema BUGFIX accessing extension plugins

The plugin in extension is not mandatory, so be more careful when
accessing plugin's callbacks and check that the plugin is actually
present.

Fixes #1492
diff --git a/tests/utests/basic/test_plugins.c b/tests/utests/basic/test_plugins.c
index 81a991d..ebb835c 100644
--- a/tests/utests/basic/test_plugins.c
+++ b/tests/utests/basic/test_plugins.c
@@ -138,6 +138,35 @@
     lyd_free_all(tree);
 }
 
+static void
+test_not_implemented(void **state)
+{
+    const struct lys_module *mod;
+    struct lyd_node *tree;
+    const char *schema = "module libyang-plugins-unknown {"
+            "  namespace urn:libyang:tests:plugins:unknown;"
+            "  prefix u;"
+            "  extension myext;"
+            "  typedef mytype { type string;}"
+            "  leaf test {"
+            "    u:myext;"
+            "    type mytype;"
+            "  }"
+            "}";
+    const char *data = "<test xmlns=\"urn:libyang:tests:plugins:unknown\">xxx</test>";
+    char *printed = NULL;
+
+    UTEST_ADD_MODULE(schema, LYS_IN_YANG, NULL, &mod);
+
+    assert_int_equal(LY_SUCCESS, lys_print_mem(&printed, mod, LYS_OUT_YANG_COMPILED, 0));
+    free(printed);
+
+    assert_int_equal(LY_SUCCESS, lyd_parse_data_mem(UTEST_LYCTX, data, LYD_XML, 0, LYD_VALIDATE_PRESENT, &tree));
+    CHECK_LOG_CTX(NULL, NULL);
+
+    lyd_free_all(tree);
+}
+
 int
 main(void)
 {
@@ -145,6 +174,7 @@
         UTEST(test_add_invalid),
         UTEST(test_add_simple),
         UTEST(test_validation),
+        UTEST(test_not_implemented),
     };
 
     return cmocka_run_group_tests(tests, NULL, NULL);