diff --git a/Dockerfile b/Dockerfile
index c98345ed3b7b44969160a20588ca2e02e677db7a..da3366e7adf240e63cb175cc212d0e4b6d2285ea 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -171,7 +171,7 @@ RUN mkdir -p /var/log/supervisor
 COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
 
 # Prepare JSON Schemas
-RUN mkdir -p /usr/share/rpcd/schemas
+RUN mkdir -p /usr/share/rpcd/schemas/definitions
 #COPY cmocka_test/files/usr/share/rpcd/schemas/* /usr/share/rpcd/schemas/
 
 # Start entrypoint
diff --git a/test/schema_test.c b/test/schema_test.c
index d0eeacac62b0e6fa7878bfb654084c49b2d5ba4a..f3388dded1a870853e8e83c3bb2e9b03d8a75b0b 100644
--- a/test/schema_test.c
+++ b/test/schema_test.c
@@ -215,7 +215,7 @@ static void test_validate_output_document_blob(void **state)
     schema_validator_destroy();
 }
 
-static void test_validate_definitions_file(void **state)
+static void test_validate_definitions(void **state)
 {
     (void *) state;
 
@@ -227,17 +227,6 @@ static void test_validate_definitions_file(void **state)
     schema_validator_destroy();
 }
 
-static void test_validate_definitions_mixed(void **state)
-{
-    (void *) state;
-
-    schema_validator_init();
-
-    validate_doc_blob("/opt/work/test/files/definition/doc.json", "wifi", "status", true, SCHEMA_OUTPUT_CALL);
-    validate_doc_blob("/opt/work/test/files/definition/doc.json", "wifi", "status", true, SCHEMA_OUTPUT_CALL);
-
-    schema_validator_destroy();
-}
 
 static int create_setup(void** state) {
     printf("copy schemas\n");
@@ -270,11 +259,10 @@ static int definition_setup(void** state) {
 static int definition_teardown(void** state) {
     printf("removing schemas\n");
 	remove("/usr/share/rpcd/schemas/wifi.json");
-    remove("/usr/share/rpcd/schemas/definition.json");
+    remove("/usr/share/rpcd/schemas/definitions/definitions.json");
 	return 0;
 }
 
-
 static int mixed_setup(void** state) {
     printf("copy schemas\n");
 	cp("/usr/share/rpcd/schemas/wifi.json", "/opt/work/test/files/definition/mixed_schema.json");
@@ -286,7 +274,24 @@ static int mixed_setup(void** state) {
 static int mixed_teardown(void** state) {
     printf("removing schemas\n");
 	remove("/usr/share/rpcd/schemas/wifi.json");
-    remove("/usr/share/rpcd/schemas/definition.json");
+    remove("/usr/share/rpcd/schemas/definitions/definitions.json");
+	return 0;
+}
+
+static int multi_file_setup(void** state) {
+    printf("copy schemas\n");
+	cp("/usr/share/rpcd/schemas/wifi.json", "/opt/work/test/files/definition/multi_definition_schema.json");
+    cp("/usr/share/rpcd/schemas/definitions/definitions.json", "/opt/work/test/files/definition/intra_file_definition.json");
+    cp("/usr/share/rpcd/schemas/definitions/iface.json", "/opt/work/test/files/definition/iface.json");
+    printf("finished copying schemas\n");
+	return 0;
+}
+
+static int multi_file_teardown(void** state) {
+    printf("removing schemas\n");
+	remove("/usr/share/rpcd/schemas/wifi.json");
+    remove("/usr/share/rpcd/schemas/definitions/definitions.json");
+    remove("/usr/share/rpcd/schemas/definitions/iface.json");
 	return 0;
 }
 
@@ -299,8 +304,9 @@ int main(void) {
         cmocka_unit_test_setup_teardown(test_validate_output_document_jobj, create_setup, create_teardown),
         cmocka_unit_test_setup_teardown(test_validate_input_document_blob, create_setup, create_teardown),
         cmocka_unit_test_setup_teardown(test_validate_output_document_blob, create_setup, create_teardown),
-        cmocka_unit_test_setup_teardown(test_validate_definitions_file, definition_setup, definition_teardown),
-        cmocka_unit_test_setup_teardown(test_validate_definitions_mixed, definition_setup, definition_teardown)
+        cmocka_unit_test_setup_teardown(test_validate_definitions, definition_setup, definition_teardown),
+        cmocka_unit_test_setup_teardown(test_validate_definitions, mixed_setup, mixed_teardown),
+        cmocka_unit_test_setup_teardown(test_validate_definitions, multi_file_setup, multi_file_teardown)
 	};
 
 	return cmocka_run_group_tests(tests, NULL, NULL);