summaryrefslogtreecommitdiffstats
path: root/test/client
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-02-08 02:22:57 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-02-08 02:22:57 +0000
commita216df2bcb304ad379e152f2f59ef7d942f54f3b (patch)
treeeef3289c588cf44373fe959619d732c5a05ab7b5 /test/client
parent7e07e3dc843798bdbc7a03428ca054adaff2fb72 (diff)
downloadpuppet-a216df2bcb304ad379e152f2f59ef7d942f54f3b.tar.gz
puppet-a216df2bcb304ad379e152f2f59ef7d942f54f3b.tar.xz
puppet-a216df2bcb304ad379e152f2f59ef7d942f54f3b.zip
Okay, last file moves for the night. The test code has been moved to match the lib directory, and I have moved a couple of things into network/ instead of network/server, since they did not belong as much.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2180 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'test/client')
-rwxr-xr-xtest/client/client.rb193
-rwxr-xr-xtest/client/master.rb530
-rwxr-xr-xtest/client/networkclient.rb18
-rwxr-xr-xtest/client/resource.rb94
4 files changed, 0 insertions, 835 deletions
diff --git a/test/client/client.rb b/test/client/client.rb
deleted file mode 100755
index f9964f096..000000000
--- a/test/client/client.rb
+++ /dev/null
@@ -1,193 +0,0 @@
-#!/usr/bin/env ruby
-
-$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
-
-require 'puppettest'
-require 'puppet/network/client'
-
-class TestClient < Test::Unit::TestCase
- include PuppetTest::ServerTest
- # a single run through of connect, auth, etc.
- def test_sslInitWithAutosigningLocalServer
- # autosign everything, for simplicity
- Puppet[:autosign] = true
-
- # create a server to which to connect
- mkserver()
-
- # create our client
- client = nil
- assert_nothing_raised {
- client = Puppet::Network::Client::MasterClient.new(
- :Server => "localhost",
- :Port => @@port
- )
- }
-
- # get our certs
- assert_nothing_raised {
- client.initcerts
- }
-
- # make sure all of our cert files exist
- certfile = File.join(Puppet[:certdir], [client.fqdn, "pem"].join("."))
- keyfile = File.join(Puppet[:privatekeydir], [client.fqdn, "pem"].join("."))
- publickeyfile = File.join(Puppet[:publickeydir], [client.fqdn, "pem"].join("."))
-
- assert(File.exists?(keyfile))
- assert(File.exists?(certfile))
- assert(File.exists?(publickeyfile))
-
- # verify we can retrieve the configuration
- assert_nothing_raised("Client could not retrieve configuration") {
- client.getconfig
- }
-
- # and apply it
- assert_nothing_raised("Client could not apply configuration") {
- client.apply
- }
-
- # and verify that it did what it was supposed to
- assert(FileTest.exists?(@createdfile),
- "Applied file does not exist")
- end
-
-
- # here we create two servers; we
- def test_failureWithUntrustedCerts
- Puppet[:autosign] = true
-
- # create a pair of clients with no certs
- nonemaster = nil
- assert_nothing_raised {
- nonemaster = Puppet::Network::Client::MasterClient.new(
- :Server => "localhost",
- :Port => @@port
- )
- }
-
- nonebucket = nil
- assert_nothing_raised {
- nonebucket = Puppet::Network::Client::Dipper.new(
- :Server => "localhost",
- :Port => @@port
- )
- }
-
- # create a ca so we can create a set of certs
- # make a new ssldir for it
- ca = nil
- assert_nothing_raised {
- ca = Puppet::Network::Client::CA.new(
- :CA => true, :Local => true
- )
- ca.requestcert
- }
-
- # initialize our clients with this set of certs
- certmaster = nil
- assert_nothing_raised {
- certmaster = Puppet::Network::Client::MasterClient.new(
- :Server => "localhost",
- :Port => @@port
- )
- }
-
- certbucket = nil
- assert_nothing_raised {
- certbucket = Puppet::Network::Client::Dipper.new(
- :Server => "localhost",
- :Port => @@port
- )
- }
-
- # Create a new ssl root.
- confdir = tempfile()
- Puppet[:ssldir] = confdir
- Puppet.config.mkdir(:ssldir)
- Puppet.config.clearused
- Puppet.config.use(:certificates, :ca)
-
- mkserver
-
- # now verify that our client cannot do non-cert operations
- # because its certs are signed by a different CA
- assert_raise(Puppet::Error,
- "Client was allowed to call getconfig with no certs") {
- nonemaster.getconfig
- }
- assert_raise(Puppet::Error,
- "Client was allowed to call getconfig with untrusted certs") {
- certmaster.getconfig
- }
-
- assert_raise(Puppet::Network::NetworkClientError,
- "Client was allowed to call backup with no certs") {
- nonebucket.backup("/etc/passwd")
- }
- assert_raise(Puppet::Network::NetworkClientError,
- "Client was allowed to call backup with untrusted certs") {
- certbucket.backup("/etc/passwd")
- }
- end
-
- def test_classfile
- manifest = tempfile()
-
- File.open(manifest, "w") do |file|
- file.puts "class yaytest {}\n class bootest {}\n include yaytest, bootest"
- end
-
- master = client = nil
- assert_nothing_raised() {
- master = Puppet::Network::Server::Master.new(
- :Manifest => manifest,
- :UseNodes => false,
- :Local => false
- )
- }
- assert_nothing_raised() {
- client = Puppet::Network::Client::MasterClient.new(
- :Master => master
- )
- }
-
- # Fake that it's local, so it creates the class file
- client.local = false
-
- assert_nothing_raised {
- client.getconfig
- }
-
- assert(FileTest.exists?(Puppet[:classfile]), "Class file does not exist")
-
- classes = File.read(Puppet[:classfile]).split("\n")
-
- assert_equal(%w{bootest yaytest}, classes.sort)
- end
-
- def test_setpidfile
- FileUtils.mkdir_p(Puppet[:rundir])
- $clientrun = false
- newclass = Class.new(Puppet::Network::Client) do
- def run
- $clientrun = true
- end
-
- def initialize
- end
- end
-
- inst = newclass.new
-
- assert_nothing_raised {
- inst.start
- }
-
- assert(FileTest.exists?(inst.pidfile),
- "PID file was not created")
- end
-end
-
-# $Id$
diff --git a/test/client/master.rb b/test/client/master.rb
deleted file mode 100755
index b03a3ffd0..000000000
--- a/test/client/master.rb
+++ /dev/null
@@ -1,530 +0,0 @@
-#!/usr/bin/env ruby
-
-$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
-
-require 'puppettest'
-
-class TestMasterClient < Test::Unit::TestCase
- include PuppetTest::ServerTest
-
- class FakeTrans
- def initialize
- @counters = Hash.new { |h,k| h[k] = 0 }
- end
- [:evaluate, :report, :cleanup, :addtimes, :tags, :ignoreschedules].each do |m|
- define_method(m.to_s + "=") do |*args|
- @counters[m] += 1
- end
- define_method(m) do |*args|
- @counters[m] += 1
- end
- define_method(m.to_s + "?") do
- @counters[m]
- end
- end
- end
- class FakeComponent
- attr_accessor :trans
- def evaluate
- @trans = FakeTrans.new
- @trans
- end
-
- def finalize
- @finalized = true
- end
-
- def finalized?
- @finalized
- end
- end
-
- def mkmaster(file = nil)
- master = nil
-
- file ||= mktestmanifest()
- # create our master
- assert_nothing_raised() {
- # this is the default server setup
- master = Puppet::Network::Server::Master.new(
- :Manifest => file,
- :UseNodes => false,
- :Local => true
- )
- }
- return master
- end
-
- def mkclient(master = nil)
- master ||= mkmaster()
- client = nil
- assert_nothing_raised() {
- client = Puppet::Network::Client::MasterClient.new(
- :Master => master
- )
- }
-
- return client
- end
-
- def mk_fake_client
- server = Puppet::Network::Server::Master.new :Code => ""
- master = Puppet::Network::Client::MasterClient.new :Server => server, :Local => true
-
- # Now create some objects
- objects = FakeComponent.new
-
- master.send(:instance_variable_set, "@objects", objects)
-
- class << master
- def report(r)
- @reported ||= 0
- @reported += 1
- end
- def reported
- @reported ||= 0
- @reported
- end
- end
- return master, objects
- end
-
- def test_apply
- master, objects = mk_fake_client
-
- check = Proc.new do |hash|
- assert(objects.trans, "transaction was not created")
- trans = objects.trans
- hash[:yes].each do |m|
- assert_equal(1, trans.send(m.to_s + "?"), "did not call #{m} enough times")
- end
- hash[:no].each do |m|
- assert_equal(0, trans.send(m.to_s + "?"), "called #{m} too many times")
- end
- end
-
- # First try it with no arguments
- assert_nothing_raised do
- master.apply
- end
- check.call :yes => %w{evaluate cleanup addtimes}, :no => %w{report tags ignoreschedules}
- assert_equal(0, master.reported, "master sent report with reports disabled")
-
-
- # Now enable reporting and make sure the report method gets called
- Puppet[:report] = true
- assert_nothing_raised do
- master.apply
- end
- check.call :yes => %w{evaluate cleanup addtimes}, :no => %w{tags ignoreschedules}
- assert_equal(1, master.reported, "master did not send report")
-
- # Now try it with tags enabled
- assert_nothing_raised do
- master.apply("tags")
- end
- check.call :yes => %w{evaluate cleanup tags addtimes}, :no => %w{ignoreschedules}
- assert_equal(2, master.reported, "master did not send report")
-
- # and ignoreschedules
- assert_nothing_raised do
- master.apply("tags", true)
- end
- check.call :yes => %w{evaluate cleanup tags ignoreschedules addtimes}, :no => %w{}
- assert_equal(3, master.reported, "master did not send report")
- end
-
- def test_getconfig
- client = mkclient
-
- $methodsrun = []
- cleanup { $methodsrun = nil }
- client.meta_def(:getplugins) do
- $methodsrun << :getplugins
- end
- client.meta_def(:get_actual_config) do
- $methodsrun << :get_actual_config
- result = Puppet::TransBucket.new()
- result.type = "testing"
- result.name = "yayness"
- result
- end
-
- assert_nothing_raised do
- client.getconfig
- end
- [:get_actual_config].each do |method|
- assert($methodsrun.include?(method), "method %s was not run" % method)
- end
- assert(! $methodsrun.include?(:getplugins), "plugins were synced even tho disabled")
-
- # Now set pluginsync
- Puppet[:pluginsync] = true
- $methodsrun.clear
-
- assert_nothing_raised do
- client.getconfig
- end
- [:getplugins, :get_actual_config].each do |method|
- assert($methodsrun.include?(method), "method %s was not run" % method)
- end
-
- objects = client.objects
- assert(objects.finalized?, "objects were not finalized")
- end
-
- def test_disable
- FileUtils.mkdir_p(Puppet[:statedir])
- manifest = mktestmanifest
-
- master = mkmaster(manifest)
-
- client = mkclient(master)
-
- assert(! FileTest.exists?(@createdfile))
-
- assert_nothing_raised {
- client.disable
- }
-
- assert_nothing_raised {
- client.run
- }
-
- assert(! FileTest.exists?(@createdfile), "Disabled client ran")
-
- assert_nothing_raised {
- client.enable
- }
-
- assert_nothing_raised {
- client.run
- }
-
- assert(FileTest.exists?(@createdfile), "Enabled client did not run")
- end
-
- # Make sure we're getting the client version in our list of facts
- def test_clientversionfact
- facts = nil
- assert_nothing_raised {
- facts = Puppet::Network::Client::MasterClient.facts
- }
-
- assert_equal(Puppet.version.to_s, facts["clientversion"])
-
- end
-
- # Make sure non-string facts don't make things go kablooie
- def test_nonstring_facts
- FileUtils.mkdir_p(Puppet[:statedir])
- # Add a nonstring fact
- Facter.add("nonstring") do
- setcode { 1 }
- end
-
- assert_equal(1, Facter.nonstring, "Fact was a string from facter")
-
- client = mkclient()
-
- assert(! FileTest.exists?(@createdfile))
-
- assert_nothing_raised {
- client.run
- }
- end
-
- # This method is supposed
- def test_download
- source = tempfile()
- dest = tempfile()
- sfile = File.join(source, "file")
- dfile = File.join(dest, "file")
- Dir.mkdir(source)
- File.open(sfile, "w") {|f| f.puts "yay"}
-
- files = []
- assert_nothing_raised do
- files = Puppet::Network::Client::MasterClient.download(:dest => dest, :source => source, :name => "testing")
- end
-
- assert(FileTest.directory?(dest), "dest dir was not created")
- assert(FileTest.file?(dfile), "dest file was not created")
- assert_equal(File.read(sfile), File.read(dfile), "Dest file had incorrect contents")
- assert_equal([dest, dfile].sort, files.sort, "Changed files were not returned correctly")
- end
-
- def test_getplugins
- Puppet[:pluginsource] = tempfile()
- Dir.mkdir(Puppet[:pluginsource])
-
- myplugin = File.join(Puppet[:pluginsource], "myplugin.rb")
- File.open(myplugin, "w") do |f|
- f.puts %{Puppet::Type.newtype(:myplugin) do
- newparam(:argument) do
- isnamevar
- end
-end
-}
- end
-
- assert_nothing_raised {
- Puppet::Network::Client::MasterClient.getplugins
- }
-
- destfile = File.join(Puppet[:plugindest], "myplugin.rb")
-
- assert(File.exists?(destfile), "Did not get plugin")
-
- obj = Puppet::Type.type(:myplugin)
-
- assert(obj, "Did not define type")
-
- assert(obj.validattr?(:argument),
- "Did not get namevar")
-
- # Now modify the file and make sure the type is replaced
- File.open(myplugin, "w") do |f|
- f.puts %{Puppet::Type.newtype(:myplugin) do
- newparam(:yayness) do
- isnamevar
- end
-
- newparam(:rahness) do
- end
-end
-}
- end
-
- assert_nothing_raised {
- Puppet::Network::Client::MasterClient.getplugins
- }
-
- destfile = File.join(Puppet[:pluginpath], "myplugin.rb")
-
- obj = Puppet::Type.type(:myplugin)
-
- assert(obj, "Did not define type")
-
- assert(obj.validattr?(:yayness),
- "Did not get namevar")
-
- assert(obj.validattr?(:rahness),
- "Did not get other var")
-
- assert(! obj.validattr?(:argument),
- "Old namevar is still valid")
-
- # Now try it again, to make sure we don't have any objects lying around
- assert_nothing_raised {
- Puppet::Network::Client::MasterClient.getplugins
- }
- end
-
- def test_getfacts
- Puppet[:factsource] = tempfile()
- Dir.mkdir(Puppet[:factsource])
- hostname = Facter.value(:hostname)
-
- myfact = File.join(Puppet[:factsource], "myfact.rb")
- File.open(myfact, "w") do |f|
- f.puts %{Facter.add("myfact") do
- setcode { "yayness" }
-end
-}
- end
-
- assert_nothing_raised {
- Puppet::Network::Client::MasterClient.getfacts
- }
-
- destfile = File.join(Puppet[:factdest], "myfact.rb")
-
- assert(File.exists?(destfile), "Did not get fact")
-
- assert_equal(hostname, Facter.value(:hostname),
- "Lost value to hostname")
- assert_equal("yayness", Facter.value(:myfact),
- "Did not get correct fact value")
-
- # Now modify the file and make sure the type is replaced
- File.open(myfact, "w") do |f|
- f.puts %{Facter.add("myfact") do
- setcode { "funtest" }
-end
-}
- end
-
- assert_nothing_raised {
- Puppet::Network::Client::MasterClient.getfacts
- }
-
- assert_equal("funtest", Facter.value(:myfact),
- "Did not reload fact")
- assert_equal(hostname, Facter.value(:hostname),
- "Lost value to hostname")
-
- # Now run it again and make sure the fact still loads
- assert_nothing_raised {
- Puppet::Network::Client::MasterClient.getfacts
- }
-
- assert_equal("funtest", Facter.value(:myfact),
- "Did not reload fact")
- assert_equal(hostname, Facter.value(:hostname),
- "Lost value to hostname")
- end
-
- # Make sure we load all facts on startup.
- def test_loadfacts
- dirs = [tempfile(), tempfile()]
- count = 0
- names = []
- dirs.each do |dir|
- Dir.mkdir(dir)
- name = "fact%s" % count
- names << name
- file = File.join(dir, "%s.rb" % name)
-
- # Write out a plugin file
- File.open(file, "w") do |f|
- f.puts %{Facter.add("#{name}") do setcode { "#{name}" } end }
- end
- count += 1
- end
-
- Puppet[:factpath] = dirs.join(":")
-
- names.each do |name|
- assert_nil(Facter.value(name), "Somehow retrieved invalid fact")
- end
-
- assert_nothing_raised {
- Puppet::Network::Client::MasterClient.loadfacts
- }
-
- names.each do |name|
- assert_equal(name, Facter.value(name),
- "Did not retrieve facts")
- end
- end
-
- if Process.uid == 0
- # Testing #283. Make sure plugins et al are downloaded as the running user.
- def test_download_ownership
- dir = tstdir()
- dest = tstdir()
- file = File.join(dir, "file")
- File.open(file, "w") { |f| f.puts "funtest" }
-
- user = nonrootuser()
- group = nonrootgroup()
- chowner = Puppet::Type.type(:file).create :path => dir,
- :owner => user.name, :group => group.name, :recurse => true
- assert_apply(chowner)
- chowner.remove
-
- assert_equal(user.uid, File.stat(file).uid)
- assert_equal(group.gid, File.stat(file).gid)
-
-
- assert_nothing_raised {
- Puppet::Network::Client::MasterClient.download(:dest => dest, :source => dir,
- :name => "testing"
- ) {}
- }
-
- destfile = File.join(dest, "file")
-
- assert(FileTest.exists?(destfile), "Did not create destfile")
-
- assert_equal(Process.uid, File.stat(destfile).uid)
- end
- end
-
- # Test retrieving all of the facts.
- def test_facts
- facts = nil
- assert_nothing_raised do
- facts = Puppet::Network::Client::MasterClient.facts
- end
- Facter.to_hash.each do |fact, value|
- assert_equal(facts[fact.downcase], value, "%s is not equal" % fact.inspect)
- end
-
- # Make sure the puppet version got added
- assert_equal(Puppet::PUPPETVERSION, facts["clientversion"], "client version did not get added")
-
- # And make sure the ruby version is in there
- assert_equal(RUBY_VERSION, facts["rubyversion"], "ruby version did not get added")
- end
-
- # #424
- def test_caching_of_compile_time
- file = tempfile()
- manifest = tempfile()
- File.open(manifest, "w") { |f| f.puts "file { '#{file}': content => yay }" }
-
- driver = mkmaster(manifest)
- driver.local = false
- master = mkclient(driver)
-
- # We have to make everything thinks it's remote, because there's no local caching info
- master.local = false
-
- assert(! master.fresh?, "Considered fresh with no compile at all")
-
- assert_nothing_raised { master.run }
- assert(master.fresh?, "not considered fresh after compile")
-
- # Now make sure the config time is cached
- assert(master.compile_time, "No stored config time")
- assert_equal(master.compile_time, Puppet::Util::Storage.cache(:configuration)[:compile_time], "times did not match")
- time = master.compile_time
- master.clear
- File.unlink(file)
- Puppet::Util::Storage.store
-
- # Now make a new master
- Puppet::Util::Storage.clear
- master = mkclient(driver)
- master.run
- assert_equal(time, master.compile_time, "time was not retrieved from cache")
- assert(FileTest.exists?(file), "file was not created on second run")
- end
-
- def test_default_objects
- # Make sure they start out missing
- assert_nil(Puppet::Type.type(:filebucket)["puppet"],
- "default filebucket already exists")
- assert_nil(Puppet::Type.type(:schedule)["daily"],
- "default schedules already exists")
-
- master = mkclient()
-
- # Now make sure they got created
- assert(Puppet::Type.type(:filebucket)["puppet"],
- "default filebucket not found")
- assert(Puppet::Type.type(:schedule)["daily"],
- "default schedules not found")
-
- # clear everything, and make sure we can recreate them
- Puppet::Type.allclear
- assert_nil(Puppet::Type.type(:filebucket)["puppet"],
- "default filebucket not removed")
- assert_nil(Puppet::Type.type(:schedule)["daily"],
- "default schedules not removed")
- assert_nothing_raised { master.mkdefault_objects }
- assert(Puppet::Type.type(:filebucket)["puppet"],
- "default filebucket not found")
- assert(Puppet::Type.type(:schedule)["daily"],
- "default schedules not found")
-
-
- # Make sure we've got schedules
- assert(Puppet::Type.type(:schedule)["hourly"], "Could not retrieve hourly schedule")
- assert(Puppet::Type.type(:filebucket)["puppet"], "Could not retrieve default bucket")
- end
-end
-
-# $Id$
diff --git a/test/client/networkclient.rb b/test/client/networkclient.rb
deleted file mode 100755
index f7920169f..000000000
--- a/test/client/networkclient.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env ruby
-
-$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
-
-require 'puppettest'
-require 'puppet/network/client'
-
-class TestClient < Test::Unit::TestCase
- def test_set_backtrace
- error = Puppet::Network::NetworkClientError.new("An error")
- assert_nothing_raised do
- error.set_backtrace ["caller"]
- end
- end
-end
-
-# $Id$
-
diff --git a/test/client/resource.rb b/test/client/resource.rb
deleted file mode 100755
index 357a0afbe..000000000
--- a/test/client/resource.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/env ruby
-
-$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
-
-require 'puppettest'
-require 'puppet/network/client/resource'
-
-class TestResourceClient < Test::Unit::TestCase
- include PuppetTest::ServerTest
-
- def mkresourceserver
- handlers = {
- :CA => {}, # so that certs autogenerate
- :Resource => {},
- }
-
- return mkserver(handlers)
- end
-
- def mkclient
- client = nil
- assert_nothing_raised {
- client = Puppet::Network::Client::Resource.new(:Server => "localhost",
- :Port => @@port)
- }
-
- return client
- end
-
- def test_resources
- file = tempfile()
- text = "yayness\n"
- File.open(file, "w") { |f| f.print text }
-
- mkresourceserver()
-
- client = mkclient()
-
- # Test describing
- tobj = nil
- assert_nothing_raised {
- tobj = client.describe("file", file)
- }
-
- assert(tobj, "Did not get response")
-
- assert_instance_of(Puppet::TransObject, tobj)
-
- obj = nil
- assert_nothing_raised {
- obj = tobj.to_type
- }
- assert_events([], obj)
- File.unlink(file)
- assert_events([:file_created], obj)
- File.unlink(file)
-
- # Now test applying
- result = nil
- assert_nothing_raised {
- result = client.apply(tobj)
- }
- assert(FileTest.exists?(file), "File was not created on apply")
-
- # Lastly, test "list"
- list = nil
- assert_nothing_raised {
- list = client.list("user")
- }
-
- assert_instance_of(Puppet::TransBucket, list)
-
- count = 0
- list.each do |tobj|
- break if count > 3
- assert_instance_of(Puppet::TransObject, tobj)
-
- tobj2 = nil
- assert_nothing_raised {
- tobj2 = client.describe(tobj.type, tobj.name)
- }
-
- obj = nil
- assert_nothing_raised {
- obj = tobj2.to_type
- }
- assert_events([], obj)
-
- count += 1
- end
- end
-end
-
-# $Id$