Add global setting for default services, enable for preconfirmed accounts
Co-authored-by: Greg Karékinian <greg@karekinian.com>
This commit is contained in:
@@ -3,12 +3,24 @@ require 'rails_helper'
|
||||
RSpec.describe CreateLdapUserJob, type: :job do
|
||||
let(:ldap_client_mock) { instance_double(Net::LDAP) }
|
||||
|
||||
subject(:job) {
|
||||
before do
|
||||
allow_any_instance_of(described_class).to receive(:ldap_client).and_return(ldap_client_mock)
|
||||
end
|
||||
|
||||
subject(:job) {
|
||||
described_class.perform_later(
|
||||
'halfinney', 'kosmos.org', 'halfinney@example.com',
|
||||
'remember-remember-the-5th-of-november'
|
||||
username: 'halfinney', domain: 'kosmos.org',
|
||||
email: 'halfinney@example.com',
|
||||
hashed_pw: 'remember-remember-the-5th-of-november'
|
||||
)
|
||||
}
|
||||
|
||||
subject(:job_for_preconfirmed_account) {
|
||||
described_class.perform_later(
|
||||
username: 'halfinney', domain: 'kosmos.org',
|
||||
email: 'halfinney@example.com',
|
||||
hashed_pw: 'remember-remember-the-5th-of-november',
|
||||
confirmed: true
|
||||
)
|
||||
}
|
||||
|
||||
@@ -30,6 +42,26 @@ RSpec.describe CreateLdapUserJob, type: :job do
|
||||
)
|
||||
end
|
||||
|
||||
it "adds default services for pre-confirmed accounts" do
|
||||
allow(ldap_client_mock).to receive(:add) # spy on mock
|
||||
allow(Setting).to receive(:default_services).and_return(["xmpp", "discourse"])
|
||||
|
||||
perform_enqueued_jobs { job_for_preconfirmed_account }
|
||||
|
||||
expect(ldap_client_mock).to have_received(:add).with(
|
||||
dn: "cn=halfinney,ou=kosmos.org,cn=users,dc=kosmos,dc=org",
|
||||
attributes: {
|
||||
objectclass: ["top", "account", "person", "extensibleObject"],
|
||||
cn: "halfinney",
|
||||
sn: "halfinney",
|
||||
uid: "halfinney",
|
||||
mail: "halfinney@example.com",
|
||||
serviceEnabled: ["xmpp", "discourse"],
|
||||
userPassword: "remember-remember-the-5th-of-november"
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
after do
|
||||
clear_enqueued_jobs
|
||||
clear_performed_jobs
|
||||
|
||||
@@ -53,11 +53,32 @@ RSpec.describe CreateAccount, type: :model do
|
||||
|
||||
expect(enqueued_jobs.size).to eq(1)
|
||||
|
||||
args = enqueued_jobs.first['arguments']
|
||||
expect(args[0]).to eq('halfinney')
|
||||
expect(args[1]).to eq('kosmos.org')
|
||||
expect(args[2]).to eq('halfinney@example.com')
|
||||
expect(args[3]).to match(/^{SSHA512}.{171}=/)
|
||||
args = enqueued_jobs.first['arguments'][0]
|
||||
expect(args["username"]).to eq('halfinney')
|
||||
expect(args["domain"]).to eq('kosmos.org')
|
||||
expect(args["email"]).to eq('halfinney@example.com')
|
||||
expect(args["hashed_pw"]).to match(/^{SSHA512}.{171}=/)
|
||||
end
|
||||
|
||||
after do
|
||||
clear_enqueued_jobs
|
||||
end
|
||||
end
|
||||
|
||||
describe "#add_ldap_document for pre-confirmed account" do
|
||||
include ActiveJob::TestHelper
|
||||
|
||||
let(:service) { CreateAccount.new(account: {
|
||||
username: 'halfinney',
|
||||
email: 'halfinney@example.com',
|
||||
password: 'remember-remember-the-5th-of-november',
|
||||
confirmed: true
|
||||
})}
|
||||
|
||||
it "enqueues a job to create the LDAP user document" do
|
||||
service.send(:add_ldap_document)
|
||||
args = enqueued_jobs.first['arguments'][0]
|
||||
expect(args["confirmed"]).to be(true)
|
||||
end
|
||||
|
||||
after do
|
||||
|
||||
Reference in New Issue
Block a user