require 'test/unit'
require 'rubygems'
require 'mocha'
CHEF_VPC_PROJECT = "#{File.dirname(__FILE__)}" unless defined?(CHEF_VPC_PROJECT)

$:.unshift File.dirname(__FILE__) + '/../lib'
require 'chef-vpc-toolkit'

require 'tempfile'
require 'fileutils'

class TmpDir

	def self.new_tmp_dir(prefix="chef-vpc-toolkit")

		tmp_file=Tempfile.new prefix
		path=tmp_file.path
		tmp_file.close(true)
		FileUtils.mkdir_p path
		return path

	end

end

SERVER_GROUP_XML = %{
<?xml version="1.0" encoding="UTF-8"?>
<server-group>
  <created-at type="datetime">2010-10-15T15:15:58-04:00</created-at>
  <description>test description</description>
  <domain-name>mydomain.net</domain-name>
  <historical type="boolean">false</historical>
  <id type="integer">1759</id>
  <last-used-ip-address>172.19.0.2</last-used-ip-address>
  <name>test</name>
  <owner-name>dan.prince</owner-name>
  <updated-at type="datetime">2010-10-15T15:15:58-04:00</updated-at>
  <user-id type="integer">3</user-id>
  <vpn-network>172.19.0.0</vpn-network>
  <vpn-subnet>255.255.128.0</vpn-subnet>
  <servers type="array">
    <server>
      <account-id type="integer">3</account-id>
      <cloud-server-id-number type="integer">1</cloud-server-id-number>
      <created-at type="datetime">2010-10-15T15:15:58-04:00</created-at>
      <description>login1</description>
      <error-message nil="true"></error-message>
      <external-ip-addr>184.106.205.120</external-ip-addr>
      <flavor-id type="integer">4</flavor-id>
      <historical type="boolean">false</historical>
      <id type="integer">5513</id>
      <image-id type="integer">14</image-id>
      <internal-ip-addr>10.179.107.203</internal-ip-addr>
      <name>login1</name>
      <openvpn-server type="boolean">true</openvpn-server>
      <retry-count type="integer">0</retry-count>
      <server-group-id type="integer">1759</server-group-id>
      <status>Online</status>
      <updated-at type="datetime">2010-10-15T15:18:22-04:00</updated-at>
      <vpn-network-interfaces type="array"/>
    </server>
    <server>
      <account-id type="integer">3</account-id>
      <cloud-server-id-number type="integer">2</cloud-server-id-number>
      <created-at type="datetime">2010-10-15T15:15:58-04:00</created-at>
      <description>test1</description>
      <error-message nil="true"></error-message>
      <external-ip-addr>184.106.205.121</external-ip-addr>
      <flavor-id type="integer">49</flavor-id>
      <historical type="boolean">false</historical>
      <id type="integer">5513</id>
      <image-id type="integer">49</image-id>
      <internal-ip-addr>10.179.107.204</internal-ip-addr>
      <name>test1</name>
      <openvpn-server type="boolean">false</openvpn-server>
      <retry-count type="integer">0</retry-count>
      <server-group-id type="integer">1759</server-group-id>
      <status>Online</status>
      <updated-at type="datetime">2010-10-15T15:18:22-04:00</updated-at>
      <vpn-network-interfaces type="array"/>
    </server>
  </servers>
</server-group>
}

