diff --git a/spec/controllers/snippets_controller_spec.rb b/spec/controllers/snippets_controller_spec.rb
index 41d263a46a4d64a5a7d3000e3c7a298c46d46679..2d762fdaa04899539137e6ab0e952345970b804c 100644
--- a/spec/controllers/snippets_controller_spec.rb
+++ b/spec/controllers/snippets_controller_spec.rb
@@ -116,116 +116,126 @@ describe SnippetsController do
     end
   end
 
-  describe 'GET #raw' do
-    let(:user) { create(:user) }
+  %w(raw download).each do |action|
+    describe "GET #{action}" do
+      context 'when the personal snippet is private' do
+        let(:personal_snippet) { create(:personal_snippet, :private, author: user) }
+
+        context 'when signed in' do
+          before do
+            sign_in(user)
+          end
 
-    context 'when the personal snippet is private' do
-      let(:personal_snippet) { create(:personal_snippet, :private, author: user) }
+          context 'when signed in user is not the author' do
+            let(:other_author) { create(:author) }
+            let(:other_personal_snippet) { create(:personal_snippet, :private, author: other_author) }
 
-      context 'when signed in' do
-        before do
-          sign_in(user)
-        end
+            it 'responds with status 404' do
+              get action, id: other_personal_snippet.to_param
 
-        context 'when signed in user is not the author' do
-          let(:other_author) { create(:author) }
-          let(:other_personal_snippet) { create(:personal_snippet, :private, author: other_author) }
+              expect(response).to have_http_status(404)
+            end
+          end
 
-          it 'responds with status 404' do
-            get :raw, id: other_personal_snippet.to_param
+          context 'when signed in user is the author' do
+            before { get action, id: personal_snippet.to_param }
 
-            expect(response).to have_http_status(404)
-          end
-        end
+            it 'responds with status 200' do
+              expect(assigns(:snippet)).to eq(personal_snippet)
+              expect(response).to have_http_status(200)
+            end
 
-        context 'when signed in user is the author' do
-          it 'renders the raw snippet' do
-            get :raw, id: personal_snippet.to_param
+            it 'has expected headers' do
+              expect(response.header['Content-Type']).to eq('text/plain; charset=utf-8')
 
-            expect(assigns(:snippet)).to eq(personal_snippet)
-            expect(response).to have_http_status(200)
+              if action == :download
+                expect(response.header['Content-Disposition']).to match(/attachment/)
+              elsif action == :raw
+                expect(response.header['Content-Disposition']).to match(/inline/)
+              end
+            end
           end
         end
-      end
 
-      context 'when not signed in' do
-        it 'redirects to the sign in page' do
-          get :raw, id: personal_snippet.to_param
+        context 'when not signed in' do
+          it 'redirects to the sign in page' do
+            get action, id: personal_snippet.to_param
 
-          expect(response).to redirect_to(new_user_session_path)
+            expect(response).to redirect_to(new_user_session_path)
+          end
         end
       end
-    end
 
-    context 'when the personal snippet is internal' do
-      let(:personal_snippet) { create(:personal_snippet, :internal, author: user) }
+      context 'when the personal snippet is internal' do
+        let(:personal_snippet) { create(:personal_snippet, :internal, author: user) }
 
-      context 'when signed in' do
-        before do
-          sign_in(user)
-        end
+        context 'when signed in' do
+          before do
+            sign_in(user)
+          end
 
-        it 'renders the raw snippet' do
-          get :raw, id: personal_snippet.to_param
+          it 'responds with status 200' do
+            get action, id: personal_snippet.to_param
 
-          expect(assigns(:snippet)).to eq(personal_snippet)
-          expect(response).to have_http_status(200)
+            expect(assigns(:snippet)).to eq(personal_snippet)
+            expect(response).to have_http_status(200)
+          end
         end
-      end
 
-      context 'when not signed in' do
-        it 'redirects to the sign in page' do
-          get :raw, id: personal_snippet.to_param
+        context 'when not signed in' do
+          it 'redirects to the sign in page' do
+            get action, id: personal_snippet.to_param
 
-          expect(response).to redirect_to(new_user_session_path)
+            expect(response).to redirect_to(new_user_session_path)
+          end
         end
       end
-    end
 
-    context 'when the personal snippet is public' do
-      let(:personal_snippet) { create(:personal_snippet, :public, author: user) }
+      context 'when the personal snippet is public' do
+        let(:personal_snippet) { create(:personal_snippet, :public, author: user) }
 
-      context 'when signed in' do
-        before do
-          sign_in(user)
-        end
+        context 'when signed in' do
+          before do
+            sign_in(user)
+          end
 
-        it 'renders the raw snippet' do
-          get :raw, id: personal_snippet.to_param
+          it 'responds with status 200' do
+            get action, id: personal_snippet.to_param
 
-          expect(assigns(:snippet)).to eq(personal_snippet)
-          expect(response).to have_http_status(200)
+            expect(assigns(:snippet)).to eq(personal_snippet)
+            expect(response).to have_http_status(200)
+          end
         end
-      end
 
-      context 'when not signed in' do
-        it 'renders the raw snippet' do
-          get :raw, id: personal_snippet.to_param
+        context 'when not signed in' do
+          it 'responds with status 200' do
+            get action, id: personal_snippet.to_param
 
-          expect(assigns(:snippet)).to eq(personal_snippet)
-          expect(response).to have_http_status(200)
+            expect(assigns(:snippet)).to eq(personal_snippet)
+            expect(response).to have_http_status(200)
+          end
         end
       end
-    end
 
-    context 'when the personal snippet does not exist' do
-      context 'when signed in' do
-        before do
-          sign_in(user)
-        end
+      context 'when the personal snippet does not exist' do
+        context 'when signed in' do
+          before do
+            sign_in(user)
+          end
 
-        it 'responds with status 404' do
-          get :raw, id: 'doesntexist'
+          it 'responds with status 404' do
+            get action, id: 'doesntexist'
 
-          expect(response).to have_http_status(404)
+            expect(response).to have_http_status(404)
+          end
         end
-      end
 
-      context 'when not signed in' do
-        it 'responds with status 404' do
-          get :raw, id: 'doesntexist'
+        context 'when not signed in' do
+          it 'responds with status 404' do
+            get action, id: 'doesntexist'
 
-          expect(response).to have_http_status(404)
+            expect(response).to have_http_status(404)
+          end
         end
       end
     end