Sha256: dce0689641dbe2a241bf77d144a266cd29dfc96447ddaa148620317eb1503d9c

Contents?: true

Size: 1.66 KB

Versions: 13

Compression:

Stored size: 1.66 KB

Contents

#! /usr/bin/env ruby
# Encoding: UTF-8
require 'spec_helper'

require 'puppet/util/pson'

class PsonUtil
  include Puppet::Util::Pson
end

describe Puppet::Util::Pson do
  it "should fail if no data is provided" do
    expect {
      PsonUtil.new.pson_create("type" => "foo")
    }.to raise_error(ArgumentError, /No data provided in pson data/)
  end

  it "should call 'from_pson' with the provided data" do
    pson = PsonUtil.new
    pson.expects(:from_pson).with("mydata")
    pson.pson_create("type" => "foo", "data" => "mydata")
  end

  {
    'foo' => '"foo"',
    1 => '1',
    "\x80" => "\"\x80\"",
    [] => '[]'
  }.each do |str, expect|
    it "should be able to encode #{str.inspect}" do
      got = str.to_pson
      if got.respond_to? :force_encoding
        got.force_encoding('binary').should == expect.force_encoding('binary')
      else
        got.should == expect
      end
    end
  end

  it "should be able to handle arbitrary binary data" do
    bin_string = (1..20000).collect { |i| ((17*i+13*i*i) % 255).chr }.join
    parsed = PSON.parse(%Q{{ "type": "foo", "data": #{bin_string.to_pson} }})["data"]

    if parsed.respond_to? :force_encoding
      parsed.force_encoding('binary')
      bin_string.force_encoding('binary')
    end

    parsed.should == bin_string
  end

  it "should be able to handle UTF8 that isn't a real unicode character" do
    s = ["\355\274\267"]
    PSON.parse( [s].to_pson ).should == [s]
  end

  it "should be able to handle UTF8 for \\xFF" do
    s = ["\xc3\xbf"]
    PSON.parse( [s].to_pson ).should == [s]
  end

  it "should be able to handle invalid UTF8 bytes" do
    s = ["\xc3\xc3"]
    PSON.parse( [s].to_pson ).should == [s]
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
librarian-puppet-0.9.9 vendor/gems/ruby/1.9.1/gems/puppet-3.1.0/spec/unit/util/pson_spec.rb
puppet-3.1.1 spec/unit/util/pson_spec.rb
librarian-puppet-0.9.8 vendor/gems/ruby/1.9.1/gems/puppet-3.1.0/spec/unit/util/pson_spec.rb
puppet-3.1.0 spec/unit/util/pson_spec.rb
puppet-3.1.0.rc2 spec/unit/util/pson_spec.rb
puppet-3.1.0.rc1 spec/unit/util/pson_spec.rb
puppet-3.0.2 spec/unit/util/pson_spec.rb
puppet-3.0.2.rc3 spec/unit/util/pson_spec.rb
puppet-3.0.2.rc2 spec/unit/util/pson_spec.rb
puppet-3.0.2.rc1 spec/unit/util/pson_spec.rb
puppet-3.0.1 spec/unit/util/pson_spec.rb
puppet-3.0.1.rc1 spec/unit/util/pson_spec.rb
puppet-3.0.0 spec/unit/util/pson_spec.rb