Sha256: b7b4436bb15e9a6077690e11b0e54006e0de5f4453004d789224d983cd71da01

Contents?: true

Size: 1.66 KB

Versions: 22

Compression:

Stored size: 1.66 KB

Contents

#! /usr/bin/env ruby -S rspec
require 'spec_helper'

describe "the str2saltedsha512 function" do
  let(:scope) { PuppetlabsSpec::PuppetInternals.scope }

  it "should exist" do
    Puppet::Parser::Functions.function("str2saltedsha512").should == "function_str2saltedsha512"
  end

  it "should raise a ParseError if there is less than 1 argument" do
    expect { scope.function_str2saltedsha512([]) }.to( raise_error(Puppet::ParseError) )
  end

  it "should raise a ParseError if there is more than 1 argument" do
    expect { scope.function_str2saltedsha512(['foo', 'bar', 'baz']) }.to( raise_error(Puppet::ParseError) )
  end

  it "should return a salted-sha512 password hash 136 characters in length" do
    result = scope.function_str2saltedsha512(["password"])
    result.length.should(eq(136))
  end

  it "should raise an error if you pass a non-string password" do
    expect { scope.function_str2saltedsha512([1234]) }.to( raise_error(Puppet::ParseError) )
  end

  it "should generate a valid password" do
    # Allow the function to generate a password based on the string 'password'
    password_hash = scope.function_str2saltedsha512(["password"])

    # Separate the Salt and Password from the Password Hash
    salt     = password_hash[0..7]
    password = password_hash[8..-1]

    # Convert the Salt and Password from Hex to Binary Data
    str_salt     = Array(salt.lines).pack('H*')
    str_password = Array(password.lines).pack('H*')

    # Combine the Binary Salt with 'password' and compare the end result
    saltedpass    = Digest::SHA512.digest(str_salt + 'password')
    result        = (str_salt + saltedpass).unpack('H*')[0]
    result.should == password_hash
  end
end

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
freighthop-0.6.1 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.6.0 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.5.2 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.5.1 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.5.0 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.4.1 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.4.0 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.3.3 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.3.2 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.3.1 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.3.0 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.2.1 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.2.0 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.1.0 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.0.6 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.0.5 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.0.4 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.0.3 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.0.2 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb
freighthop-0.0.1 modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb