Use keyword arguments for ApplicationService calls
Not all services are using keywords, which breaks those calls in Ruby 3
This commit is contained in:
parent
420442c1c0
commit
179a82d2dd
@ -21,7 +21,7 @@ class Admin::UsersController < Admin::BaseController
|
||||
|
||||
@services_enabled = @user.services_enabled
|
||||
|
||||
@avatar = LdapManager::FetchAvatar.call(cn: @user.cn, ou: @user.ou)
|
||||
@avatar = LdapManager::FetchAvatar.call(cn: @user.cn)
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -24,11 +24,11 @@ class SettingsController < ApplicationController
|
||||
|
||||
if @user.save
|
||||
if @user.display_name && (@user.display_name != @user.ldap_entry[:display_name])
|
||||
LdapManager::UpdateDisplayName.call(@user.dn, @user.display_name)
|
||||
LdapManager::UpdateDisplayName.call(dn: @user.dn, display_name: @user.display_name)
|
||||
end
|
||||
|
||||
if @user.avatar_new.present?
|
||||
LdapManager::UpdateAvatar.call(@user.dn, @user.avatar_new)
|
||||
LdapManager::UpdateAvatar.call(dn: @user.dn, file: @user.avatar_new)
|
||||
end
|
||||
|
||||
redirect_to setting_path(@settings_section), flash: {
|
||||
@ -64,10 +64,10 @@ class SettingsController < ApplicationController
|
||||
@user.current_password = nil
|
||||
session[:new_email_password] = generate_email_password
|
||||
hashed_password = hash_email_password(session[:new_email_password])
|
||||
LdapManager::UpdateEmailPassword.call(@user.dn, hashed_password)
|
||||
LdapManager::UpdateEmailPassword.call(dn: @user.dn, password_hash: hashed_password)
|
||||
|
||||
if @user.ldap_entry[:email_maildrop] != @user.address
|
||||
LdapManager::UpdateEmailMaildrop.call(@user.dn, @user.address)
|
||||
LdapManager::UpdateEmailMaildrop.call(dn: @user.dn, address: @user.address)
|
||||
end
|
||||
|
||||
redirect_to new_password_services_email_path
|
||||
@ -88,8 +88,8 @@ class SettingsController < ApplicationController
|
||||
|
||||
def set_nostr_pubkey
|
||||
signed_event = nostr_event_params[:signed_event].to_h.symbolize_keys
|
||||
is_valid_id = NostrManager::ValidateId.call(signed_event)
|
||||
is_valid_sig = NostrManager::VerifySignature.call(signed_event)
|
||||
is_valid_id = NostrManager::ValidateId.call(event: signed_event)
|
||||
is_valid_sig = NostrManager::VerifySignature.call(event: signed_event)
|
||||
is_correct_content = signed_event[:content] == "Connect my public key to #{current_user.address} (confirmation #{session[:shared_secret]})"
|
||||
|
||||
unless is_valid_id && is_valid_sig && is_correct_content
|
||||
|
@ -96,13 +96,13 @@ class SignupController < ApplicationController
|
||||
session[:new_user] = nil
|
||||
session[:validation_error] = nil
|
||||
|
||||
CreateAccount.call(
|
||||
CreateAccount.call(account: {
|
||||
username: @user.cn,
|
||||
domain: Setting.primary_domain,
|
||||
email: @user.email,
|
||||
password: @user.password,
|
||||
invitation: @invitation
|
||||
)
|
||||
})
|
||||
end
|
||||
|
||||
def set_context
|
||||
|
@ -11,6 +11,6 @@ class AppCatalog::WebApp < ApplicationRecord
|
||||
if: Proc.new { |a| a.url.present? }
|
||||
|
||||
def update_metadata
|
||||
AppCatalogManager::UpdateMetadata.call(self)
|
||||
AppCatalogManager::UpdateMetadata.call(app: self)
|
||||
end
|
||||
end
|
||||
|
@ -92,7 +92,7 @@ class User < ApplicationRecord
|
||||
def devise_after_confirmation
|
||||
if ldap_entry[:mail] != self.email
|
||||
# E-Mail update confirmed
|
||||
LdapManager::UpdateEmail.call(self.dn, self.email)
|
||||
LdapManager::UpdateEmail.call(dn: self.dn, address: self.email)
|
||||
else
|
||||
# E-Mail from signup confirmed (i.e. account activation)
|
||||
|
||||
@ -164,7 +164,7 @@ class User < ApplicationRecord
|
||||
end
|
||||
|
||||
def avatar
|
||||
@avatar_base64 ||= LdapManager::FetchAvatar.call(cn: cn, ou: ou)
|
||||
@avatar_base64 ||= LdapManager::FetchAvatar.call(cn: cn)
|
||||
end
|
||||
|
||||
def services_enabled
|
||||
|
@ -3,7 +3,7 @@ require "down"
|
||||
|
||||
module AppCatalogManager
|
||||
class UpdateMetadata < AppCatalogManagerService
|
||||
def initialize(app)
|
||||
def initialize(app:)
|
||||
@app = app
|
||||
end
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
class ApplicationService
|
||||
# This enables executing a service's `#call` method directly via
|
||||
# `MyService.call(args)`, without creating a class instance it first.
|
||||
def self.call(*args, &block)
|
||||
new(*args, &block).call
|
||||
def self.call(**args, &block)
|
||||
new(**args, &block).call
|
||||
end
|
||||
end
|
||||
|
@ -1,11 +1,11 @@
|
||||
class CreateAccount < ApplicationService
|
||||
def initialize(args)
|
||||
@username = args[:username]
|
||||
@domain = args[:ou] || Setting.primary_domain
|
||||
@email = args[:email]
|
||||
@password = args[:password]
|
||||
@invitation = args[:invitation]
|
||||
@confirmed = args[:confirmed]
|
||||
def initialize(account:)
|
||||
@username = account[:username]
|
||||
@domain = account[:ou] || Setting.primary_domain
|
||||
@email = account[:email]
|
||||
@password = account[:password]
|
||||
@invitation = account[:invitation]
|
||||
@confirmed = account[:confirmed]
|
||||
end
|
||||
|
||||
def call
|
||||
|
@ -1,12 +1,11 @@
|
||||
module LdapManager
|
||||
class FetchAvatar < LdapManagerService
|
||||
def initialize(cn:, ou: nil)
|
||||
def initialize(cn:)
|
||||
@cn = cn
|
||||
@ou = ou
|
||||
end
|
||||
|
||||
def call
|
||||
treebase = @ou ? "ou=#{@ou},cn=users,#{suffix}" : ldap_config["base"]
|
||||
treebase = ldap_config["base"]
|
||||
attributes = %w{ jpegPhoto }
|
||||
filter = Net::LDAP::Filter.eq("cn", @cn)
|
||||
|
||||
|
@ -2,7 +2,7 @@ require "image_processing/vips"
|
||||
|
||||
module LdapManager
|
||||
class UpdateAvatar < LdapManagerService
|
||||
def initialize(dn, file)
|
||||
def initialize(dn:, file:)
|
||||
@dn = dn
|
||||
@img_data = process(file)
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
module LdapManager
|
||||
class UpdateDisplayName < LdapManagerService
|
||||
def initialize(dn, display_name)
|
||||
def initialize(dn:, display_name:)
|
||||
@dn = dn
|
||||
@display_name = display_name
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
module LdapManager
|
||||
class UpdateEmail < LdapManagerService
|
||||
def initialize(dn, address)
|
||||
def initialize(dn:, address:)
|
||||
@dn = dn
|
||||
@address = address
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
module LdapManager
|
||||
class UpdateEmailMaildrop < LdapManagerService
|
||||
def initialize(dn, address)
|
||||
def initialize(dn:, address:)
|
||||
@dn = dn
|
||||
@address = address
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
module LdapManager
|
||||
class UpdateEmailPassword < LdapManagerService
|
||||
def initialize(dn, password_hash)
|
||||
def initialize(dn:, password_hash:)
|
||||
@dn = dn
|
||||
@password_hash = password_hash
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
module NostrManager
|
||||
class ValidateId < NostrManagerService
|
||||
def initialize(event)
|
||||
def initialize(event:)
|
||||
@event = Nostr::Event.new(**event)
|
||||
end
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
module NostrManager
|
||||
class VerifySignature < NostrManagerService
|
||||
def initialize(event)
|
||||
def initialize(event:)
|
||||
@event = Nostr::Event.new(**event)
|
||||
end
|
||||
|
||||
|
@ -50,7 +50,7 @@ RSpec.describe 'E-Mail settings', type: :feature do
|
||||
|
||||
expect(LdapManager::UpdateEmailPassword).to receive(:call).and_return(true)
|
||||
expect(LdapManager::UpdateEmailMaildrop).to receive(:call)
|
||||
.with(user.dn, user.address).and_return(true)
|
||||
.with(dn: user.dn, address: user.address).and_return(true)
|
||||
|
||||
visit setting_path(:email)
|
||||
fill_in 'Current account password', with: "valid password"
|
||||
|
@ -29,7 +29,7 @@ RSpec.describe 'Profile settings', type: :feature do
|
||||
|
||||
scenario 'works with valid input' do
|
||||
expect(LdapManager::UpdateDisplayName).to receive(:call)
|
||||
.with(user.dn, "Marky Mark").and_return(true)
|
||||
.with(dn: user.dn, display_name: "Marky Mark").and_return(true)
|
||||
|
||||
visit setting_path(:profile)
|
||||
fill_in 'Display name', with: "Marky Mark"
|
||||
|
@ -53,7 +53,7 @@ RSpec.describe "Signup", type: :feature do
|
||||
expect(page).to have_content("Choose a password")
|
||||
|
||||
expect(CreateAccount).to receive(:call)
|
||||
.with({
|
||||
.with(account: {
|
||||
username: "tony", domain: "kosmos.org",
|
||||
email: "tony@example.com", password: "a-valid-password",
|
||||
invitation: Invitation.last
|
||||
@ -97,7 +97,7 @@ RSpec.describe "Signup", type: :feature do
|
||||
expect(page).to have_content("Password is too short")
|
||||
|
||||
expect(CreateAccount).to receive(:call)
|
||||
.with({
|
||||
.with(account: {
|
||||
username: "tony", domain: "kosmos.org",
|
||||
email: "tony@example.com", password: "a-valid-password",
|
||||
invitation: Invitation.last
|
||||
|
@ -190,7 +190,7 @@ RSpec.describe User, type: :model do
|
||||
|
||||
it "updates the LDAP 'mail' attribute" do
|
||||
expect(LdapManager::UpdateEmail).to receive(:call)
|
||||
.with("cn=willherschel,ou=kosmos.org,cn=users,dc=kosmos,dc=org", "will@hrsch.el")
|
||||
.with(dn: "cn=willherschel,ou=kosmos.org,cn=users,dc=kosmos,dc=org", address: "will@hrsch.el")
|
||||
user.send :devise_after_confirmation
|
||||
end
|
||||
|
||||
|
@ -2,11 +2,11 @@ require 'rails_helper'
|
||||
|
||||
RSpec.describe CreateAccount, type: :model do
|
||||
describe "#create_user_in_database" do
|
||||
let(:service) { CreateAccount.new(
|
||||
let(:service) { CreateAccount.new(account: {
|
||||
username: 'isaacnewton',
|
||||
email: 'isaacnewton@example.com',
|
||||
password: 'bright-ideas-in-autumn'
|
||||
)}
|
||||
})}
|
||||
|
||||
it "creates a new user record in the akkounts database" do
|
||||
expect(User.count).to eq(0)
|
||||
@ -19,12 +19,12 @@ RSpec.describe CreateAccount, type: :model do
|
||||
|
||||
describe "#update_invitation" do
|
||||
let(:invitation) { create :invitation }
|
||||
let(:service) { CreateAccount.new(
|
||||
let(:service) { CreateAccount.new(account: {
|
||||
username: 'isaacnewton',
|
||||
email: 'isaacnewton@example.com',
|
||||
password: 'bright-ideas-in-autumn',
|
||||
invitation: invitation
|
||||
)}
|
||||
})}
|
||||
|
||||
before(:each) do
|
||||
service.send(:update_invitation, 23)
|
||||
@ -42,11 +42,11 @@ RSpec.describe CreateAccount, type: :model do
|
||||
describe "#add_ldap_document" do
|
||||
include ActiveJob::TestHelper
|
||||
|
||||
let(:service) { CreateAccount.new(
|
||||
let(:service) { CreateAccount.new(account: {
|
||||
username: 'halfinney',
|
||||
email: 'halfinney@example.com',
|
||||
password: 'remember-remember-the-5th-of-november'
|
||||
)}
|
||||
})}
|
||||
|
||||
it "enqueues a job to create the LDAP user document" do
|
||||
service.send(:add_ldap_document)
|
||||
@ -68,10 +68,10 @@ RSpec.describe CreateAccount, type: :model do
|
||||
describe "#create_lndhub_account" do
|
||||
include ActiveJob::TestHelper
|
||||
|
||||
let(:service) { CreateAccount.new(
|
||||
let(:service) { CreateAccount.new(account: {
|
||||
username: 'halfinney', email: 'halfinney@example.com',
|
||||
password: 'bright-ideas-in-winter'
|
||||
)}
|
||||
})}
|
||||
let(:new_user) { create :user, cn: "halfinney", ou: "kosmos.org" }
|
||||
|
||||
it "enqueues a job to create an LndHub account" do
|
||||
|
Loading…
x
Reference in New Issue
Block a user