tl;dr
前回, rspec-ftp を少し触ってみました. rspec に乗っかることで, FTP ユーザーの振る舞いをテスト出来るようにしてみたつもりです.
inokara.hateblo.jp
せっかくなので, infrataster のプラグインも作ってみようということで, fukuoka.rb #110 でもくもくしてみました.
今日は https://t.co/2zXRrpEltK こちらを 120% 参考にさせて頂いて https://t.co/VxMV7rp11H を作ってみました. #fukuokarb
— Yohei Kawahara(かっぱ) (@inokara) 2018年10月17日
そして, インテグレーションテスト的なものを追加して gem 化してリリースしてみました.
infrataster-plugin-ftp | RubyGems.org | your community gem host
よろしければご利用頂きまして, フィードバック等を頂けると幸いですmm
詳細は
README やリポジトリ内の spec ディレクトリ以下を参考にして頂くとして, テストコードは以下のように書くことを想定しています.
require 'spec_helper' describe server(:ftp_server) do describe ftp('welcome') do it 'check accessible' do expect(result.chomp).to eq('230 Login successful.') end end describe ftp('pwd') do it 'check `chroot` enabled' do expect(result).to eq('/') end end describe ftp('mkdir test_dir') do it 'run `mkdir`' do expect(result).to include '/test_dir' end end describe ftp('ls') do it 'run ls' do expect(result).to include 'sample.txt' end end end
spec_helper.rb には以下のように FTP サーバーへの接続情報を記述します.
Infrataster::Server.define( :ftp_server, '192.168.0.6', ftp: { user: 'ftpuser', pass: 'supersecret', passive: true }, )
FTP サーバーに対して送信する FTP コマンド (ls
や pwd
等) の挙動をテストするような感じになります. これを実行すると…以下のような結果となります.
$ docker-compose exec rspec-ruby25 rspec server 'ftp_server' ftp: check accessible ftp: check `chroot` enabled ftp: run `mkdir` ftp: run ls Finished in 0.07892 seconds (files took 0.7531 seconds to load) 4 examples, 0 failures
想定するユースケース
自分は FTP サーバーにユーザーを追加した際に, 追加したユーザーがそもそもログイン出来るのか, ユーザーは chroot されているのかをテストしたい場合に利用したいと考えています. その他, 単純に FTP サーバーを構築した後の基本的な動作確認にも利用出来るのではと考えています.
2018 年に FTP を利用するシチュエーションがどれだけあるか判りませんが, FTP クライアントを使って目視で確認という若干アナログな作業を Rspec というフレームワークの上でコード化出来るという意味ではこのプラグインは多少なりとも有用なのではと考えています.
以上
現場からの報告でした!ε≡≡ヘ( ´Д`)ノ