[前][次][番号順一覧][スレッド一覧]

ruby-changes:16584

From: nahi <ko1@a...>
Date: Thu, 8 Jul 2010 13:45:10 +0900 (JST)
Subject: [ruby-changes:16584] Ruby:r28575 (ruby_1_8): * test/openssl/test_config.c: added tests for all Config methods.

nahi	2010-07-08 13:44:58 +0900 (Thu, 08 Jul 2010)

  New Revision: 28575

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28575

  Log:
    * test/openssl/test_config.c: added tests for all Config methods.

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/test/openssl/test_config.rb
    branches/ruby_1_8/test/openssl/test_pkcs7.rb
    branches/ruby_1_8/test/openssl/utils.rb

Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 28574)
+++ ruby_1_8/ChangeLog	(revision 28575)
@@ -1,3 +1,7 @@
+Thu Jul  8 13:43:13 2010  NAKAMURA, Hiroshi  <nahi@r...>
+
+	* test/openssl/test_config.c: added tests for all Config methods.
+
 Wed Jul  7 13:24:24 2010  NAKAMURA Usaku  <usa@r...>
 
 	* file.c (ruby_find_basename): set correct baselen.
Index: ruby_1_8/test/openssl/test_pkcs7.rb
===================================================================
--- ruby_1_8/test/openssl/test_pkcs7.rb	(revision 28574)
+++ ruby_1_8/test/openssl/test_pkcs7.rb	(revision 28575)
@@ -151,17 +151,8 @@
     assert_equal(data, p7.decrypt(@rsa1024, @ee2_cert))
   end
 
-  def silent
-    begin
-      back, $VERBOSE = $VERBOSE, nil
-      yield
-    ensure
-      $VERBOSE = back if back
-    end
-  end
-
   def test_signed_pkcs7_pkcs7
-  silent do
+  OpenSSL::TestUtils.silent do
     store = OpenSSL::X509::Store.new
     store.add_cert(@ca_cert)
     ca_certs = [@ca_cert]
@@ -224,7 +215,7 @@
   end
 
   def test_detached_sign_pkcs7_pkcs7
-  silent do
+  OpenSSL::TestUtils.silent do
     store = OpenSSL::X509::Store.new
     store.add_cert(@ca_cert)
     ca_certs = [@ca_cert]
@@ -250,7 +241,7 @@
   end
 
   def test_enveloped_pkcs7_pkcs7
-  silent do
+  OpenSSL::TestUtils.silent do
     if OpenSSL::OPENSSL_VERSION_NUMBER <= 0x0090704f
       # PKCS7_encrypt() of OpenSSL-0.9.7d goes to SEGV.
       # http://www.mail-archive.com/openssl-dev@o.../msg17376.html
Index: ruby_1_8/test/openssl/utils.rb
===================================================================
--- ruby_1_8/test/openssl/utils.rb	(revision 28574)
+++ ruby_1_8/test/openssl/utils.rb	(revision 28575)
@@ -132,4 +132,13 @@
     pkvalue   = publickey.value
     OpenSSL::Digest::SHA1.hexdigest(pkvalue).scan(/../).join(":").upcase
   end
+
+  def silent
+    begin
+      back, $VERBOSE = $VERBOSE, nil
+      yield
+    ensure
+      $VERBOSE = back if back
+    end
+  end
 end
Index: ruby_1_8/test/openssl/test_config.rb
===================================================================
--- ruby_1_8/test/openssl/test_config.rb	(revision 28574)
+++ ruby_1_8/test/openssl/test_config.rb	(revision 28575)
@@ -1,7 +1,134 @@
 require 'openssl'
 require "test/unit"
+require 'tempfile'
+require File.join(File.dirname(__FILE__), "utils.rb")
 
 class OpenSSL::TestConfig < Test::Unit::TestCase
