dolphindeploy 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/README.markdown +9 -0
  2. data/TODO +18 -0
  3. data/external/DolphinDeploy.IIS.IIS6.dll +0 -0
  4. data/external/Microsoft.Web.Administration.dll +0 -0
  5. data/external/TinySharpZip.dll +0 -0
  6. data/external/adsutil.vbs +2938 -0
  7. data/external/xunit/HTML.xslt +117 -0
  8. data/external/xunit/NUnitXml.xslt +121 -0
  9. data/external/xunit/xunit.console.exe +0 -0
  10. data/external/xunit/xunit.console.exe.config +21 -0
  11. data/external/xunit/xunit.console.x86.exe +0 -0
  12. data/external/xunit/xunit.console.x86.exe.config +21 -0
  13. data/external/xunit/xunit.dll +0 -0
  14. data/external/xunit/xunit.dll.tdnet +5 -0
  15. data/external/xunit/xunit.extensions.dll +0 -0
  16. data/external/xunit/xunit.extensions.xml +706 -0
  17. data/external/xunit/xunit.gui.exe +0 -0
  18. data/external/xunit/xunit.gui.x86.exe +0 -0
  19. data/external/xunit/xunit.installer.exe +0 -0
  20. data/external/xunit/xunit.runner.msbuild.dll +0 -0
  21. data/external/xunit/xunit.runner.tdnet.dll +0 -0
  22. data/external/xunit/xunit.runner.utility.dll +0 -0
  23. data/external/xunit/xunit.runner.utility.xml +1048 -0
  24. data/external/xunit/xunit.xml +2306 -0
  25. data/lib/IIS/IIS.rb +24 -0
  26. data/lib/IIS/IIS6.rb +145 -0
  27. data/lib/IIS/IIS7.rb +20 -0
  28. data/lib/IIS/IISVersion.rb +7 -0
  29. data/lib/configured_as/mvc_deployment.rb +174 -0
  30. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.5.1.ReSharper.user +39 -0
  31. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/AppPoolControllerTests.cs +39 -0
  32. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/DolphinDeploy.IIS.IIS6.Tests.csproj +69 -0
  33. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/DolphinDeploy.IIS.IIS6.Tests.csproj.user +6 -0
  34. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/Helper.cs +18 -0
  35. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/Properties/AssemblyInfo.cs +36 -0
  36. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/WebsiteControllerTests.cs +56 -0
  37. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.Tests.dll +0 -0
  38. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.Tests.pdb +0 -0
  39. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.dll +0 -0
  40. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/DolphinDeploy.IIS.IIS6.pdb +0 -0
  41. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/test_site/index.htm +9 -0
  42. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/xunit.dll +0 -0
  43. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/bin/Debug/xunit.xml +2306 -0
  44. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache +0 -0
  45. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DolphinDeploy.IIS.IIS6.Tests.csproj.FileListAbsolute.txt +12 -0
  46. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DolphinDeploy.IIS.IIS6.Tests.dll +0 -0
  47. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/DolphinDeploy.IIS.IIS6.Tests.pdb +0 -0
  48. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/obj/Debug/ResolveAssemblyReference.cache +0 -0
  49. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.Tests/test_site/index.htm +9 -0
  50. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.sln +26 -0
  51. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.suo +0 -0
  52. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/AppPoolController.cs +41 -0
  53. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6.csproj +56 -0
  54. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/IIS6Manager.cs +77 -0
  55. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/Properties/AssemblyInfo.cs +36 -0
  56. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/WebsiteController.cs +101 -0
  57. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/bin/Debug/DolphinDeploy.IIS.IIS6.dll +0 -0
  58. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/bin/Debug/DolphinDeploy.IIS.IIS6.pdb +0 -0
  59. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache +0 -0
  60. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DolphinDeploy.IIS.IIS6.csproj.FileListAbsolute.txt +7 -0
  61. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DolphinDeploy.IIS.IIS6.dll +0 -0
  62. data/lib/csharp/DolphinDeploy.IIS.IIS6/DolphinDeploy.IIS.IIS6/obj/Debug/DolphinDeploy.IIS.IIS6.pdb +0 -0
  63. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/BuildScriptCache/1/78fc7364.dat +0 -0
  64. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/ModuleIds.xml +4 -0
  65. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/NamedArguments/5/4b9722ad.dat +0 -0
  66. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/PdbInfo/61d4d5326252d9cd7476a391dfbbb2a47481ffa6 +0 -0
  67. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/ProjectModel/ProjectModel.dat +0 -0
  68. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/SymbolCache.bin +0 -0
  69. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/TodoCache/1/78fc7364.dat +0 -0
  70. data/lib/csharp/DolphinDeploy.IIS.IIS6/_ReSharper.DolphinDeploy.IIS.IIS6/WordIndex/1/72ab4678.dat +0 -0
  71. data/lib/deploycommandcreator.rb +34 -0
  72. data/lib/deploymentconfig.rb +15 -0
  73. data/lib/directory_cleanup.rb +16 -0
  74. data/lib/dolphindeploy.rb +12 -0
  75. data/lib/dolphindeploy_rake.rb +36 -0
  76. data/lib/file_manager.rb +30 -0
  77. data/lib/unzip.rb +11 -0
  78. data/spec/IIS/IIS6_spec.rb +24 -0
  79. data/spec/IIS/IIS_spec.rb +18 -0
  80. data/spec/config_spec.rb +170 -0
  81. data/spec/configured_as/mvc_deployment_spec.rb +103 -0
  82. data/spec/deploycommandcreator_spec.rb +162 -0
  83. data/spec/dolphindeploy_spec.rb +13 -0
  84. data/spec/file_manager_spec.rb +20 -0
  85. data/spec/support/spec_helper.rb +17 -0
  86. metadata +159 -0
