Skip to content

Commit

Permalink
Add test
Browse files Browse the repository at this point in the history
  • Loading branch information
maimux2x committed Jul 3, 2024
1 parent 4f9663b commit 73954e4
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 25 deletions.
22 changes: 3 additions & 19 deletions api/app/models/database/dra.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ def validate(validation)

class Submitter
def submit(submission)
submitter_db = Sequel.connect(ENV.fetch('SUBMITTER_DB_DATABASE_URL'))
drmdb = Sequel.connect(ENV.fetch('DRMDB_DATABASE_URL'))
submitter_db = Dway.submitter_db
drmdb = Dway.drmdb

submitter_id = submission.validation.user.uid
user_id = submitter_db[:login].where(submitter_id:).get(:usr_id)
Expand Down Expand Up @@ -92,28 +92,12 @@ def submit(submission)
submitter_id:
)

host, user, key_data = ENV.fetch_values('DRA_SSH_HOST', 'DRA_SSH_USER', 'DRA_SSH_KEY_DATA')
host, user, key_data = ENV.values_at('DRA_SSH_HOST', 'DRA_SSH_USER', 'DRA_SSH_KEY_DATA')

Net::SSH.start host, user, key_data: [key_data] do |ssh|
ssh.exec! "sudo /usr/local/sbin/chroot-createdir.sh #{submitter_id} #{submission_id}"
end
end

private

def mkdir_p!(sftp, path)
components = path.split('/')

components.size.times.map {|i|
components[0..i].join('/')
}.each do |sub_path|
begin
sftp.mkdir! sub_path
rescue Net::SFTP::StatusException => e
raise unless e.code == 4
end
end
end
end
end
end
9 changes: 9 additions & 0 deletions api/app/models/dway.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module Dway
def self.submitter_db
@submitter_db ||= Sequel.connect(ENV.fetch('SUBMITTER_DB_DATABASE_URL'))
end

def self.drmdb
@drmdb ||= Sequel.connect(ENV.fetch('DRMDB_DATABASE_URL'))
end
end
12 changes: 6 additions & 6 deletions api/db/dway/submitter_db/migrations/001_init.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
create_table :login do
primary_key :usr_id, type: :bigint

text :submitter_id, null: false
text :password, null: false
integer :role, null: false, default: 0
boolean :usable, null: false, default: true
boolean :need_chgpasswd, default: true
timestamp :create_date, default: Sequel.lit("date_trunc('second'::text, now())")
text :submitter_id, null: false
text :password, null: false
integer :role, null: false, default: 0
boolean :usable, null: false, default: true
boolean :need_chgpasswd, default: true
timestamp :create_date, default: Sequel.lit("date_trunc('second'::text, now())")
end
end
end
45 changes: 45 additions & 0 deletions api/spec/models/database/dra/submitter_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
require 'rails_helper'

RSpec.describe Database::DRA::Submitter, type: :model do
example do
submission = create(:submission, {
validation: build(:validation, :valid, {
user: build(:user, uid: 'alice')
})
})

user_id = Dway.submitter_db[:login].insert(
submitter_id: 'alice',
password: 'password',
)

expect(Net::SSH).to receive(:start)

Database::DRA::Submitter.new.submit submission

expect(Dway.drmdb[:submission].count).to eq(1)

dway_submission = Dway.drmdb[:submission].first
expect(dway_submission).to include(usr_id: user_id, submitter_id: 'alice', serial: 1)

expect(Dway.drmdb[:status_history].count).to eq(1)

status_history = Dway.drmdb[:status_history].first
expect(status_history).to include(sub_id: dway_submission[:sub_id], status: 100)

expect(Dway.drmdb[:operation_history].count).to eq(1)

operation_history = Dway.drmdb[:operation_history].first
expect(operation_history).to include(type: 3, summary: 'Status update to new', usr_id: user_id, serial: 1, submitter_id: 'alice')

expect(Dway.drmdb[:ext_entity].count).to eq(1)

ext_entity = Dway.drmdb[:ext_entity].first
expect(ext_entity).to include(acc_type: 'DRA', ref_name: 'alice-0001', status: 0)

expect(Dway.drmdb[:ext_permit].count).to eq(1)

ext_permit = Dway.drmdb[:ext_permit].first
expect(ext_permit).to include(ext_id: ext_entity[:ext_id], submitter_id: 'alice')
end
end
31 changes: 31 additions & 0 deletions api/spec/support/dway.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
require 'sequel/core'

ENV['DRMDB_DATABASE_URL'] = 'postgres://localhost/drmdb_test'
ENV['SUBMITTER_DB_DATABASE_URL'] = 'postgres://localhost/submitter_db_test'
ENV['DRA_SSH_HOST'] = 'localhost'
ENV['DRA_SSH_USER'] = 'alice'
ENV['DRA_SSH_KEY_DATA'] = 'KEY_DATA'

RSpec.configure do |config|
config.before :suite do
Sequel.extension :migration

Sequel.connect ENV.fetch('DRMDB_DATABASE_URL') do |db|
Sequel::Migrator.run db, 'db/dway/drmdb/migrations'
end

Sequel.connect ENV.fetch('SUBMITTER_DB_DATABASE_URL') do |db|
Sequel::Migrator.run db, 'db/dway/submitter_db/migrations'
end
end

config.around do |example|
Dway.submitter_db.transaction auto_savepoint: true do
Dway.submitter_db.rollback_on_exit
Dway.drmdb.transaction auto_savepoint: true do
Dway.drmdb.rollback_on_exit
example.call
end
end
end
end

0 comments on commit 73954e4

Please sign in to comment.