diff options
| author | Azul <azul@leap.se> | 2012-12-14 14:33:04 +0100 | 
|---|---|---|
| committer | Azul <azul@leap.se> | 2012-12-14 14:33:04 +0100 | 
| commit | 1eeec0808886e305d5113a20bf6ea5c1921e633b (patch) | |
| tree | a6b6ee01a2df46a32bbbdefcdf8848422718d649 | |
| parent | bf46209cefa5d09041865e52f9f78721b10e7dd0 (diff) | |
fixed most of the unit tests
no idea why the numericality validatoin with greater_than_or_equal 0 does not catch negative numbers
| -rw-r--r-- | certs/app/models/leap_ca/cert.rb | 9 | ||||
| -rw-r--r-- | certs/test/unit/cert_pool_test.rb | 35 | ||||
| -rw-r--r-- | certs/test/unit/cert_test.rb | 40 | 
3 files changed, 37 insertions, 47 deletions
| diff --git a/certs/app/models/leap_ca/cert.rb b/certs/app/models/leap_ca/cert.rb index 0c32721..7e4b49a 100644 --- a/certs/app/models/leap_ca/cert.rb +++ b/certs/app/models/leap_ca/cert.rb @@ -17,6 +17,8 @@ module LeapCA      property :valid_until, Time                    # expiration time of the client certificate      property :random, Float, :accessible => false  # used to help pick a random cert by the webapp +    before_validation :set_random, :on => :create +      validates :key, :presence => true      validates :cert, :presence => true      validates :random, :presence => true, :numericality => {:greater_than_or_equal_to => 0, :less_than => 1} @@ -25,6 +27,10 @@ module LeapCA        view :by_random      end +    def set_random +      self.random = rand +    end +      class << self        def sample          self.by_random.startkey(rand).first || self.by_random.first @@ -40,6 +46,9 @@ module LeapCA          raise RECORD_NOT_FOUND        end +      def valid_attributes_hash +        {:key => "ABCD", :cert => "A123"} +      end      end    end diff --git a/certs/test/unit/cert_pool_test.rb b/certs/test/unit/cert_pool_test.rb index 24ace57..06f7ce0 100644 --- a/certs/test/unit/cert_pool_test.rb +++ b/certs/test/unit/cert_pool_test.rb @@ -3,49 +3,50 @@ require 'test_helper'  class CertPoolTest < ActiveSupport::TestCase    setup do -    2.times { Cert.create! } +    2.times { LeapCA::Cert.create(LeapCA::Cert.valid_attributes_hash) }    end    teardown do -    Cert.all.each {|c| c.destroy} +    LeapCA::Cert.all.each {|c| c.destroy}    end    test "picks random sample" do -    Cert.create! # with 3 certs chances are pretty low we pick the same one 40 times. +    # with 3 certs chances are pretty low we pick the same one 40 times. +    LeapCA::Cert.create! LeapCA::Cert.valid_attributes_hash      picked = [] -    first = Cert.sample.id -    current = Cert.sample.id +    first = LeapCA::Cert.sample.id +    current = LeapCA::Cert.sample.id      40.times do        break if current != first -      current = Cert.sample.id +      current = LeapCA::Cert.sample.id      end      assert_not_equal current, first    end    test "picks cert from the pool" do -    assert_difference "Cert.count", -1 do -      cert = Cert.pick_from_pool +    assert_difference "LeapCA::Cert.count", -1 do +      cert = LeapCA::Cert.pick_from_pool      end    end    test "err's out if all certs have been destroyed" do -    sample = Cert.first.tap{|c| c.destroy} -    Cert.all.each {|c| c.destroy} +    sample = LeapCA::Cert.first.tap{|c| c.destroy} +    LeapCA::Cert.all.each {|c| c.destroy}      assert_raises RECORD_NOT_FOUND do -      Cert.expects(:sample).returns(sample) -      cert = Cert.pick_from_pool +      LeapCA::Cert.expects(:sample).returns(sample) +      cert = LeapCA::Cert.pick_from_pool      end    end    test "picks other cert if first pick has been destroyed" do -    first = Cert.first.tap{|c| c.destroy} -    second = Cert.first -    Cert.expects(:sample).at_least_once. +    first = LeapCA::Cert.first.tap{|c| c.destroy} +    second = LeapCA::Cert.first +    LeapCA::Cert.expects(:sample).at_least_once.        returns(first).        then.returns(second) -    cert = Cert.pick_from_pool +    cert = LeapCA::Cert.pick_from_pool      assert_equal second, cert -    assert_nil Cert.first +    assert_nil LeapCA::Cert.first    end  end diff --git a/certs/test/unit/cert_test.rb b/certs/test/unit/cert_test.rb index 9362da2..e41edd7 100644 --- a/certs/test/unit/cert_test.rb +++ b/certs/test/unit/cert_test.rb @@ -3,47 +3,27 @@ require 'test_helper'  class CertTest < ActiveSupport::TestCase    setup do -    @sample = Cert.new -    @sample.set_random -    @sample.attach_zip +    @sample = LeapCA::Cert.new LeapCA::Cert.valid_attributes_hash    end -  test "certs come with attachments" do -    assert @sample.has_attachment? "cert.txt" -  end - -  test "cert.zip_attachment returns couchDB attachment" do -    assert_equal "text/plain", @sample.zip_attachment["content_type"] -  end - -  test "cert.zipped returns the actual data" do -    @sample.save # This is required ! -    assert lines = @sample.zipped.split("\n") -    assert_equal 56, lines.count -    assert_equal "-----BEGIN RSA PRIVATE KEY-----", lines.first.chomp -    assert_equal "-----END CERTIFICATE-----", lines.last.chomp -  end - -  test "cert.zipname returns name for the zip file" do -    assert_equal "cert.txt", @sample.zipname -  end - -  test "test data is valid" do +  test "stub cert for testing is valid" do      assert @sample.valid?    end    test "validates random" do -    @sample.stubs(:set_random) -    [0, 1, nil, "asdf"].each do |invalid| +    [-1, 1, nil, "asdf"].each do |invalid|        @sample.random = invalid        assert !@sample.valid?, "#{invalid} should not be a valid value for random"      end    end -  test "validates attachment" do -    @sample.stubs(:attach_zip) -    @sample.delete_attachment(@sample.zipname) -    assert !@sample.valid?, "Cert should require zipped attachment" +  test "validates key" do +    @sample.key = nil +    assert !@sample.valid?, "Cert should require key"    end +  test "validates cert" do +    @sample.cert = nil +    assert !@sample.valid?, "Cert should require cert" +  end  end | 
