about summary refs log tree commit diff
path: root/spec
diff options
context:
space:
mode:
authorpluralcafe-docker <git@plural.cafe>2019-01-16 19:42:48 +0000
committerpluralcafe-docker <git@plural.cafe>2019-01-16 19:42:48 +0000
commitd899138556513c8a5fa3397606ecc4752b7c6785 (patch)
tree043d220748575a444b8628d8c4bf2e5225a92a00 /spec
parenta6e0ff72f552dc172c18f5a10bbca071b067ab51 (diff)
parentfb7ec403227690f897a9a693f2461b94bf7e2582 (diff)
Merge branch 'master' into production
Diffstat (limited to 'spec')
-rw-r--r--spec/fixtures/requests/oembed_json_empty.html7
-rw-r--r--spec/models/admin/account_action_spec.rb127
-rw-r--r--spec/models/admin/action_log_spec.rb8
-rw-r--r--spec/rails_helper.rb1
-rw-r--r--spec/services/fetch_oembed_service_spec.rb18
5 files changed, 160 insertions, 1 deletions
diff --git a/spec/fixtures/requests/oembed_json_empty.html b/spec/fixtures/requests/oembed_json_empty.html
new file mode 100644
index 000000000..4b02413aa
--- /dev/null
+++ b/spec/fixtures/requests/oembed_json_empty.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <link href='https://host.test/empty_provider.json' rel='alternate' type='application/json+oembed'>
+  </head>
+  <body></body>
+</html>
diff --git a/spec/models/admin/account_action_spec.rb b/spec/models/admin/account_action_spec.rb
index 8c55cf4dd..a3db60cfc 100644
--- a/spec/models/admin/account_action_spec.rb
+++ b/spec/models/admin/account_action_spec.rb
@@ -1,4 +1,131 @@
 require 'rails_helper'
 
 RSpec.describe Admin::AccountAction, type: :model do
+  let(:account_action) { described_class.new }
+
+  describe '#save!' do
+    subject              { account_action.save! }
+    let(:account)        { Fabricate(:account, user: Fabricate(:user, admin: true)) }
+    let(:target_account) { Fabricate(:account, user: Fabricate(:user)) }
+    let(:type)           { 'disable' }
+
+    before do
+      account_action.assign_attributes(
+        type:            type,
+        current_account: account,
+        target_account:  target_account
+      )
+    end
+
+    context 'type is "disable"' do
+      let(:type) { 'disable' }
+
+      it 'disable user' do
+        subject
+        expect(target_account.user).to be_disabled
+      end
+    end
+
+    context 'type is "silence"' do
+      let(:type) { 'silence' }
+
+      it 'silences account' do
+        subject
+        expect(target_account).to be_silenced
+      end
+    end
+
+    context 'type is "suspend"' do
+      let(:type) { 'suspend' }
+
+      it 'suspends account' do
+        subject
+        expect(target_account).to be_suspended
+      end
+
+      it 'queues Admin::SuspensionWorker by 1' do
+        Sidekiq::Testing.fake! do
+          expect do
+            subject
+          end.to change { Admin::SuspensionWorker.jobs.size }.by 1
+        end
+      end
+    end
+
+    it 'creates Admin::ActionLog' do
+      expect do
+        subject
+      end.to change { Admin::ActionLog.count }.by 1
+    end
+
+    it 'calls queue_email!' do
+      expect(account_action).to receive(:queue_email!)
+      subject
+    end
+
+    it 'calls process_reports!' do
+      expect(account_action).to receive(:process_reports!)
+      subject
+    end
+  end
+
+  describe '#report' do
+    subject { account_action.report }
+
+    context 'report_id.present?' do
+      before do
+        account_action.report_id = Fabricate(:report).id
+      end
+
+      it 'returns Report' do
+        expect(subject).to be_instance_of Report
+      end
+    end
+
+    context '!report_id.present?' do
+      it 'returns nil' do
+        expect(subject).to be_nil
+      end
+    end
+  end
+
+  describe '#with_report?' do
+    subject { account_action.with_report? }
+
+    context '!report.nil?' do
+      before do
+        account_action.report_id = Fabricate(:report).id
+      end
+
+      it 'returns true' do
+        expect(subject).to be true
+      end
+    end
+
+    context '!(!report.nil?)' do
+      it 'returns false' do
+        expect(subject).to be false
+      end
+    end
+  end
+
+  describe '.types_for_account' do
+    subject { described_class.types_for_account(account) }
+
+    context 'account.local?' do
+      let(:account) { Fabricate(:account, domain: nil) }
+
+      it 'returns ["none", "disable", "silence", "suspend"]' do
+        expect(subject).to eq %w(none disable silence suspend)
+      end
+    end
+
+    context '!account.local?' do
+      let(:account) { Fabricate(:account, domain: 'hoge.com') }
+
+      it 'returns ["silence", "suspend"]' do
+        expect(subject).to eq %w(silence suspend)
+      end
+    end
+  end
 end
diff --git a/spec/models/admin/action_log_spec.rb b/spec/models/admin/action_log_spec.rb
index 81d7e1be3..3495cc514 100644
--- a/spec/models/admin/action_log_spec.rb
+++ b/spec/models/admin/action_log_spec.rb
@@ -1,4 +1,12 @@
+# frozen_string_literal: true
+
 require 'rails_helper'
 
 RSpec.describe Admin::ActionLog, type: :model do
+  describe '#action' do
+    it 'returns action' do
+      action_log = described_class.new(action: 'hoge')
+      expect(action_log.action).to be :hoge
+    end
+  end
 end
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 1ded751ab..3a5e7491e 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -29,7 +29,6 @@ Devise::Test::ControllerHelpers.module_eval do
       value: resource.activate_session(warden.request),
       expires: 1.year.from_now,
       httponly: true,
-      same_site: :lax,
     }
   end
 end
diff --git a/spec/services/fetch_oembed_service_spec.rb b/spec/services/fetch_oembed_service_spec.rb
index 706eb3f2a..5789fb53b 100644
--- a/spec/services/fetch_oembed_service_spec.rb
+++ b/spec/services/fetch_oembed_service_spec.rb
@@ -8,6 +8,7 @@ describe FetchOEmbedService, type: :service do
   before do
     stub_request(:get, "https://host.test/provider.json").to_return(status: 404)
     stub_request(:get, "https://host.test/provider.xml").to_return(status: 404)
+    stub_request(:get, "https://host.test/empty_provider.json").to_return(status: 200)
   end
 
   describe 'discover_provider' do
@@ -93,6 +94,23 @@ describe FetchOEmbedService, type: :service do
           expect(subject.call('https://host.test/oembed.html')).to be_nil
         end
       end
+
+      context 'Empty JSON provider is discoverable' do
+        before do
+          stub_request(:get, 'https://host.test/oembed.html').to_return(
+            status: 200,
+            headers: { 'Content-Type': 'text/html' },
+            body: request_fixture('oembed_json_empty.html')
+          )
+        end
+
+        it 'returns new OEmbed::Provider for JSON provider' do
+          subject.call('https://host.test/oembed.html')
+          expect(subject.endpoint_url).to eq 'https://host.test/empty_provider.json'
+          expect(subject.format).to eq :json
+        end
+      end
+
     end
 
     context 'when status code is not 200' do