about summary refs log tree commit diff
path: root/spec/controllers/api/v1
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-11-14 08:35:55 +0100
committerClaire <claire.github-309c@sitedethib.com>2022-11-14 08:35:55 +0100
commit32c70d2f09e27c474b7e20ef3e3b34f5a7f50121 (patch)
tree117e952f835329eadc0095e809427f7af5be9631 /spec/controllers/api/v1
parent81b1d32d5b618daa4003b8de8292ae4dd3e656f6 (diff)
parentb59ce0a60ff4f90bb16a8c3338ad37218af052b8 (diff)
Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `app/views/admin/announcements/edit.html.haml`:
  Upstream change too close to theming-related glitch-soc change.
  Ported upstream changes.
- `app/views/admin/announcements/new.html.haml`
  Upstream change too close to theming-related glitch-soc change.
  Ported upstream changes.
Diffstat (limited to 'spec/controllers/api/v1')
-rw-r--r--spec/controllers/api/v1/admin/domain_allows_controller_spec.rb44
-rw-r--r--spec/controllers/api/v1/filters/keywords_controller_spec.rb142
-rw-r--r--spec/controllers/api/v1/filters/statuses_controller_spec.rb116
3 files changed, 28 insertions, 274 deletions
diff --git a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb
index 26a391a60..8100363f6 100644
--- a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb
@@ -94,25 +94,37 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do
   describe 'POST #create' do
     let!(:domain_allow) { Fabricate(:domain_allow, domain: 'example.com') }
 
-    before do
-      post :create, params: { domain: 'foo.bar.com' }
-    end
-
-    it_behaves_like 'forbidden for wrong scope', 'write:statuses'
-    it_behaves_like 'forbidden for wrong role', ''
-    it_behaves_like 'forbidden for wrong role', 'Moderator'
-
-    it 'returns http success' do
-      expect(response).to have_http_status(200)
+    context do
+      before do
+        post :create, params: { domain: 'foo.bar.com' }
+      end
+
+      it_behaves_like 'forbidden for wrong scope', 'write:statuses'
+      it_behaves_like 'forbidden for wrong role', ''
+      it_behaves_like 'forbidden for wrong role', 'Moderator'
+
+      it 'returns http success' do
+        expect(response).to have_http_status(200)
+      end
+
+      it 'returns expected domain name' do
+        json = body_as_json
+        expect(json[:domain]).to eq 'foo.bar.com'
+      end
+
+      it 'creates a domain block' do
+        expect(DomainAllow.find_by(domain: 'foo.bar.com')).to_not be_nil
+      end
     end
 
-    it 'returns expected domain name' do
-      json = body_as_json
-      expect(json[:domain]).to eq 'foo.bar.com'
-    end
+    context 'with invalid domain name' do
+      before do
+        post :create, params: { domain: 'foo bar' }
+      end
 
-    it 'creates a domain block' do
-      expect(DomainAllow.find_by(domain: 'foo.bar.com')).to_not be_nil
+      it 'returns http unprocessable entity' do
+        expect(response).to have_http_status(422)
+      end
     end
   end
 end