@@ -0,0 +1,24 @@
1
+ require 'IISVersion'
2
+
3
+ class IIS
4
+ def self.server
5
+ if(IISVersion.current_version =~ /^6/)
6
+ require 'IIS6'
7
+ version = IIS6.new
8
+ else
9
+ # Temp
10
+ require 'IIS6'
11
+ version = IIS6.new
12
+ end
13
+
14
+ return version
15
+ end
16
+ ### Will be executed on the local box, might be able to refactor 'server' out.
17
+ def deploy(server, location, deployment)
18
+ IIS.server.deploy(server, location, deployment)
19
+ end
20
+
21
+ def set_extra_header(header, deployment)
22
+ IIS.server.set_extra_header header,deployment
23
+ end
24
+ end
@@ -0,0 +1,145 @@
1
+ $: << 'external'
2
+ load_assembly 'DolphinDeploy.IIS.IIS6'
3
+ load_assembly 'System.DirectoryServices'
4
+ include DolphinDeploy::IIS::IIS6
5
+ include System::DirectoryServices
6
+
7
+ class IIS6
8
+ def deploy(server, location, deployment)
9
+ unless apppool_exists?(server, deployment)
10
+ create_app_pool(server, deployment.site_name) #Server is only so we can pull out correct path to deploy too
11
+ end
12
+
13
+ if(website_exists?(server, deployment))
14
+ update_website_path(server, location, deployment)
15
+ else
16
+ create_website(server, location, deployment)
17
+ end
18
+ end
19
+
20
+ def website_exists?(server, deployment)
21
+ website = WebsiteController.new
22
+ website.server = server
23
+ website.name = deployment.site_name
24
+
25
+ return website.exists
26
+ end
27
+
28
+ def apppool_exists?(server, deployment)
29
+ app_pool = AppPoolController.new
30
+ app_pool.server = server
31
+ app_pool.name = get_app_pool_name(deployment.site_name)
32
+
33
+ return app_pool.exists
34
+ end
35
+
36
+ def set_extra_header(server, header, deployment)
37
+ site = get_website('localhost', deployment)
38
+
39
+ header.each do |h|
40
+ existing_headers = get_existing_headers(site)
41
+ header_arg = ""
42
+
43
+ existing_headers.each {|e| header_arg << "\"#{e}\" "}
44
+
45
+ ip = deployment.get_deploy_to_location(server)[0].ipaddress
46
+
47
+ cmd = "cscript /nologo external\\adsutil.vbs set w3svc/#{site.name}/ServerBindings \"#{ip}:#{h}\" #{header_arg}"
48
+ `#{cmd}`
49
+ end
50
+ end
51
+
52
+ def create_virtual_directory(name, path, deployment)
53
+ site = get_website('localhost', deployment)
54
+ cmd = "cscript /nologo external\\adsutil.vbs CREATE w3svc/#{site.name}/root/#{name} \"IIsWebVirtualDir\""
55
+ `#{cmd}`
56
+
57
+ root_site = get_root_site(site)
58
+ full_path = File.join(root_site.Properties['Path'][0], path)
59
+ cmd = "cscript /nologo external\\adsutil.vbs SET w3svc/#{site.name}/root/#{name}/path #{convert_path_to_iis_format(full_path)}"
60
+ `#{cmd}`
61
+ end
62
+
63
+ def execute_admin(type, cmd, deployment)
64
+ site = get_website('localhost', deployment)
65
+ cmd = "cscript /nologo external\\adsutil.vbs #{type.to_s} w3svc/#{site.name}/#{cmd}"
66
+ `#{cmd}`
67
+ end
68
+
69
+ private
70
+
71
+ def get_existing_headers(site)
72
+ cmd = "cscript /nologo external\\adsutil.vbs get w3svc/#{site.name}/ServerBindings"
73
+ result = `#{cmd}`
74
+ headers = result.to_a[1..-1].join
75
+
76
+ headers = clean_output(headers)
77
+
78
+ return headers
79
+ end
80
+
81
+ def create_app_pool(server, name)
82
+ app_pool = AppPoolController.new
83
+ app_pool.server = server # Always executed on the local box
84
+ app_pool.name = get_app_pool_name(name)
85
+ app_pool.create
86
+ end
87
+
88
+ def update_website_path(server, location, deployment)
89
+ site = get_website(server, deployment)
90
+
91
+ root_site = get_root_site(site)
92
+ root_site.Properties['Path'][0] = convert_path_to_iis_format(location)
93
+ root_site.commit_changes()
94
+ end
95
+
96
+ def get_website(server, deployment)
97
+ website = WebsiteController.new
98
+ website.name = deployment.site_name
99
+ website.server = server
100
+ website.get_website()
101
+ end
102
+
103
+ def create_website(server, location, deployment)
104
+ website = WebsiteController.new
105
+ website.name = deployment.site_name
106
+ website.app_pool = get_app_pool_name(deployment.site_name)
107
+ website.home_directory = convert_path_to_iis_format(location)
108
+ website.port = deployment.port
109
+ website.IpAddress = deployment.get_deploy_to_location(server)[0].ipaddress
110
+ website.host_header = deployment.host
111
+ website.server = server
112
+
113
+ website.create
114
+ website.start
115
+
116
+ #set_isapi_filter(deployment)
117
+ end
118
+
119
+ def set_isapi_filter(deployment)
120
+ execute_admin(:set, "ScriptMaps \"*,C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\aspnet_isapi.dll,1\"", deployment)
121
+ end
122
+
123
+ def get_app_pool_name(name)
124
+ "#{name}_AppPool"
125
+ end
126
+
127
+ def convert_path_to_iis_format(path)
128
+ path.gsub('/','\\').to_clr_string
129
+ end
130
+
131
+ def get_root_site(site)
132
+ path = "IIS://localhost/w3svc/#{site.name}/ROOT"
133
+ DirectoryEntry.new(path.to_clr_string)
134
+ end
135
+
136
+ def clean_output(output)
137
+ result = []
138
+
139
+ output.each do |o|
140
+ result << o.strip.gsub("\n", "")
141
+ end
142
+
143
+ return result
144
+ end
145
+ end
@@ -0,0 +1,20 @@
1
+ class IIS7
2
+
3
+ def deploy(server, location, deployment)
4
+ end
5
+
6
+ def exists?(server, deployment)
7
+ end
8
+
9
+ private
10
+
11
+ def create_app_pool(server, name)
12
+ end
13
+
14
+ def create_website(server, location, deployment)
15
+ end
16
+
17
+ def get_app_pool_name(name)
18
+ "#{name}_AppPool"
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ include System::Diagnostics
2
+
3
+ class IISVersion
4
+ def self.current_version()
5
+ FileVersionInfo.GetVersionInfo(System::Environment.SystemDirectory + "\\inetsrv\\inetinfo.exe").product_version
6
+ end
7
+ end
@@ -0,0 +1,174 @@
1
+ class MvcDeployment
2
+ attr_accessor :environment
3
+ attr_accessor :host
4
+ attr_accessor :to
5
+ attr_accessor :port
6
+ attr_accessor :ipaddress
7
+ attr_accessor :description
8
+ attr_accessor :site_name
9
+ attr_accessor :deploy_zip_path
10
+ attr_accessor :before
11
+ attr_accessor :after
12
+
13
+ def initialize()
14
+ set_defaults
15
+ end
16
+
17
+ def set_defaults()
18
+ self.port = 80
19
+ self.description = "MvcDeployment"
20
+ end
21
+
22
+ def set_name(name)
23
+ self.site_name = name
24
+ end
25
+
26
+ def set_deploy(path)
27
+ self.deploy_zip_path = path
28
+ end
29
+
30
+ def set_description(desc)
31
+ self.description = desc
32
+ end
33
+
34
+ def set_host(header)
35
+ self.host = header
36
+ end
37
+
38
+ def set_ipaddress(address)
39
+ self.ipaddress = address
40
+ end
41
+
42
+ def set_port(num)
43
+ self.port = num
44
+ end
45
+
46
+ def set_environment(env)
47
+ self.environment = env
48
+ end
49
+
50
+ def set_to(locations)
51
+ self.to = []
52
+
53
+ i = 0
54
+ while i < locations.length
55
+ location = DeployTo.new
56
+ location.server = locations[i]
57
+ location.path = locations[i + 1]
58
+ location.ipaddress = locations[i + 2]
59
+
60
+ self.to << location
61
+ i = i + 3
62
+ end
63
+ end
64
+
65
+ def set_before(block)
66
+ self.before = block
67
+ end
68
+
69
+ def set_after(block)
70
+ self.after = block
71
+ end
72
+
73
+ def add_machine_name_host_header(server, header)
74
+ hostname = `hostname`
75
+ updated_header = header.gsub("<machinename>", hostname.gsub("\n", ""))
76
+
77
+ iis = IIS.server
78
+ iis.set_extra_header(server, updated_header, self)
79
+ end
80
+
81
+ def extra_header(server, header) #Header will contain array of all the headers being added
82
+ iis = IIS.server
83
+ iis.set_extra_header(server, header, self)
84
+ end
85
+
86
+ def virtual_directory(server, vDirInfo) #Directories will contain array of all the virtual directories being added
87
+ iis = IIS.server
88
+
89
+ i = 0
90
+ while i < vDirInfo.length
91
+ name = vDirInfo[i]
92
+ path = vDirInfo[i + 1]
93
+
94
+ iis.create_virtual_directory(name, path, self)
95
+ i = i + 2
96
+ end
97
+ end
98
+
99
+ def cmd(server, command)
100
+ `#{command}`
101
+ end
102
+
103
+ def iis(server, command)
104
+ iis = IIS.server
105
+
106
+ i = 0
107
+ while i < command.length
108
+ type = command[i]
109
+ cmd = command[i + 1]
110
+
111
+ iis.execute_admin(type, cmd, self)
112
+ i = i + 2
113
+ end
114
+
115
+ end
116
+
117
+ def get_deploy_to_location(server)
118
+ self.to.select{|t| t.server == server}
119
+ end
120
+
121
+ def get_location(server)
122
+ servers = get_deploy_to_location(server)
123
+ servers[0].path
124
+ end
125
+
126
+ def deploy(server)
127
+ execute_before_methods(server)
128
+
129
+ location = get_location(server)
130
+
131
+ fm = FileManager.new
132
+ latest_version_location = fm.get_latest_version(location, self.site_name)
133
+
134
+ fm.extract(latest_version_location, self.deploy_zip_path, self.environment)
135
+
136
+ iis = IIS.new
137
+ iis.deploy(server, latest_version_location, self)
138
+
139
+ execute_after_methods(server)
140
+ end
141
+
142
+ def execute_before_methods(server)
143
+ unless self.before.nil?
144
+ self.before.each do |k, v|
145
+ call_method(k, server, v)
146
+ end
147
+ end
148
+ end
149
+
150
+ def execute_after_methods(server)
151
+ unless self.after.nil?
152
+ self.after.each do |k, v|
153
+ call_method(k, server, v)
154
+ end
155
+ end
156
+ end
157
+
158
+ def call_method(method_name, server, param)
159
+ if self.respond_to?(method_name)
160
+ if self.method(method_name).arity == 2
161
+ self.send(method_name, server, param)
162
+ else
163
+ self.send(method_name, param)
164
+ end
165
+ end
166
+ end
167
+
168
+ end
169
+
170
+ class DeployTo
171
+ attr_accessor :server
172
+ attr_accessor :path
173
+ attr_accessor :ipaddress
174
+ end
@@ -0,0 +1,39 @@
1
+ <Configuration>
2
+ <SettingsComponent>
3
+ <string />
4
+ <integer />
5
+ <boolean>
6
+ <setting name="SolutionAnalysisEnabled">False</setting>
7
+ </boolean>
8
+ </SettingsComponent>
9
+ <CompletionStatisticsManager>
10
+ <ItemStatistics item="Default">
11
+ <Item value="prop" priority="0" />
12
+ </ItemStatistics>
13
+ </CompletionStatisticsManager>
14
+ <RecentFiles>
15
+ <RecentFiles>
16
+ <File id="42DA9D8E-0106-4875-896B-3B45C9EC0C01/f:IIS6Manager.cs" caret="242" fromTop="8" />
17
+ <File id="42DA9D8E-0106-4875-896B-3B45C9EC0C01/f:WebsiteController.cs" caret="2456" fromTop="15" />
18
+ <File id="d:Miscellaneous Files/f:~vs4EE2.xml/l:C!?Users?BENHAL~1?AppData?Local?Temp?~vs4EE2.xml" caret="10482" fromTop="30" />
19
+ <File id="d:Miscellaneous Files/f:postdeploy.xml/l:D!?Users?Ben Hall?Downloads?postdeploy.xml" caret="11967" fromTop="24" />
20
+ </RecentFiles>
21
+ <RecentEdits>
22
+ <File id="42DA9D8E-0106-4875-896B-3B45C9EC0C01/f:IIS6Manager.cs" caret="242" fromTop="8" />
23
+ <File id="42DA9D8E-0106-4875-896B-3B45C9EC0C01/f:WebsiteController.cs" caret="276" fromTop="9" />
24
+ <File id="42DA9D8E-0106-4875-896B-3B45C9EC0C01/f:WebsiteController.cs" caret="2747" fromTop="23" />
25
+ <File id="d:Miscellaneous Files/f:~vs4EE2.xml/l:C!?Users?BENHAL~1?AppData?Local?Temp?~vs4EE2.xml" caret="12535" fromTop="48" />
26
+ </RecentEdits>
27
+ </RecentFiles>
28
+ <NAntValidationSettings>
29
+ <NAntPath value="" />
30
+ </NAntValidationSettings>
31
+ <UnitTestRunner>
32
+ <Providers />
33
+ </UnitTestRunner>
34
+ <UnitTestRunnerNUnit>
35
+ <NUnitInstallDir IsNull="False">
36
+ </NUnitInstallDir>
37
+ <UseAddins>Never</UseAddins>
38
+ </UnitTestRunnerNUnit>
39
+ </Configuration>
@@ -0,0 +1,39 @@
1
+ using Xunit;
2
+
3
+ namespace DolphinDeploy.IIS.IIS6.Tests
4
+ {
5
+ public class AppPoolControllerTests
6
+ {
7
+ [Fact]
8
+ public void Can_create_app_pool()
9
+ {
10
+ AppPoolController poolControllerController = CreateController();
11
+ poolControllerController.Create();
12
+
13
+ Assert.True(poolControllerController.Exists());
14
+ }
15
+
16
+ [Fact]
17
+ public void Exists_returns_false_if_not_created()
18
+ {
19
+ AppPoolController poolControllerController = CreateController();
20
+ Assert.False(poolControllerController.Exists());
21
+ }
22
+
23
+ [Fact]
24
+ public void Can_Delete_AppPool()
25
+ {
26
+ AppPoolController poolControllerController = CreateController();
27
+ Assert.DoesNotThrow(poolControllerController.Delete);
28
+ }
29
+
30
+ private AppPoolController CreateController()
31
+ {
32
+ var appController = new AppPoolController();
33
+ appController.Server = "localhost";
34
+ appController.Name = "MasterAppPool";
35
+
36
+ return appController;
37
+ }
38
+ }
39
+ }