CLIENT_XML = %{
<client>
  <created-at type="datetime">2011-01-09T19:37:32-05:00</created-at>
  <description>Toolkit Client: local</description>
  <id type="integer">5</id>
  <is-windows type="boolean">false</is-windows>
  <name>local</name>
  <server-group-id type="integer">11</server-group-id>
  <status>Online</status>
  <updated-at type="datetime">2011-01-09T19:37:37-05:00</updated-at>
  <vpn-network-interfaces type="array">
    <vpn-network-interface>
      <ca-cert>-----BEGIN CERTIFICATE-----
MIIDyDCCAzGgAwIBAgIJAORNZNRpPx87MA0GCSqGSIb3DQEBBQUAMIGfMQswCQYD
VQQGEwJVUzELMAkGA1UECBMCVkExEzARBgNVBAcTCkJsYWNrc2J1cmcxEjAQBgNV
BAoTCVJhY2tzcGFjZTEXMBUGA1UECxMOSW5mcmFzdHJ1Y3R1cmUxDjAMBgNVBAMT
BWxvZ2luMQ4wDAYDVQQpEwVsb2dpbjEhMB8GCSqGSIb3DQEJARYSY29icmFAc25h
a2VvaWwuY29tMB4XDTExMDExMDAwMzI1NVoXDTIxMDEwNzAwMzI1NVowgZ8xCzAJ
BgNVBAYTAlVTMQswCQYDVQQIEwJWQTETMBEGA1UEBxMKQmxhY2tzYnVyZzESMBAG
A1UEChMJUmFja3NwYWNlMRcwFQYDVQQLEw5JbmZyYXN0cnVjdHVyZTEOMAwGA1UE
AxMFbG9naW4xDjAMBgNVBCkTBWxvZ2luMSEwHwYJKoZIhvcNAQkBFhJjb2JyYUBz
bmFrZW9pbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL0xIVIfh8rA
OCfc4BbWG+W+53iP9J6Fqhya5HSrYw3pdUCdimRBwQ0HoEnHndz2soRYc2Wtat8L
qqoS/qZMBbqerzEUFHumSKLADT3y8G1gkiGsb1fBZPmExPYyG/UQQUfK7CIM/L/m
W6Ji5ZEfTF9QPwHj3kVU99VUvm/BS8wXAgMBAAGjggEIMIIBBDAdBgNVHQ4EFgQU
dOvLRyxDa2Xso59PFLf22sZQ07wwgdQGA1UdIwSBzDCByYAUdOvLRyxDa2Xso59P
FLf22sZQ07yhgaWkgaIwgZ8xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJWQTETMBEG
A1UEBxMKQmxhY2tzYnVyZzESMBAGA1UEChMJUmFja3NwYWNlMRcwFQYDVQQLEw5J
bmZyYXN0cnVjdHVyZTEOMAwGA1UEAxMFbG9naW4xDjAMBgNVBCkTBWxvZ2luMSEw
HwYJKoZIhvcNAQkBFhJjb2JyYUBzbmFrZW9pbC5jb22CCQDkTWTUaT8fOzAMBgNV
HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAAVXIxOocwXi05004m9Znff6/cAj
2osr72g/Xux++lVqiSHf+T/R4QywsXy9//vKeXVEIyaaP9ImnWbbzHFFI+NStP4n
LILyv+/eOuZ6Dv7Vv6ZacjI3fexcXYr5VW52HHbb/M7G1ePAfdAixUHNH7lh58dY
WDzmJicksUYlyvI+
-----END CERTIFICATE-----
</ca-cert>
      <client-cert>-----BEGIN CERTIFICATE-----
MIIEDjCCA3egAwIBAgIBAzANBgkqhkiG9w0BAQUFADCBnzELMAkGA1UEBhMCVVMx
CzAJBgNVBAgTAlZBMRMwEQYDVQQHEwpCbGFja3NidXJnMRIwEAYDVQQKEwlSYWNr
c3BhY2UxFzAVBgNVBAsTDkluZnJhc3RydWN0dXJlMQ4wDAYDVQQDEwVsb2dpbjEO
MAwGA1UEKRMFbG9naW4xITAfBgkqhkiG9w0BCQEWEmNvYnJhQHNuYWtlb2lsLmNv
bTAeFw0xMTAxMTAwMDM3MzVaFw0yMTAxMDcwMDM3MzVaMIGfMQswCQYDVQQGEwJV
UzELMAkGA1UECBMCVkExEzARBgNVBAcTCkJsYWNrc2J1cmcxEjAQBgNVBAoTCVJh
Y2tzcGFjZTEXMBUGA1UECxMOSW5mcmFzdHJ1Y3R1cmUxDjAMBgNVBAMTBWxvY2Fs
MQ4wDAYDVQQpEwVsb2dpbjEhMB8GCSqGSIb3DQEJARYSY29icmFAc25ha2VvaWwu
Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCefsUr0T4oQUjKjW7Dpx0t
KwwafBF2HUW7CI75apeTjSBgYC1CHC6cggfFkUTFvndzspbGaeuJeYtvcvkAa2BD
p4jlSJgEXa+Uy1UAj1y06BePLNbKF4EfgEGf3eIWcdOtLYbOg4k33uNgto168iVO
owWOR+B2/z73NIHWxvtF3wIDAQABo4IBVjCCAVIwCQYDVR0TBAIwADAtBglghkgB
hvhCAQ0EIBYeRWFzeS1SU0EgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQW
BBSRXbeuamcuma4yo5B8IYSGGT3fNjCB1AYDVR0jBIHMMIHJgBR068tHLENrZeyj
n08Ut/baxlDTvKGBpaSBojCBnzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlZBMRMw
EQYDVQQHEwpCbGFja3NidXJnMRIwEAYDVQQKEwlSYWNrc3BhY2UxFzAVBgNVBAsT
DkluZnJhc3RydWN0dXJlMQ4wDAYDVQQDEwVsb2dpbjEOMAwGA1UEKRMFbG9naW4x
ITAfBgkqhkiG9w0BCQEWEmNvYnJhQHNuYWtlb2lsLmNvbYIJAORNZNRpPx87MBMG
A1UdJQQMMAoGCCsGAQUFBwMCMAsGA1UdDwQEAwIHgDANBgkqhkiG9w0BAQUFAAOB
gQApPAG1suVSPugJyQGfBaL8H+7VJdAGXnc6INX5s1AxJ3mvp4o6PQ7ytP4v/QkJ
ZVMgWV8immfa3PboFgT00qqpbC2Vbf4RR972IEQfGuJLLl4YLrJsbloV9hBamKS7
Z1lllmEHxFWpNK2FLSZNaeQABZyvzfZYkk6zsHoY8XsCBg==
-----END CERTIFICATE-----
</client-cert>
      <client-key>-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCefsUr0T4oQUjKjW7Dpx0tKwwafBF2HUW7CI75apeTjSBgYC1C
HC6cggfFkUTFvndzspbGaeuJeYtvcvkAa2BDp4jlSJgEXa+Uy1UAj1y06BePLNbK
F4EfgEGf3eIWcdOtLYbOg4k33uNgto168iVOowWOR+B2/z73NIHWxvtF3wIDAQAB
AoGAf3tFykWl8ij4jHsP8Wz0CcWLGa5bOR64XIS4wyKaQoML3JjfLkKOtzHbYGzE
3Syi1bt6jKLbYZsSrRTT9SNorB3M2HI/uu1NHVyJ8fqxSJs9wQWv26XcMq6iPXR6
JQmiG44r0NoHtDOw0NCoo+9il4wjTIVSwN58x69EO1hsWokCQQDREYW73F536KzN
GSsLy+8VsaRiHCboi7lZwITGt4xFhykP/P5R/mNMTklVpJENuZH5jhiBr8r2O/XE
NQpIEZiFAkEAwhL4EnXax5p50g2CpkJM2B9F/p3IjjMs/sdUh4/RvAVkVAzz7uOh
TjtrL0T6480wA7rk3324IG5x4XTgXYVkEwJBAKkg7LgJ0N5d+xS8TIdxhctd9uZr
ccpj5iDGTmNXbwF8EurdNnvsODYtisPeqn2Y5o8ktYyMQrupy+rbIaMloOUCQAsI
pQ33oV6jy7VDi2AEePX4oTQeqF5dTnuVvZqPdK8p51BYBC5axrr56dggJdt5uPcd
UxHZxfQiE1tsF615ff0CQQCjeBskODATJkbN0kw+6FIF9m7QoEAYtJD1jLiY/2Sv
QRiYX+gvycrIph1yyIGA1qeHYnjhQp4ZijhcwSFUAAyF
-----END RSA PRIVATE KEY-----
</client-key>
      <created-at type="datetime">2011-01-09T19:37:32-05:00</created-at>
      <id type="integer">15</id>
      <interfacable-id type="integer">5</interfacable-id>
      <interfacable-type>Client</interfacable-type>
      <ptp-ip-addr>172.19.0.6</ptp-ip-addr>
      <updated-at type="datetime">2011-01-09T19:37:36-05:00</updated-at>
      <vpn-ip-addr>172.19.0.5</vpn-ip-addr>
    </vpn-network-interface>
  </vpn-network-interfaces>
</client>
}

SERVER_XML = %{

<linux-server> 
  <cloud-server-id-number type="integer">888</cloud-server-id-number> 
  <created-at type="datetime">2010-07-29T10:27:33-04:00</created-at> 
  <description>blah</description> 
  <error-message nil="true"></error-message> 
  <external-ip-addr>123.100.100.100</external-ip-addr> 
  <flavor-id type="integer">3</flavor-id> 
  <id type="integer">1234</id> 
  <image-id type="integer">14</image-id> 
  <internal-ip-addr>10.119.225.116</internal-ip-addr> 
  <name>db1</name> 
  <openvpn-server type="boolean">false</openvpn-server> 
  <retry-count type="integer">0</retry-count> 
  <server-group-id type="integer">999</server-group-id> 
  <status>Online</status> 
  <updated-at type="datetime">2010-07-29T11:19:04-04:00</updated-at> 
</linux-server>
}