diff --git a/Makefile.am b/Makefile.am
index dea382f..f1491d5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,6 +17,9 @@
 
 test_sanity_SOURCES = test/sanity.c
 
-check_PROGRAMS = test/sanity
+test_copy_flash_SOURCES = test/copy_flash.c mboxd_flash.c common.c mtd.c test/tmpf.c
+
+check_PROGRAMS = test/sanity \
+		test/copy_flash
 
 TESTS = $(check_PROGRAMS)
diff --git a/test/copy_flash.c b/test/copy_flash.c
new file mode 100644
index 0000000..14ce854
--- /dev/null
+++ b/test/copy_flash.c
@@ -0,0 +1,93 @@
+/*
+ * MBox Daemon Test File
+ *
+ * Copyright 2017 IBM
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <assert.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "common.h"
+#include "mbox.h"
+#include "mboxd_flash.h"
+
+#include "test/tmpf.h"
+
+#define TEST_SIZE 4096
+
+static struct tmpf tmp;
+
+void cleanup(void)
+{
+	tmpf_destroy(&tmp);
+}
+
+int main(void)
+{
+	struct mbox_context context;
+	ssize_t processed;
+	int rand_fd;
+	char *src;
+	char *dst;
+	int rc;
+
+	atexit(cleanup);
+
+	src = malloc(TEST_SIZE);
+	dst = malloc(TEST_SIZE);
+	if (!(src && dst)) {
+		rc = -1;
+		goto free;
+	}
+
+	rand_fd = open("/dev/urandom", O_RDONLY);
+	if (rand_fd < 0) {
+		rc = rand_fd;
+		goto free;
+	}
+
+	rc = tmpf_init(&tmp, "flashXXXXXX");
+	if (rc < 0)
+		goto free;
+
+	processed = read(rand_fd, src, TEST_SIZE);
+	if (processed != TEST_SIZE) {
+		rc = -1;
+		goto free;
+	}
+
+	processed = write(tmp.fd, src, TEST_SIZE);
+	if (processed != TEST_SIZE) {
+		rc = -1;
+		goto free;
+	}
+
+	context.fds[MTD_FD].fd = tmp.fd;
+
+	copy_flash(&context, 0, dst, TEST_SIZE);
+	assert(0 == memcmp(src, dst, TEST_SIZE));
+
+free:
+	free(src);
+	free(dst);
+
+	return rc;
+}
