File: test_base.rb

package info (click to toggle)
ruby-net-sftp 1%3A4.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 684 kB
  • sloc: ruby: 5,136; makefile: 6
file content (62 lines) | stat: -rw-r--r-- 2,902 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
require 'common'
require 'protocol/04/test_base'

class Protocol::V05::TestBase < Protocol::V04::TestBase
  include Net::SFTP::Constants::OpenFlags
  include Net::SFTP::Constants

  def test_version
    assert_equal 5, @base.version
  end

  undef test_rename_should_ignore_flags_parameter

  def test_rename_should_send_rename_packet
    @session.expects(:send_packet).with(FXP_RENAME, :long, 0, :string, "/old/file", :string, "/new/file", :long, 0)
    assert_equal 0, @base.rename("/old/file", "/new/file")
  end

  def test_rename_with_flags_should_send_rename_packet_with_flags
    @session.expects(:send_packet).with(FXP_RENAME, :long, 0, :string, "/old/file", :string, "/new/file", :long, RenameFlags::ATOMIC)
    assert_equal 0, @base.rename("/old/file", "/new/file", RenameFlags::ATOMIC)
  end

  def test_open_with_numeric_flag_should_accept_IO_constants
    @session.expects(:send_packet).with(FXP_OPEN, :long, 0,
      :string, "/path/to/file",
      :long, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES | ACE::Mask::WRITE_DATA | ACE::Mask::WRITE_ATTRIBUTES,
      :long, FV5::CREATE_NEW,
      :raw, attributes.new.to_s)

    assert_equal 0, @base.open("/path/to/file", IO::RDWR | IO::CREAT | IO::EXCL, {})
  end

  { "r"  => [FV5::OPEN_EXISTING, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES],
    "rb" => [FV5::OPEN_EXISTING, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES],
    "r+" => [FV5::OPEN_EXISTING, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES | ACE::Mask::WRITE_DATA | ACE::Mask::WRITE_ATTRIBUTES],
    "w"  => [FV5::CREATE_TRUNCATE, ACE::Mask::WRITE_DATA | ACE::Mask::WRITE_ATTRIBUTES],
    "w+" => [FV5::CREATE_TRUNCATE, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES | ACE::Mask::WRITE_DATA | ACE::Mask::WRITE_ATTRIBUTES],
    "a"  => [FV5::OPEN_OR_CREATE | FV5::APPEND_DATA, ACE::Mask::WRITE_DATA | ACE::Mask::WRITE_ATTRIBUTES | ACE::Mask::APPEND_DATA],
    "a+" => [FV5::OPEN_OR_CREATE | FV5::APPEND_DATA, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES | ACE::Mask::WRITE_DATA | ACE::Mask::WRITE_ATTRIBUTES | ACE::Mask::APPEND_DATA]
  }.each do |mode_string, (flags, access)|
    define_method("test_open_with_#{mode_string.sub(/\+/, '_plus')}_should_translate_correctly") do
      @session.expects(:send_packet).with(FXP_OPEN, :long, 0,
        :string, "/path/to/file", :long, access, :long, flags, :raw, attributes.new.to_s)

      assert_equal 0, @base.open("/path/to/file", mode_string, {})
    end
  end

  def test_open_with_attributes_converts_hash_to_attribute_packet
    @session.expects(:send_packet).with(FXP_OPEN, :long, 0,
      :string, "/path/to/file", :long, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES,
      :long, FV5::OPEN_EXISTING, :raw, attributes.new(:permissions => 0755).to_s)
    @base.open("/path/to/file", "r", :permissions => 0755)
  end

  private

    def driver
      Net::SFTP::Protocol::V05::Base
    end
end