+  def setup
+    file = Tempfile.open("openssl.cnf")
+    file << <<__EOD__
+HOME = .
+[ ca ]
+default_ca = CA_default
+[ CA_default ]
+dir = ./demoCA
+certs                =                  ./certs
+__EOD__
+    file.close
+    @it = OpenSSL::Config.new(file.path)
+  end
+
+  def test_initialize
+    c = OpenSSL::Config.new
+    assert_equal("", c.to_s)
+    assert_equal([], c.sections)
+  end
+
+  def test_initialize_with_empty_file
+    file = Tempfile.open("openssl.cnf")
+    file.close
+    c = OpenSSL::Config.new(file.path)
+    assert_equal("[ default ]\n\n", c.to_s)
+    assert_equal(['default'], c.sections)
+  end
+
+  def test_initialize_with_example_file
+    assert_equal(['CA_default', 'ca', 'default'], @it.sections.sort)
+  end
+
+  def test_get_value
+    assert_equal('CA_default', @it.get_value('ca', 'default_ca'))
+    assert_equal(nil, @it.get_value('ca', 'no such key'))
+    assert_equal(nil, @it.get_value('no such section', 'no such key'))
+    assert_equal('.', @it.get_value('', 'HOME'))
+    assert_raise(TypeError) do
+      @it.get_value(nil, 'HOME') # not allowed unlike Config#value
+    end
+  end
+
+  def test_value
+    # supress deprecation warnings
+    OpenSSL::TestUtils.silent do
+      assert_equal('CA_default', @it.value('ca', 'default_ca'))
+      assert_equal(nil, @it.value('ca', 'no such key'))
+      assert_equal(nil, @it.value('no such section', 'no such key'))
+      assert_equal('.', @it.value('', 'HOME'))
+      assert_equal('.', @it.value(nil, 'HOME'))
+      assert_equal('.', @it.value('HOME'))
+    end
+  end
+
+  def test_aref
+    assert_equal({'HOME' => '.'}, @it['default'])
+    assert_equal({'dir' => './demoCA', 'certs' => './certs'}, @it['CA_default'])
+    assert_equal({}, @it['no_such_section'])
+    assert_equal({}, @it[''])
+  end
+
+  def test_section
+    OpenSSL::TestUtils.silent do
+      assert_equal({'HOME' => '.'}, @it.section('default'))
+      assert_equal({'dir' => './demoCA', 'certs' => './certs'}, @it.section('CA_default'))
+      assert_equal({}, @it.section('no_such_section'))
+      assert_equal({}, @it.section(''))
+    end
+  end
+
+  def test_sections
+    assert_equal(['CA_default', 'ca', 'default'], @it.sections.sort)
+    @it['new_section'] = {'foo' => 'bar'}
+    assert_equal(['CA_default', 'ca', 'default', 'new_section'], @it.sections.sort)
+    @it['new_section'] = {}
+    assert_equal(['CA_default', 'ca', 'default', 'new_section'], @it.sections.sort)
+  end
+
+  def test_add_value
+    c = OpenSSL::Config.new
+    assert_equal("", c.to_s)
+    # add key
+    c.add_value('default', 'foo', 'bar')
+    assert_equal("[ default ]\nfoo=bar\n\n", c.to_s)
+    # add another key
+    c.add_value('default', 'baz', 'qux')
+    assert_equal("[ default ]\nfoo=bar\nbaz=qux\n\n", c.to_s)
+    # update the value
+    c.add_value('default', 'baz', 'quxxx')
+    assert_equal("[ default ]\nfoo=bar\nbaz=quxxx\n\n", c.to_s)
+    # add section and key
+    c.add_value('section', 'foo', 'bar')
+    assert_equal("[ default ]\nfoo=bar\nbaz=quxxx\n\n[ section ]\nfoo=bar\n\n", c.to_s)
+  end
+
+  def test_aset
+    @it['foo'] = {'bar' => 'baz'}
+    assert_equal({'bar' => 'baz'}, @it['foo'])
+    @it['foo'] = {'bar' => 'qux', 'baz' => 'quxx'}
+    assert_equal({'bar' => 'qux', 'baz' => 'quxx'}, @it['foo'])
+
+    # OpenSSL::Config is add only for now.
+    @it['foo'] = {'foo' => 'foo'}
+    assert_equal({'foo' => 'foo', 'bar' => 'qux', 'baz' => 'quxx'}, @it['foo'])
+    # you cannot override or remove any section and key.
+    @it['foo'] = {}
+    assert_equal({'foo' => 'foo', 'bar' => 'qux', 'baz' => 'quxx'}, @it['foo'])
+  end
+
+  def test_each
+    # each returns [section, key, value] array.
+    ary = @it.map { |e| e }.sort { |a, b| a[0] <=> b[0] }
+    assert_equal(4, ary.size)
+    assert_equal('CA_default', ary[0][0])
+    assert_equal('CA_default', ary[1][0])
+    assert_equal(["ca", "default_ca", "CA_default"], ary[2])
+    assert_equal(["default", "HOME", "."], ary[3])
+  end
+
+  def test_inspect
+    assert_nothing_raised do
+      @it.inspect
+    end
+  end
+
   def test_freeze
     c = OpenSSL::Config.new
     c['foo'] = [['key', 'value']]

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]