RSpec custom matchers for ftp server that enables you to test file structure like Serverspec.
Add this line to your application's Gemfile:
gem 'ftpspec'
And then execute:
$ bundle
Or install it yourself as:
$ gem install ftpspec
Execute ftpspec-init command.
$ ftpspec-init
Then, spec directory will be generated.
$ tree
.
├── Rakefile
└── spec
├── ftp_spec.rb
└── spec_helper.rb
1 directory, 3 files
Write credentials of ftp server into spec/spec_helper.rb
require "ftpspec"
require "rubygems"
require "rspec"
require "net/ftp"
RSpec.configure do |c|
c.add_setting :ftp, :default => nil
c.before do
hostname = "YOUR HOSTNAME"
user = "YOUR USER"
password = "YOUR PASSWORD"
c.ftp = Net::FTP.new
c.ftp.passive = true
c.ftp.connect(hostname)
c.ftp.login(user, password)
Ftpspec.set_ftp
end
c.after do
c.ftp.close
end
end
Write spec in each spec files.
require "spec_helper"
describe "/httpdocs/index.html" do
it { should be_mode "644" }
end
Execute rake command.
$ rake spec
Results are shown.
.
Finished in 2 seconds (files took 0.14477 seconds to load)
1 examples, 0 failures
Test whether file permission of subject is same as expected.
describe "/httpdocs/index.html" do
it { should be_mode "644" }
end
Test whether subject is a file.
describe "/httpdocs/index.html" do
it { should be_file }
end
Test whether subject is a directory.
describe "/httpdocs/images" do
it { should be_directory }
end
Test whether subject is owned by expected owner.
describe "/httpdocs/index.html" do
it { should be_owned_by "someone" }
end
Test whether subject is grouped into expected group.
describe "/httpdocs/index.html" do
it { should be_grouped_into "admin" }
end
- Fork it ( https://github.com/[my-github-username]/ftpspec/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request