diff --git a/tests/Feature/Controllers/AttachmentControllerTest.php b/tests/Feature/Controllers/AttachmentControllerTest.php
new file mode 100644
index 0000000000..b7d84ad060
--- /dev/null
+++ b/tests/Feature/Controllers/AttachmentControllerTest.php
@@ -0,0 +1,112 @@
+be($this->user());
+ $this->call('GET', route('attachments.delete', [1]));
+ $this->assertResponseStatus(200);
+ // has bread crumb
+ $this->see('
');
+ }
+
+ /**
+ * @covers \FireflyIII\Http\Controllers\AttachmentController::destroy
+ */
+ public function testDestroy()
+ {
+ $this->session(['attachments.delete.url' => 'http://localhost']);
+
+ $repository = $this->mock(AttachmentRepositoryInterface::class);
+ $repository->shouldReceive('destroy')->andReturn(true);
+ $this->be($this->user());
+ $this->call('post', route('attachments.destroy', [1]));
+ $this->assertResponseStatus(302);
+ $this->assertSessionHas('success');
+ }
+
+ /**
+ * @covers \FireflyIII\Http\Controllers\AttachmentController::download
+ */
+ public function testDownload()
+ {
+ $repository = $this->mock(AttachmentRepositoryInterface::class);
+ $repository->shouldReceive('exists')->once()->andReturn(true);
+ $repository->shouldReceive('getContent')->once()->andReturn('This is attachment number one.');
+
+ $this->be($this->user());
+ $this->call('GET', route('attachments.download', [1]));
+ $this->assertResponseStatus(200);
+ // has bread crumb
+ $this->see('This is attachment number one.');
+ }
+
+ /**
+ * @covers \FireflyIII\Http\Controllers\AttachmentController::edit
+ */
+ public function testEdit()
+ {
+ $this->be($this->user());
+ $this->call('GET', route('attachments.edit', [1]));
+ $this->assertResponseStatus(200);
+ // has bread crumb
+ $this->see('');
+ }
+
+ /**
+ * @covers \FireflyIII\Http\Controllers\AttachmentController::preview
+ */
+ public function testPreview()
+ {
+ $this->be($this->user());
+ $this->call('GET', route('attachments.preview', [1]));
+ $this->assertResponseStatus(200);
+ }
+
+ /**
+ * @covers \FireflyIII\Http\Controllers\AttachmentController::update
+ */
+ public function testUpdate()
+ {
+ $this->session(['attachments.edit.url' => 'http://localhost']);
+ $data = [
+ 'title' => 'Some updated title ' . rand(1000, 9999),
+ 'notes' => '',
+ 'description' => '',
+ ];
+
+ $this->be($this->user());
+ $this->call('post', route('attachments.update', [1]), $data);
+ $this->assertResponseStatus(302);
+ $this->assertSessionHas('success');
+
+ // view should be updated
+ $this->be($this->user());
+ $this->call('GET', route('attachments.edit', [1]));
+ $this->assertResponseStatus(200);
+ // has bread crumb
+ $this->see('');
+ $this->see($data['title']);
+ }
+
+
+}
\ No newline at end of file