diff --git a/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java b/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
index 6db7b0e..bb2753b 100644
--- a/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
+++ b/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
@@ -35,6 +35,7 @@
     public static final Integer NAME_EXISTS = 207;
     public static final Integer PASSWORD_RESET_FAILED = 208;
     // fixme: ?!
+    @Deprecated
     public static final Integer AUTHENTICATION_DENIED = 209;
 
     public static final Integer LOGIN_SUCCESSFUL = 210;
diff --git a/src/test/java/FileAuditingTest.java b/src/test/java/FileAuditingTest.java
new file mode 100644
index 0000000..5646590
--- /dev/null
+++ b/src/test/java/FileAuditingTest.java
@@ -0,0 +1,47 @@
+import de.ids_mannheim.korap.auditing.AuditRecord;
+import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.exceptions.StatusCodes;
+import org.joda.time.LocalDate;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.Date;
+
+/**
+ * @author hanl
+ * @date 27/07/2015
+ */
+//todo: test audit commit in thread and that no concurrency issue arrises
+public class FileAuditingTest {
+
+    @BeforeClass
+    public static void init() {
+        BeanConfiguration.loadClasspathContext();
+    }
+
+    @AfterClass
+    public static void finish() {
+        BeanConfiguration.closeApplication();
+        File f = new File("logs/default_audit.log");
+        assert f.length() > 0;
+    }
+
+    @Test
+    public void testAdd() {
+        for (int i = 0; i < 20; i++) {
+            AuditRecord record = AuditRecord
+                    .serviceRecord("MichaelHanl", StatusCodes.ILLEGAL_ARGUMENT,
+                            String.valueOf(i), "string value");
+            BeanConfiguration.getBeans().getAuditingProvider().audit(record);
+        }
+    }
+
+    @Test(expected = UnsupportedOperationException.class)
+    public void testRetrieval() {
+        BeanConfiguration.getBeans().getAuditingProvider()
+                .retrieveRecords(new LocalDate(new Date().getTime()), 10);
+    }
+
+}