diff --git a/spec/controllers/api/v1/filters/keywords_controller_spec.rb b/spec/controllers/api/v1/filters/keywords_controller_spec.rb
deleted file mode 100644
index aecb4e41c..000000000
--- a/spec/controllers/api/v1/filters/keywords_controller_spec.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Api::V1::Filters::KeywordsController, type: :controller do
-  render_views
-
-  let(:user)         { Fabricate(:user) }
-  let(:token)        { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
-  let(:filter)       { Fabricate(:custom_filter, account: user.account) }
-  let(:other_user)   { Fabricate(:user) }
-  let(:other_filter) { Fabricate(:custom_filter, account: other_user.account) }
-
-  before do
-    allow(controller).to receive(:doorkeeper_token) { token }
-  end
-
-  describe 'GET #index' do
-    let(:scopes) { 'read:filters' }
-    let!(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) }
-
-    it 'returns http success' do
-      get :index, params: { filter_id: filter.id }
-      expect(response).to have_http_status(200)
-    end
-
-    context "when trying to access another's user filters" do
-      it 'returns http not found' do
-        get :index, params: { filter_id: other_filter.id }
-        expect(response).to have_http_status(404)
-      end
-    end
-  end
-
-  describe 'POST #create' do
-    let(:scopes)    { 'write:filters' }
-    let(:filter_id) { filter.id }
-
-    before do
-      post :create, params: { filter_id: filter_id, keyword: 'magic', whole_word: false }
-    end
-
-    it 'returns http success' do
-      expect(response).to have_http_status(200)
-    end
-
-    it 'returns a keyword' do
-      json = body_as_json
-      expect(json[:keyword]).to eq 'magic'
-      expect(json[:whole_word]).to eq false
-    end
-
-    it 'creates a keyword' do
-      filter = user.account.custom_filters.first
-      expect(filter).to_not be_nil
-      expect(filter.keywords.pluck(:keyword)).to eq ['magic']
-    end
-
-    context "when trying to add to another another's user filters" do
-      let(:filter_id) { other_filter.id }
-
-      it 'returns http not found' do
-        expect(response).to have_http_status(404)
-      end
-    end
-  end
-
-  describe 'GET #show' do
-    let(:scopes)  { 'read:filters' }
-    let(:keyword) { Fabricate(:custom_filter_keyword, keyword: 'foo', whole_word: false, custom_filter: filter) }
-
-    before do
-      get :show, params: { id: keyword.id }
-    end
-
-    it 'returns http success' do
-      expect(response).to have_http_status(200)
-    end
-
-    it 'returns expected data' do
-      json = body_as_json
-      expect(json[:keyword]).to eq 'foo'
-      expect(json[:whole_word]).to eq false
-    end
-
-    context "when trying to access another user's filter keyword" do
-      let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: other_filter) }
-
-      it 'returns http not found' do
-        expect(response).to have_http_status(404)
-      end
-    end
-  end
-
-  describe 'PUT #update' do
-    let(:scopes)  { 'write:filters' }
-    let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) }
-
-    before do
-      get :update, params: { id: keyword.id, keyword: 'updated' }
-    end
-
-    it 'returns http success' do
-      expect(response).to have_http_status(200)
-    end
-
-    it 'updates the keyword' do
-      expect(keyword.reload.keyword).to eq 'updated'
-    end
-
-    context "when trying to update another user's filter keyword" do
-      let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: other_filter) }
-
-      it 'returns http not found' do
-        expect(response).to have_http_status(404)
-      end
-    end
-  end
-
-  describe 'DELETE #destroy' do
-    let(:scopes)  { 'write:filters' }
-    let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) }
-
-    before do
-      delete :destroy, params: { id: keyword.id }
-    end
-
-    it 'returns http success' do
-      expect(response).to have_http_status(200)
-    end
-
-    it 'removes the filter' do
-      expect { keyword.reload }.to raise_error ActiveRecord::RecordNotFound
-    end
-
-    context "when trying to update another user's filter keyword" do
-      let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: other_filter) }
-
-      it 'returns http not found' do
-        expect(response).to have_http_status(404)
-      end
-    end
-  end
-end
diff --git a/spec/controllers/api/v1/filters/statuses_controller_spec.rb b/spec/controllers/api/v1/filters/statuses_controller_spec.rb
deleted file mode 100644
index 3b2399dd8..000000000
--- a/spec/controllers/api/v1/filters/statuses_controller_spec.rb
+++ /dev/null
@@ -1,116 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Api::V1::Filters::StatusesController, type: :controller do
-  render_views
-
-  let(:user)         { Fabricate(:user) }
-  let(:token)        { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
-  let(:filter)       { Fabricate(:custom_filter, account: user.account) }
-  let(:other_user)   { Fabricate(:user) }
-  let(:other_filter) { Fabricate(:custom_filter, account: other_user.account) }
-
-  before do
-    allow(controller).to receive(:doorkeeper_token) { token }
-  end
-
-  describe 'GET #index' do
-    let(:scopes) { 'read:filters' }
-    let!(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) }
-
-    it 'returns http success' do
-      get :index, params: { filter_id: filter.id }
-      expect(response).to have_http_status(200)
-    end
-
-    context "when trying to access another's user filters" do
-      it 'returns http not found' do
-        get :index, params: { filter_id: other_filter.id }
-        expect(response).to have_http_status(404)
-      end
-    end
-  end
-
-  describe 'POST #create' do
-    let(:scopes)    { 'write:filters' }
-    let(:filter_id) { filter.id }
-    let!(:status)   { Fabricate(:status) }
-
-    before do
-      post :create, params: { filter_id: filter_id, status_id: status.id }
-    end
-
-    it 'returns http success' do
-      expect(response).to have_http_status(200)
-    end
-
-    it 'returns a status filter' do
-      json = body_as_json
-      expect(json[:status_id]).to eq status.id.to_s
-    end
-
-    it 'creates a status filter' do
-      filter = user.account.custom_filters.first
-      expect(filter).to_not be_nil
-      expect(filter.statuses.pluck(:status_id)).to eq [status.id]
-    end
-
-    context "when trying to add to another another's user filters" do
-      let(:filter_id) { other_filter.id }
-
-      it 'returns http not found' do
-        expect(response).to have_http_status(404)
-      end
-    end
-  end
-
-  describe 'GET #show' do
-    let(:scopes)  { 'read:filters' }
-    let!(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) }
-
-    before do
-      get :show, params: { id: status_filter.id }
-    end
-
-    it 'returns http success' do
-      expect(response).to have_http_status(200)
-    end
-
-    it 'returns expected data' do
-      json = body_as_json
-      expect(json[:status_id]).to eq status_filter.status_id.to_s
-    end
-
-    context "when trying to access another user's filter keyword" do
-      let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: other_filter) }
-
-      it 'returns http not found' do
-        expect(response).to have_http_status(404)
-      end
-    end
-  end
-
-  describe 'DELETE #destroy' do
-    let(:scopes)  { 'write:filters' }
-    let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) }
-
-    before do
-      delete :destroy, params: { id: status_filter.id }
-    end
-
-    it 'returns http success' do
-      expect(response).to have_http_status(200)
-    end
-
-    it 'removes the filter' do
-      expect { status_filter.reload }.to raise_error ActiveRecord::RecordNotFound
-    end
-
-    context "when trying to update another user's filter keyword" do
-      let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: other_filter) }
-
-      it 'returns http not found' do
-        expect(response).to have_http_status(404)
-      end
-    end
-  end
-end