From 6654c3003351e3ee77977a9ff6e161a10b3d5afc Mon Sep 17 00:00:00 2001 From: nullkal Date: Thu, 27 Jul 2017 22:11:59 +0900 Subject: [PATCH 01/37] Fix an error when a user tries to search nonexistent remote user (regression from #4275) (#4400) --- app/services/account_search_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index c266494f0..b0c663d02 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -18,7 +18,7 @@ class AccountSearchService < BaseService return [] if query_blank_or_hashtag? || limit < 1 if resolving_non_matching_remote_account? - [ResolveRemoteAccountService.new.call("#{query_username}@#{query_domain}")] + [ResolveRemoteAccountService.new.call("#{query_username}@#{query_domain}")].compact else search_results_and_exact_match.compact.uniq.slice(0, limit) end From 97a48f237dc0c283913adfe023774358fdfc9d45 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 27 Jul 2017 22:12:51 +0900 Subject: [PATCH 02/37] Add default settings for user (#4393) --- config/settings.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/settings.yml b/config/settings.yml index d239fb6a6..2ab91a102 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -17,9 +17,11 @@ defaults: &defaults closed_registrations_message: '' open_deletion: true timeline_preview: true + default_sensitive: false + unfollow_modal: false boost_modal: false - auto_play_gif: false delete_modal: true + auto_play_gif: false system_font_ui: false noindex: false notification_emails: From bdf573d1403ff5aa662b430dbc353fd757bdaada Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Thu, 27 Jul 2017 22:13:10 +0900 Subject: [PATCH 03/37] Remove redundant fabrication in the spec for Api::V1::FavouritesController (#4391) --- spec/controllers/api/v1/favourites_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/api/v1/favourites_controller_spec.rb b/spec/controllers/api/v1/favourites_controller_spec.rb index 062e91adc..17e1ec31c 100644 --- a/spec/controllers/api/v1/favourites_controller_spec.rb +++ b/spec/controllers/api/v1/favourites_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Api::V1::FavouritesController, type: :controller do render_views - let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } + let(:user) { Fabricate(:user) } let(:token) { double acceptable?: true, resource_owner_id: user.id } before do From 5bf4838e2f77430a0f3f72a6d9eb431930a03abd Mon Sep 17 00:00:00 2001 From: Daniel Hunsaker Date: Thu, 27 Jul 2017 07:13:32 -0600 Subject: [PATCH 04/37] [nanobox] Minor tweaks for 1.5 (#4395) - Be less strict about the Ruby version, which resolves a build failure. - Add libidn as a dependency (until Nanobox adds idn-ruby to the list of gems with a dependency on it). - Remove redundant bundler commands (Nanobox's Ruby engine handles these things cleanly on its own, now). --- boxfile.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/boxfile.yml b/boxfile.yml index 330223110..59a66d87b 100644 --- a/boxfile.yml +++ b/boxfile.yml @@ -1,7 +1,7 @@ run.config: engine: ruby engine.config: - runtime: ruby-2.4.1 + runtime: ruby-2.4 extra_packages: # basic servers: @@ -20,6 +20,9 @@ run.config: # for node-gyp, used in the asset compilation process: - python-2 + # i18n: + - libidn + cache_dirs: - node_modules @@ -35,10 +38,6 @@ run.config: extra_steps: - envsubst < .env.nanobox > .env - - gem install bundler - - bundle config build.nokogiri --with-iconv-dir=/data/ --with-zlib-dir=/data/ - - bundle config build.nokogumbo --with-iconv-dir=/data/ --with-zlib-dir=/data/ - - bundle install --clean - yarn fs_watch: true From bb96ba13cf78c0bee1919c32e61bf0644c89a209 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 27 Jul 2017 22:13:49 +0900 Subject: [PATCH 05/37] Fallback to site_hostname when site_title is empty (#4394) --- app/helpers/instance_helper.rb | 2 +- spec/helpers/instance_helper_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/helpers/instance_helper.rb b/app/helpers/instance_helper.rb index a1c3c3521..70027cca9 100644 --- a/app/helpers/instance_helper.rb +++ b/app/helpers/instance_helper.rb @@ -2,7 +2,7 @@ module InstanceHelper def site_title - Setting.site_title.to_s + Setting.site_title.presence || site_hostname end def site_hostname diff --git a/spec/helpers/instance_helper_spec.rb b/spec/helpers/instance_helper_spec.rb index c3d28544f..bc5950d91 100644 --- a/spec/helpers/instance_helper_spec.rb +++ b/spec/helpers/instance_helper_spec.rb @@ -19,7 +19,7 @@ describe InstanceHelper do it 'returns empty string when Setting.site_title is nil' do Setting.site_title = nil - expect(helper.site_title).to eq '' + expect(helper.site_title).to eq 'cb6e6126.ngrok.io' end end From 4f0b638cda82810c83f89f23e83efefb60375514 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Thu, 27 Jul 2017 22:16:07 +0900 Subject: [PATCH 06/37] Introduce access token fabricators (#4401) --- .../api/v1/accounts/credentials_controller_spec.rb | 2 +- .../api/v1/accounts/follower_accounts_controller_spec.rb | 2 +- .../api/v1/accounts/following_accounts_controller_spec.rb | 2 +- .../api/v1/accounts/relationships_controller_spec.rb | 2 +- spec/controllers/api/v1/accounts/search_controller_spec.rb | 2 +- spec/controllers/api/v1/accounts/statuses_controller_spec.rb | 2 +- spec/controllers/api/v1/accounts_controller_spec.rb | 2 +- spec/controllers/api/v1/blocks_controller_spec.rb | 2 +- spec/controllers/api/v1/domain_blocks_controller_spec.rb | 2 +- spec/controllers/api/v1/favourites_controller_spec.rb | 2 +- spec/controllers/api/v1/follow_requests_controller_spec.rb | 2 +- spec/controllers/api/v1/follows_controller_spec.rb | 2 +- spec/controllers/api/v1/instances_controller_spec.rb | 2 +- spec/controllers/api/v1/media_controller_spec.rb | 2 +- spec/controllers/api/v1/mutes_controller_spec.rb | 2 +- spec/controllers/api/v1/notifications_controller_spec.rb | 2 +- spec/controllers/api/v1/reports_controller_spec.rb | 2 +- spec/controllers/api/v1/search_controller_spec.rb | 2 +- .../api/v1/statuses/favourited_by_accounts_controller_spec.rb | 2 +- .../controllers/api/v1/statuses/favourites_controller_spec.rb | 2 +- spec/controllers/api/v1/statuses/mutes_controller_spec.rb | 2 +- .../api/v1/statuses/reblogged_by_accounts_controller_spec.rb | 2 +- spec/controllers/api/v1/statuses/reblogs_controller_spec.rb | 2 +- spec/controllers/api/v1/statuses_controller_spec.rb | 2 +- spec/controllers/api/v1/timelines/home_controller_spec.rb | 4 ++-- spec/controllers/api/v1/timelines/public_controller_spec.rb | 4 ++-- spec/controllers/api/v1/timelines/tag_controller_spec.rb | 4 ++-- spec/fabricators/access_token_fabricator.rb | 2 ++ spec/fabricators/accessible_access_token_fabricator.rb | 4 ++++ 29 files changed, 36 insertions(+), 30 deletions(-) create mode 100644 spec/fabricators/access_token_fabricator.rb create mode 100644 spec/fabricators/accessible_access_token_fabricator.rb diff --git a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb index 89dbca111..4a3100348 100644 --- a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb @@ -4,7 +4,7 @@ describe Api::V1::Accounts::CredentialsController do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write') } before do allow(controller).to receive(:doorkeeper_token) { token } diff --git a/spec/controllers/api/v1/accounts/follower_accounts_controller_spec.rb b/spec/controllers/api/v1/accounts/follower_accounts_controller_spec.rb index 171852c75..33982cb8f 100644 --- a/spec/controllers/api/v1/accounts/follower_accounts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/follower_accounts_controller_spec.rb @@ -4,7 +4,7 @@ describe Api::V1::Accounts::FollowerAccountsController do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') } before do Fabricate(:follow, target_account: user.account) diff --git a/spec/controllers/api/v1/accounts/following_accounts_controller_spec.rb b/spec/controllers/api/v1/accounts/following_accounts_controller_spec.rb index a4cad9163..e22f54a31 100644 --- a/spec/controllers/api/v1/accounts/following_accounts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/following_accounts_controller_spec.rb @@ -4,7 +4,7 @@ describe Api::V1::Accounts::FollowingAccountsController do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') } before do Fabricate(:follow, account: user.account) diff --git a/spec/controllers/api/v1/accounts/relationships_controller_spec.rb b/spec/controllers/api/v1/accounts/relationships_controller_spec.rb index e281afcb9..3a9607317 100644 --- a/spec/controllers/api/v1/accounts/relationships_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/relationships_controller_spec.rb @@ -4,7 +4,7 @@ describe Api::V1::Accounts::RelationshipsController do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') } before do allow(controller).to receive(:doorkeeper_token) { token } diff --git a/spec/controllers/api/v1/accounts/search_controller_spec.rb b/spec/controllers/api/v1/accounts/search_controller_spec.rb index 40c82437d..42cc3f64d 100644 --- a/spec/controllers/api/v1/accounts/search_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/search_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Api::V1::Accounts::SearchController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') } before do allow(controller).to receive(:doorkeeper_token) { token } diff --git a/spec/controllers/api/v1/accounts/statuses_controller_spec.rb b/spec/controllers/api/v1/accounts/statuses_controller_spec.rb index 55cb5bcc2..8b4fd6a5b 100644 --- a/spec/controllers/api/v1/accounts/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/statuses_controller_spec.rb @@ -4,7 +4,7 @@ describe Api::V1::Accounts::StatusesController do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') } before do allow(controller).to receive(:doorkeeper_token) { token } diff --git a/spec/controllers/api/v1/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb index 216a9cb3b..c13509e7b 100644 --- a/spec/controllers/api/v1/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Api::V1::AccountsController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'follow read') } before do allow(controller).to receive(:doorkeeper_token) { token } diff --git a/spec/controllers/api/v1/blocks_controller_spec.rb b/spec/controllers/api/v1/blocks_controller_spec.rb index 4fd968b27..f25a7e878 100644 --- a/spec/controllers/api/v1/blocks_controller_spec.rb +++ b/spec/controllers/api/v1/blocks_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Api::V1::BlocksController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'follow') } before do Fabricate(:block, account: user.account) diff --git a/spec/controllers/api/v1/domain_blocks_controller_spec.rb b/spec/controllers/api/v1/domain_blocks_controller_spec.rb index ff5c5f330..3713931dc 100644 --- a/spec/controllers/api/v1/domain_blocks_controller_spec.rb +++ b/spec/controllers/api/v1/domain_blocks_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Api::V1::DomainBlocksController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'follow') } before do user.account.block_domain!('example.com') diff --git a/spec/controllers/api/v1/favourites_controller_spec.rb b/spec/controllers/api/v1/favourites_controller_spec.rb index 17e1ec31c..85da87ad9 100644 --- a/spec/controllers/api/v1/favourites_controller_spec.rb +++ b/spec/controllers/api/v1/favourites_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Api::V1::FavouritesController, type: :controller do render_views let(:user) { Fabricate(:user) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') } before do Fabricate(:favourite, account: user.account) diff --git a/spec/controllers/api/v1/follow_requests_controller_spec.rb b/spec/controllers/api/v1/follow_requests_controller_spec.rb index d455a0255..51df006a2 100644 --- a/spec/controllers/api/v1/follow_requests_controller_spec.rb +++ b/spec/controllers/api/v1/follow_requests_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Api::V1::FollowRequestsController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice', locked: true)) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'follow') } let(:follower) { Fabricate(:account, username: 'bob') } before do diff --git a/spec/controllers/api/v1/follows_controller_spec.rb b/spec/controllers/api/v1/follows_controller_spec.rb index cc4958ab5..b5e1d16dd 100644 --- a/spec/controllers/api/v1/follows_controller_spec.rb +++ b/spec/controllers/api/v1/follows_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Api::V1::FollowsController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'follow') } before do allow(controller).to receive(:doorkeeper_token) { token } diff --git a/spec/controllers/api/v1/instances_controller_spec.rb b/spec/controllers/api/v1/instances_controller_spec.rb index 544f3d28f..eba233b05 100644 --- a/spec/controllers/api/v1/instances_controller_spec.rb +++ b/spec/controllers/api/v1/instances_controller_spec.rb @@ -6,7 +6,7 @@ RSpec.describe Api::V1::InstancesController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) } before do allow(controller).to receive(:doorkeeper_token) { token } diff --git a/spec/controllers/api/v1/media_controller_spec.rb b/spec/controllers/api/v1/media_controller_spec.rb index 00dcac95d..6bad3f05d 100644 --- a/spec/controllers/api/v1/media_controller_spec.rb +++ b/spec/controllers/api/v1/media_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Api::V1::MediaController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write') } before do allow(controller).to receive(:doorkeeper_token) { token } diff --git a/spec/controllers/api/v1/mutes_controller_spec.rb b/spec/controllers/api/v1/mutes_controller_spec.rb index 85aad4384..3e6fa887b 100644 --- a/spec/controllers/api/v1/mutes_controller_spec.rb +++ b/spec/controllers/api/v1/mutes_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Api::V1::MutesController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'follow') } before do Fabricate(:mute, account: user.account) diff --git a/spec/controllers/api/v1/notifications_controller_spec.rb b/spec/controllers/api/v1/notifications_controller_spec.rb index e06230913..f493d0d38 100644 --- a/spec/controllers/api/v1/notifications_controller_spec.rb +++ b/spec/controllers/api/v1/notifications_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Api::V1::NotificationsController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') } let(:other) { Fabricate(:user, account: Fabricate(:account, username: 'bob')) } before do diff --git a/spec/controllers/api/v1/reports_controller_spec.rb b/spec/controllers/api/v1/reports_controller_spec.rb index 471ea4e0b..1eb5a4353 100644 --- a/spec/controllers/api/v1/reports_controller_spec.rb +++ b/spec/controllers/api/v1/reports_controller_spec.rb @@ -6,7 +6,7 @@ RSpec.describe Api::V1::ReportsController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read write') } before do allow(controller).to receive(:doorkeeper_token) { token } diff --git a/spec/controllers/api/v1/search_controller_spec.rb b/spec/controllers/api/v1/search_controller_spec.rb index 4d22ddc98..ff0c254b1 100644 --- a/spec/controllers/api/v1/search_controller_spec.rb +++ b/spec/controllers/api/v1/search_controller_spec.rb @@ -6,7 +6,7 @@ RSpec.describe Api::V1::SearchController, type: :controller do render_views let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') } before do allow(controller).to receive(:doorkeeper_token) { token } diff --git a/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb b/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb index 1acb990a0..556731d57 100644 --- a/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb +++ b/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Api::V1::Statuses::FavouritedByAccountsController, type: :control let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') } - let(:token) { double acceptable?: true, resource_owner_id: user.id, application: app } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, application: app) } context 'with an oauth token' do before do diff --git a/spec/controllers/api/v1/statuses/favourites_controller_spec.rb b/spec/controllers/api/v1/statuses/favourites_controller_spec.rb index eb77072d2..2a029230d 100644 --- a/spec/controllers/api/v1/statuses/favourites_controller_spec.rb +++ b/spec/controllers/api/v1/statuses/favourites_controller_spec.rb @@ -7,7 +7,7 @@ describe Api::V1::Statuses::FavouritesController do let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') } - let(:token) { double acceptable?: true, resource_owner_id: user.id, application: app } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write', application: app) } context 'with an oauth token' do before do diff --git a/spec/controllers/api/v1/statuses/mutes_controller_spec.rb b/spec/controllers/api/v1/statuses/mutes_controller_spec.rb index 1f8c29e3d..54c594e92 100644 --- a/spec/controllers/api/v1/statuses/mutes_controller_spec.rb +++ b/spec/controllers/api/v1/statuses/mutes_controller_spec.rb @@ -7,7 +7,7 @@ describe Api::V1::Statuses::MutesController do let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') } - let(:token) { double acceptable?: true, resource_owner_id: user.id, application: app } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write', application: app) } context 'with an oauth token' do before do diff --git a/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb b/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb index c5624023f..ba022a96e 100644 --- a/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb +++ b/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Api::V1::Statuses::RebloggedByAccountsController, type: :controll let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') } - let(:token) { double acceptable?: true, resource_owner_id: user.id, application: app } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, application: app) } context 'with an oauth token' do before do diff --git a/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb b/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb index 36c323736..d6d36c1b2 100644 --- a/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb +++ b/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb @@ -7,7 +7,7 @@ describe Api::V1::Statuses::ReblogsController do let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') } - let(:token) { double acceptable?: true, resource_owner_id: user.id, application: app } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write', application: app) } context 'with an oauth token' do before do diff --git a/spec/controllers/api/v1/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb index 3d65180ab..a36265395 100644 --- a/spec/controllers/api/v1/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/statuses_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Api::V1::StatusesController, type: :controller do let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') } - let(:token) { double acceptable?: true, resource_owner_id: user.id, application: app } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, application: app, scopes: 'write') } context 'with an oauth token' do before do diff --git a/spec/controllers/api/v1/timelines/home_controller_spec.rb b/spec/controllers/api/v1/timelines/home_controller_spec.rb index faa6c60ce..4d4523520 100644 --- a/spec/controllers/api/v1/timelines/home_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/home_controller_spec.rb @@ -12,7 +12,7 @@ describe Api::V1::Timelines::HomeController do end context 'with a user context' do - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') } describe 'GET #show' do before do @@ -30,7 +30,7 @@ describe Api::V1::Timelines::HomeController do end context 'without a user context' do - let(:token) { double acceptable?: true, resource_owner_id: nil } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: nil, scopes: 'read') } describe 'GET #show' do it 'returns http unprocessable entity' do diff --git a/spec/controllers/api/v1/timelines/public_controller_spec.rb b/spec/controllers/api/v1/timelines/public_controller_spec.rb index 353ab9bc2..3acf2e267 100644 --- a/spec/controllers/api/v1/timelines/public_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/public_controller_spec.rb @@ -12,7 +12,7 @@ describe Api::V1::Timelines::PublicController do end context 'with a user context' do - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) } describe 'GET #show' do before do @@ -42,7 +42,7 @@ describe Api::V1::Timelines::PublicController do end context 'without a user context' do - let(:token) { double acceptable?: true, resource_owner_id: nil } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: nil) } describe 'GET #show' do it 'returns http success' do diff --git a/spec/controllers/api/v1/timelines/tag_controller_spec.rb b/spec/controllers/api/v1/timelines/tag_controller_spec.rb index f743f0cde..74de1e81f 100644 --- a/spec/controllers/api/v1/timelines/tag_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/tag_controller_spec.rb @@ -12,7 +12,7 @@ describe Api::V1::Timelines::TagController do end context 'with a user context' do - let(:token) { double acceptable?: true, resource_owner_id: user.id } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) } describe 'GET #show' do before do @@ -28,7 +28,7 @@ describe Api::V1::Timelines::TagController do end context 'without a user context' do - let(:token) { double acceptable?: true, resource_owner_id: nil } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: nil) } describe 'GET #show' do it 'returns http success' do diff --git a/spec/fabricators/access_token_fabricator.rb b/spec/fabricators/access_token_fabricator.rb new file mode 100644 index 000000000..1856a8eb3 --- /dev/null +++ b/spec/fabricators/access_token_fabricator.rb @@ -0,0 +1,2 @@ +Fabricator :access_token, from: 'Doorkeeper::AccessToken' do +end diff --git a/spec/fabricators/accessible_access_token_fabricator.rb b/spec/fabricators/accessible_access_token_fabricator.rb new file mode 100644 index 000000000..4b7e99b20 --- /dev/null +++ b/spec/fabricators/accessible_access_token_fabricator.rb @@ -0,0 +1,4 @@ +Fabricator :accessible_access_token, from: :access_token do + expires_in { nil } + revoked_at { nil } +end From e1798d0eb0180bea9237e3cff399a4883173f195 Mon Sep 17 00:00:00 2001 From: Sorin Davidoi Date: Thu, 27 Jul 2017 15:46:33 +0200 Subject: [PATCH 07/37] fix(push_subscription): Use star icon for favourite action (#4396) --- app/models/web/push_subscription.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/web/push_subscription.rb b/app/models/web/push_subscription.rb index 86df9b591..02002db5a 100644 --- a/app/models/web/push_subscription.rb +++ b/app/models/web/push_subscription.rb @@ -117,7 +117,7 @@ class Web::PushSubscription < ApplicationRecord when :mention then [ { title: translate('push_notifications.mention.action_favourite'), - icon: full_asset_url('emoji/2764.png', skip_pipeline: true), + icon: full_asset_url('emoji/2b50.png', skip_pipeline: true), todo: 'request', method: 'POST', action: "/api/v1/statuses/#{notification.target_status.id}/favourite", From 73890c3cac19df3fdf7162e84024fedea5ecfe5d Mon Sep 17 00:00:00 2001 From: unarist Date: Thu, 27 Jul 2017 22:49:56 +0900 Subject: [PATCH 08/37] Fix timeline height on landing page for Safari (#4392) `height: 100%` in `align-self: stretch` flexboxes doesn't work on Safari < 11. https://bugs.webkit.org/show_bug.cgi?id=137730 This workaround uses flexbox instead of `height: 100%` to stretch height. --- app/javascript/styles/about.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/styles/about.scss b/app/javascript/styles/about.scss index 9be95c028..6eddd1322 100644 --- a/app/javascript/styles/about.scss +++ b/app/javascript/styles/about.scss @@ -547,6 +547,7 @@ } #mastodon-timeline { + display: flex; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; font-family: 'mastodon-font-sans-serif', sans-serif; @@ -565,7 +566,6 @@ padding: 0; border-radius: 4px; overflow: hidden; - height: 100%; } .scrollable { From f2233c3e25bd52388798e5d76311896fa8029413 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 27 Jul 2017 23:20:48 +0900 Subject: [PATCH 09/37] Update intersection-observer to version 0.4.0 (#4398) --- app/javascript/mastodon/components/status.js | 9 ++------- package.json | 2 +- yarn.lock | 6 +++--- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 6b9fdd2af..0d7f6deb1 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -107,17 +107,12 @@ export default class Status extends ImmutablePureComponent { this.height = getRectFromEntry(entry).height; } - // Edge 15 doesn't support isIntersecting, but we can infer it - // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12156111/ - // https://github.com/WICG/IntersectionObserver/issues/211 - const isIntersecting = (typeof entry.isIntersecting === 'boolean') ? - entry.isIntersecting : entry.intersectionRect.height > 0; this.setState((prevState) => { - if (prevState.isIntersecting && !isIntersecting) { + if (prevState.isIntersecting && !entry.isIntersecting) { scheduleIdleTask(this.hideIfNotIntersecting); } return { - isIntersecting: isIntersecting, + isIntersecting: entry.isIntersecting, isHidden: false, }; }); diff --git a/package.json b/package.json index 132d7017d..9afb51285 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "glob": "^7.1.1", "http-link-header": "^0.8.0", "immutable": "^3.8.1", - "intersection-observer": "^0.3.2", + "intersection-observer": "^0.4.0", "intl": "^1.2.5", "intl-relativeformat": "^2.0.0", "is-nan": "^1.2.1", diff --git a/yarn.lock b/yarn.lock index 0f895f3b6..5b3df43c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3608,9 +3608,9 @@ interpret@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" -intersection-observer@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.3.2.tgz#9ed30021c08b29e9e8565c8d512ed84515727433" +intersection-observer@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.4.0.tgz#e7c3580be96fc1698170250b500da986c59824fb" intl-format-cache@^2.0.5: version "2.0.5" From aa803153e2161f4462d9d26ecd021fe0d2396cc5 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 28 Jul 2017 05:30:27 +0900 Subject: [PATCH 10/37] Remove Storybook (#4397) --- .dockerignore | 1 - .nanoignore | 1 - .slugignore | 1 - package.json | 5 +- storybook/config.js | 15 - storybook/initial_state.js | 24 - .../stories/autosuggest_textarea.story.js | 18 - storybook/stories/button.story.js | 18 - storybook/stories/character_counter.story.js | 21 - storybook/stories/loading_indicator.story.js | 12 - storybook/stories/onboarding_modal.story.js | 24 - storybook/storybook.scss | 3 - storybook/webpack.config.js | 21 - yarn.lock | 893 ++---------------- 14 files changed, 65 insertions(+), 992 deletions(-) delete mode 100644 storybook/config.js delete mode 100644 storybook/initial_state.js delete mode 100644 storybook/stories/autosuggest_textarea.story.js delete mode 100644 storybook/stories/button.story.js delete mode 100644 storybook/stories/character_counter.story.js delete mode 100644 storybook/stories/loading_indicator.story.js delete mode 100644 storybook/stories/onboarding_modal.story.js delete mode 100644 storybook/storybook.scss delete mode 100644 storybook/webpack.config.js diff --git a/.dockerignore b/.dockerignore index 2ddfa9b95..5cd3b179a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,7 +4,6 @@ public/system public/assets public/packs node_modules -storybook neo4j vendor/bundle .DS_Store diff --git a/.nanoignore b/.nanoignore index f02c0a68a..80e939703 100644 --- a/.nanoignore +++ b/.nanoignore @@ -14,7 +14,6 @@ node_modules/ public/assets/ public/system/ spec/ -storybook/ tmp/ .vagrant/ vendor/bundle/ diff --git a/.slugignore b/.slugignore index b0141b0e2..5470f6e3f 100644 --- a/.slugignore +++ b/.slugignore @@ -2,4 +2,3 @@ node_modules/ .cache/ docs/ spec/ -storybook/ diff --git a/package.json b/package.json index 9afb51285..34198c35b 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,8 @@ "build:production": "cross-env RAILS_ENV=production ./bin/webpack", "manage:translations": "node ./config/webpack/translationRunner.js", "start": "node ./streaming/index.js", - "storybook": "cross-env NODE_ENV=test start-storybook -s ./public -p 9001 -c storybook", "test": "npm run test:lint && npm run test:mocha", - "test:lint": "eslint -c .eslintrc.yml --ext=js app/javascript/ config/webpack/ spec/javascript/ storybook/ streaming/", + "test:lint": "eslint -c .eslintrc.yml --ext=js app/javascript/ config/webpack/ spec/javascript/ streaming/", "test:mocha": "cross-env NODE_ENV=test mocha --require ./spec/javascript/setup.js --compilers js:babel-register ./spec/javascript/components/*.test.js", "postinstall": "npm rebuild node-sass" }, @@ -120,8 +119,6 @@ "websocket.js": "^0.1.12" }, "devDependencies": { - "@storybook/addon-actions": "^3.1.8", - "@storybook/react": "^3.1.8", "babel-eslint": "^7.2.3", "chai": "^4.1.0", "chai-enzyme": "^0.8.0", diff --git a/storybook/config.js b/storybook/config.js deleted file mode 100644 index 87479560f..000000000 --- a/storybook/config.js +++ /dev/null @@ -1,15 +0,0 @@ -import { configure } from '@storybook/react'; -import { addLocaleData } from 'react-intl'; -import en from 'react-intl/locale-data/en'; -import '../app/javascript/styles/application.scss'; -import './storybook.scss'; - -addLocaleData(en); - -let req = require.context('./stories/', true, /.story.js$/); - -function loadStories () { - req.keys().forEach((filename) => req(filename)); -} - -configure(loadStories, module); diff --git a/storybook/initial_state.js b/storybook/initial_state.js deleted file mode 100644 index 3872586f6..000000000 --- a/storybook/initial_state.js +++ /dev/null @@ -1,24 +0,0 @@ -export default { - meta: { - admin: 1, - domain: 'example.com', - me: 2, - }, - accounts: { - 1: { - acct: 'admin', - avatar: '/avatars/original/missing.png', - id: 1, - url: 'https://example.com/@admin', - }, - 2: { - acct: 'user', - avatar: '/avatars/original/missing.png', - id: 1, - url: 'https://example.com/@user', - }, - }, - media_attachments: { - accept_content_types: [], - }, -}; diff --git a/storybook/stories/autosuggest_textarea.story.js b/storybook/stories/autosuggest_textarea.story.js deleted file mode 100644 index 65dfe965c..000000000 --- a/storybook/stories/autosuggest_textarea.story.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { List } from 'immutable'; -import { storiesOf } from '@storybook/react'; -import { action } from '@storybook/addon-actions'; -import AutosuggestTextarea from 'mastodon/components/autosuggest_textarea'; - -const props = { - onChange: action('changed'), - onPaste: action('pasted'), - onSuggestionSelected: action('suggestionsSelected'), - onSuggestionsClearRequested: action('suggestionsClearRequested'), - onSuggestionsFetchRequested: action('suggestionsFetchRequested'), - suggestions: List([]), -}; - -storiesOf('AutosuggestTextarea', module) - .add('default state', () => ) - .add('with text', () => ); diff --git a/storybook/stories/button.story.js b/storybook/stories/button.story.js deleted file mode 100644 index 1971451e8..000000000 --- a/storybook/stories/button.story.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { storiesOf } from '@storybook/react'; -import { action } from '@storybook/addon-actions'; -import Button from 'mastodon/components/button'; - -storiesOf('Button', module) - .add('default state', () => ( -