chef 16.18.30-universal-mingw32 → 17.0.242-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (881) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -22
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/chef-universal-mingw32.gemspec +1 -2
  6. data/chef.gemspec +7 -10
  7. data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.Wrapper.dll +0 -0
  8. data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.dll +0 -0
  9. data/distro/ruby_bin_folder/AMD64/Ijwhost.dll +0 -0
  10. data/distro/ruby_bin_folder/AMD64/concrt140.dll +0 -0
  11. data/distro/ruby_bin_folder/AMD64/host/fxr/5.0.0/hostfxr.dll +0 -0
  12. data/distro/ruby_bin_folder/AMD64/msvcp140.dll +0 -0
  13. data/distro/ruby_bin_folder/AMD64/msvcp140_1.dll +0 -0
  14. data/distro/ruby_bin_folder/AMD64/msvcp140_2.dll +0 -0
  15. data/distro/ruby_bin_folder/AMD64/msvcp140_atomic_wait.dll +0 -0
  16. data/distro/ruby_bin_folder/AMD64/msvcp140_codecvt_ids.dll +0 -0
  17. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
  18. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
  19. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
  20. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Ijwhost.dll +0 -0
  21. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.CSharp.dll +0 -0
  22. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.NETCore.App.deps.json +180 -180
  23. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.VisualBasic.Core.dll +0 -0
  24. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.VisualBasic.dll +0 -0
  25. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.Win32.Primitives.dll +0 -0
  26. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.Win32.Registry.dll +0 -0
  27. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.AppContext.dll +0 -0
  28. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Buffers.dll +0 -0
  29. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Collections.Concurrent.dll +0 -0
  30. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Collections.Immutable.dll +0 -0
  31. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Collections.NonGeneric.dll +0 -0
  32. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Collections.Specialized.dll +0 -0
  33. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Collections.dll +0 -0
  34. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.Annotations.dll +0 -0
  35. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.DataAnnotations.dll +0 -0
  36. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.EventBasedAsync.dll +0 -0
  37. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.Primitives.dll +0 -0
  38. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.TypeConverter.dll +0 -0
  39. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ComponentModel.dll +0 -0
  40. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Configuration.dll +0 -0
  41. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Console.dll +0 -0
  42. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Core.dll +0 -0
  43. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Data.Common.dll +0 -0
  44. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Data.DataSetExtensions.dll +0 -0
  45. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Data.dll +0 -0
  46. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.Contracts.dll +0 -0
  47. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.Debug.dll +0 -0
  48. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.DiagnosticSource.dll +0 -0
  49. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.FileVersionInfo.dll +0 -0
  50. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.Process.dll +0 -0
  51. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.StackTrace.dll +0 -0
  52. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.TextWriterTraceListener.dll +0 -0
  53. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.Tools.dll +0 -0
  54. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.TraceSource.dll +0 -0
  55. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.Tracing.dll +0 -0
  56. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.Primitives.dll +0 -0
  57. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.dll +0 -0
  58. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Dynamic.Runtime.dll +0 -0
  59. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Formats.Asn1.dll +0 -0
  60. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Globalization.Calendars.dll +0 -0
  61. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Globalization.Extensions.dll +0 -0
  62. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Globalization.dll +0 -0
  63. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Compression.Brotli.dll +0 -0
  64. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Compression.FileSystem.dll +0 -0
  65. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Compression.ZipFile.dll +0 -0
  66. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Compression.dll +0 -0
  67. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.FileSystem.AccessControl.dll +0 -0
  68. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.FileSystem.DriveInfo.dll +0 -0
  69. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.FileSystem.Primitives.dll +0 -0
  70. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.FileSystem.Watcher.dll +0 -0
  71. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.FileSystem.dll +0 -0
  72. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.IsolatedStorage.dll +0 -0
  73. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.MemoryMappedFiles.dll +0 -0
  74. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Pipes.AccessControl.dll +0 -0
  75. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.Pipes.dll +0 -0
  76. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.UnmanagedMemoryStream.dll +0 -0
  77. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.IO.dll +0 -0
  78. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Linq.Expressions.dll +0 -0
  79. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Linq.Parallel.dll +0 -0
  80. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Linq.Queryable.dll +0 -0
  81. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Linq.dll +0 -0
  82. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Memory.dll +0 -0
  83. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Http.Json.dll +0 -0
  84. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Http.dll +0 -0
  85. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.HttpListener.dll +0 -0
  86. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Mail.dll +0 -0
  87. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.NameResolution.dll +0 -0
  88. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.NetworkInformation.dll +0 -0
  89. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Ping.dll +0 -0
  90. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Primitives.dll +0 -0
  91. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Requests.dll +0 -0
  92. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Security.dll +0 -0
  93. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.ServicePoint.dll +0 -0
  94. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.Sockets.dll +0 -0
  95. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.WebClient.dll +0 -0
  96. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.WebHeaderCollection.dll +0 -0
  97. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.WebProxy.dll +0 -0
  98. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.WebSockets.Client.dll +0 -0
  99. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.WebSockets.dll +0 -0
  100. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Net.dll +0 -0
  101. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Numerics.Vectors.dll +0 -0
  102. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Numerics.dll +0 -0
  103. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ObjectModel.dll +0 -0
  104. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Private.CoreLib.dll +0 -0
  105. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Private.DataContractSerialization.dll +0 -0
  106. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Private.Uri.dll +0 -0
  107. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Private.Xml.Linq.dll +0 -0
  108. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Private.Xml.dll +0 -0
  109. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.DispatchProxy.dll +0 -0
  110. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Emit.ILGeneration.dll +0 -0
  111. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Emit.Lightweight.dll +0 -0
  112. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Emit.dll +0 -0
  113. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Extensions.dll +0 -0
  114. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Metadata.dll +0 -0
  115. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.Primitives.dll +0 -0
  116. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.TypeExtensions.dll +0 -0
  117. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Reflection.dll +0 -0
  118. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Resources.Reader.dll +0 -0
  119. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Resources.ResourceManager.dll +0 -0
  120. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Resources.Writer.dll +0 -0
  121. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.CompilerServices.Unsafe.dll +0 -0
  122. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.CompilerServices.VisualC.dll +0 -0
  123. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Extensions.dll +0 -0
  124. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Handles.dll +0 -0
  125. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.InteropServices.RuntimeInformation.dll +0 -0
  126. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.InteropServices.dll +0 -0
  127. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Intrinsics.dll +0 -0
  128. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Loader.dll +0 -0
  129. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Numerics.dll +0 -0
  130. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Serialization.Formatters.dll +0 -0
  131. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Serialization.Json.dll +0 -0
  132. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Serialization.Primitives.dll +0 -0
  133. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Serialization.Xml.dll +0 -0
  134. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.Serialization.dll +0 -0
  135. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Runtime.dll +0 -0
  136. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.AccessControl.dll +0 -0
  137. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Claims.dll +0 -0
  138. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Algorithms.dll +0 -0
  139. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Cng.dll +0 -0
  140. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Csp.dll +0 -0
  141. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Encoding.dll +0 -0
  142. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.OpenSsl.dll +0 -0
  143. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Primitives.dll +0 -0
  144. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.X509Certificates.dll +0 -0
  145. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Principal.Windows.dll +0 -0
  146. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Principal.dll +0 -0
  147. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.SecureString.dll +0 -0
  148. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.dll +0 -0
  149. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ServiceModel.Web.dll +0 -0
  150. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ServiceProcess.dll +0 -0
  151. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.Encoding.CodePages.dll +0 -0
  152. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.Encoding.Extensions.dll +0 -0
  153. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.Encoding.dll +0 -0
  154. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.Encodings.Web.dll +0 -0
  155. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.Json.dll +0 -0
  156. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Text.RegularExpressions.dll +0 -0
  157. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Channels.dll +0 -0
  158. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Overlapped.dll +0 -0
  159. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Tasks.Dataflow.dll +0 -0
  160. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Tasks.Extensions.dll +0 -0
  161. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Tasks.Parallel.dll +0 -0
  162. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Tasks.dll +0 -0
  163. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Thread.dll +0 -0
  164. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.ThreadPool.dll +0 -0
  165. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.Timer.dll +0 -0
  166. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Threading.dll +0 -0
  167. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Transactions.Local.dll +0 -0
  168. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Transactions.dll +0 -0
  169. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.ValueTuple.dll +0 -0
  170. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Web.HttpUtility.dll +0 -0
  171. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Web.dll +0 -0
  172. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Windows.dll +0 -0
  173. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.Linq.dll +0 -0
  174. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.ReaderWriter.dll +0 -0
  175. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.Serialization.dll +0 -0
  176. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.XDocument.dll +0 -0
  177. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.XPath.XDocument.dll +0 -0
  178. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.XPath.dll +0 -0
  179. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.XmlDocument.dll +0 -0
  180. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.XmlSerializer.dll +0 -0
  181. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Xml.dll +0 -0
  182. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.dll +0 -0
  183. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/WindowsBase.dll +0 -0
  184. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/clrcompression.dll +0 -0
  185. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/clretwrc.dll +0 -0
  186. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/clrjit.dll +0 -0
  187. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/coreclr.dll +0 -0
  188. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/createdump.exe +0 -0
  189. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/dbgshim.dll +0 -0
  190. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/hostfxr.dll +0 -0
  191. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/hostpolicy.dll +0 -0
  192. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/mscordaccore.dll +0 -0
  193. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/mscordbi.dll +0 -0
  194. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/mscorlib.dll +0 -0
  195. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/mscorrc.dll +0 -0
  196. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/netstandard.dll +0 -0
  197. data/distro/ruby_bin_folder/AMD64/vccorlib140.dll +0 -0
  198. data/distro/ruby_bin_folder/AMD64/vcruntime140.dll +0 -0
  199. data/distro/ruby_bin_folder/AMD64/vcruntime140_1.dll +0 -0
  200. data/distro/ruby_bin_folder/x86/Chef.PowerShell.dll +0 -0
  201. data/distro/ruby_bin_folder/x86/Chef.Powershell.Wrapper.dll +0 -0
  202. data/distro/ruby_bin_folder/x86/concrt140.dll +0 -0
  203. data/distro/ruby_bin_folder/x86/msvcp140.dll +0 -0
  204. data/distro/ruby_bin_folder/x86/msvcp140_1.dll +0 -0
  205. data/distro/ruby_bin_folder/x86/msvcp140_2.dll +0 -0
  206. data/distro/ruby_bin_folder/x86/msvcp140_atomic_wait.dll +0 -0
  207. data/distro/ruby_bin_folder/x86/msvcp140_codecvt_ids.dll +0 -0
  208. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
  209. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
  210. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
  211. data/distro/ruby_bin_folder/x86/vccorlib140.dll +0 -0
  212. data/distro/ruby_bin_folder/x86/vcruntime140.dll +0 -0
  213. data/lib/chef/action_collection.rb +1 -1
  214. data/lib/chef/application/base.rb +1 -1
  215. data/lib/chef/application.rb +1 -1
  216. data/lib/chef/applications.rb +0 -1
  217. data/lib/chef/chef_fs/command_line.rb +5 -2
  218. data/lib/chef/chef_fs/file_system.rb +9 -10
  219. data/lib/chef/client.rb +5 -5
  220. data/lib/chef/compliance/default_attributes.rb +4 -3
  221. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  222. data/lib/chef/compliance/reporter/automate.rb +17 -7
  223. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  224. data/lib/chef/compliance/reporter/cli.rb +77 -0
  225. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  226. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  227. data/lib/chef/compliance/runner.rb +65 -27
  228. data/lib/chef/cookbook/gem_installer.rb +1 -5
  229. data/lib/chef/cookbook/synchronizer.rb +3 -5
  230. data/lib/chef/cookbook_loader.rb +2 -4
  231. data/lib/chef/cookbook_uploader.rb +0 -1
  232. data/lib/chef/cookbook_version.rb +4 -26
  233. data/lib/chef/data_bag_item.rb +11 -2
  234. data/lib/chef/data_collector/run_end_message.rb +2 -2
  235. data/lib/chef/delayed_evaluator.rb +4 -0
  236. data/lib/chef/deprecated.rb +6 -12
  237. data/lib/chef/dsl/chef_vault.rb +6 -6
  238. data/lib/chef/dsl/reboot_pending.rb +1 -2
  239. data/lib/chef/exceptions.rb +0 -3
  240. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  241. data/lib/chef/formatters/error_mapper.rb +2 -2
  242. data/lib/chef/group.rb +75 -0
  243. data/lib/chef/http.rb +5 -5
  244. data/lib/chef/mixin/checksum.rb +0 -6
  245. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  246. data/lib/chef/mixin/powershell_exec.rb +26 -7
  247. data/lib/chef/node/attribute.rb +9 -24
  248. data/lib/chef/node/immutable_collections.rb +13 -0
  249. data/lib/chef/node/mixin/deep_merge_cache.rb +14 -10
  250. data/lib/chef/node.rb +19 -20
  251. data/lib/chef/org.rb +3 -2
  252. data/lib/chef/platform/query_helpers.rb +2 -2
  253. data/lib/chef/policy_builder/policyfile.rb +0 -5
  254. data/lib/chef/property.rb +18 -0
  255. data/lib/chef/provider/cron.rb +2 -6
  256. data/lib/chef/provider/execute.rb +2 -1
  257. data/lib/chef/provider/file.rb +3 -3
  258. data/lib/chef/provider/git.rb +5 -7
  259. data/lib/chef/provider/group/dscl.rb +1 -1
  260. data/lib/chef/provider/group/groupadd.rb +3 -3
  261. data/lib/chef/provider/group/groupmod.rb +3 -3
  262. data/lib/chef/provider/group/pw.rb +3 -3
  263. data/lib/chef/provider/ifconfig.rb +2 -2
  264. data/lib/chef/provider/link.rb +2 -2
  265. data/lib/chef/provider/mount/aix.rb +3 -3
  266. data/lib/chef/provider/mount/mount.rb +5 -5
  267. data/lib/chef/provider/mount/windows.rb +1 -1
  268. data/lib/chef/provider/mount.rb +5 -5
  269. data/lib/chef/provider/package/apt.rb +27 -1
  270. data/lib/chef/provider/package/deb.rb +3 -3
  271. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  272. data/lib/chef/provider/package/portage.rb +2 -2
  273. data/lib/chef/provider/package/powershell.rb +0 -5
  274. data/lib/chef/provider/package/rubygems.rb +9 -15
  275. data/lib/chef/provider/package/windows.rb +3 -5
  276. data/lib/chef/provider/package/yum/yum_helper.py +11 -1
  277. data/lib/chef/provider/package.rb +17 -21
  278. data/lib/chef/provider/route.rb +2 -2
  279. data/lib/chef/provider/service/aixinit.rb +1 -1
  280. data/lib/chef/provider/service/debian.rb +1 -1
  281. data/lib/chef/provider/service/freebsd.rb +15 -21
  282. data/lib/chef/provider/service/macosx.rb +4 -4
  283. data/lib/chef/provider/service/systemd.rb +43 -14
  284. data/lib/chef/provider/service/upstart.rb +2 -13
  285. data/lib/chef/provider/service/windows.rb +12 -12
  286. data/lib/chef/provider/service.rb +6 -6
  287. data/lib/chef/provider/subversion.rb +10 -12
  288. data/lib/chef/provider/systemd_unit.rb +36 -10
  289. data/lib/chef/provider/template/content.rb +3 -7
  290. data/lib/chef/provider/user/dscl.rb +1 -1
  291. data/lib/chef/provider/user/mac.rb +17 -20
  292. data/lib/chef/provider/user/pw.rb +1 -1
  293. data/lib/chef/provider/user/windows.rb +1 -1
  294. data/lib/chef/provider/user.rb +2 -2
  295. data/lib/chef/provider/zypper_repository.rb +2 -2
  296. data/lib/chef/provider.rb +1 -1
  297. data/lib/chef/providers.rb +0 -1
  298. data/lib/chef/resource/alternatives.rb +6 -6
  299. data/lib/chef/resource/apt_package.rb +1 -1
  300. data/lib/chef/resource/apt_preference.rb +2 -2
  301. data/lib/chef/resource/apt_repository.rb +6 -6
  302. data/lib/chef/resource/apt_update.rb +3 -2
  303. data/lib/chef/resource/archive_file.rb +8 -9
  304. data/lib/chef/resource/breakpoint.rb +1 -1
  305. data/lib/chef/resource/build_essential.rb +2 -6
  306. data/lib/chef/resource/chef_client_config.rb +2 -2
  307. data/lib/chef/resource/chef_client_cron.rb +4 -4
  308. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  309. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  310. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  311. data/lib/chef/resource/chef_client_trusted_certificate.rb +0 -1
  312. data/lib/chef/resource/chef_handler.rb +3 -7
  313. data/lib/chef/resource/chef_sleep.rb +1 -1
  314. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  315. data/lib/chef/resource/chocolatey_config.rb +2 -6
  316. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  317. data/lib/chef/resource/chocolatey_source.rb +4 -10
  318. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  319. data/lib/chef/resource/cron_access.rb +2 -4
  320. data/lib/chef/resource/dmg_package.rb +6 -10
  321. data/lib/chef/resource/dpkg_package.rb +1 -1
  322. data/lib/chef/resource/execute.rb +6 -1
  323. data/lib/chef/resource/file.rb +1 -1
  324. data/lib/chef/resource/group.rb +2 -2
  325. data/lib/chef/resource/homebrew_cask.rb +5 -15
  326. data/lib/chef/resource/homebrew_tap.rb +2 -6
  327. data/lib/chef/resource/hostname.rb +21 -17
  328. data/lib/chef/resource/http_request.rb +1 -1
  329. data/lib/chef/resource/kernel_module.rb +6 -17
  330. data/lib/chef/resource/locale.rb +3 -4
  331. data/lib/chef/resource/lwrp_base.rb +4 -0
  332. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  333. data/lib/chef/resource/mdadm.rb +53 -7
  334. data/lib/chef/resource/mount.rb +3 -2
  335. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  336. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  337. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  338. data/lib/chef/resource/plist.rb +7 -7
  339. data/lib/chef/resource/powershell_script.rb +1 -1
  340. data/lib/chef/resource/remote_file.rb +1 -1
  341. data/lib/chef/resource/rhsm_errata.rb +16 -1
  342. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  343. data/lib/chef/resource/rhsm_register.rb +12 -23
  344. data/lib/chef/resource/rhsm_repo.rb +2 -6
  345. data/lib/chef/resource/rhsm_subscription.rb +7 -11
  346. data/lib/chef/resource/scm/git.rb +1 -1
  347. data/lib/chef/resource/sudo.rb +6 -6
  348. data/lib/chef/resource/support/client.erb +2 -6
  349. data/lib/chef/resource/sysctl.rb +2 -6
  350. data/lib/chef/resource/systemd_unit.rb +3 -3
  351. data/lib/chef/resource/template.rb +1 -1
  352. data/lib/chef/resource/timezone.rb +1 -3
  353. data/lib/chef/resource/user/mac_user.rb +1 -1
  354. data/lib/chef/resource/user_ulimit.rb +2 -3
  355. data/lib/chef/resource/windows_ad_join.rb +2 -6
  356. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  357. data/lib/chef/resource/windows_auto_run.rb +2 -5
  358. data/lib/chef/resource/windows_certificate.rb +207 -73
  359. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  360. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  361. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  362. data/lib/chef/resource/windows_dns_record.rb +2 -6
  363. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  364. data/lib/chef/resource/windows_env.rb +5 -4
  365. data/lib/chef/resource/windows_feature.rb +3 -9
  366. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  367. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  368. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  369. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  370. data/lib/chef/resource/windows_font.rb +2 -4
  371. data/lib/chef/resource/windows_pagefile.rb +2 -6
  372. data/lib/chef/resource/windows_path.rb +2 -2
  373. data/lib/chef/resource/windows_printer.rb +4 -4
  374. data/lib/chef/resource/windows_printer_port.rb +6 -6
  375. data/lib/chef/resource/windows_security_policy.rb +9 -12
  376. data/lib/chef/resource/windows_share.rb +14 -21
  377. data/lib/chef/resource/windows_shortcut.rb +4 -6
  378. data/lib/chef/resource/windows_task.rb +17 -5
  379. data/lib/chef/resource/windows_uac.rb +2 -4
  380. data/lib/chef/resource/windows_user_privilege.rb +26 -36
  381. data/lib/chef/resource/windows_workgroup.rb +1 -2
  382. data/lib/chef/resource.rb +1 -1
  383. data/lib/chef/resource_reporter.rb +1 -1
  384. data/lib/chef/resources.rb +0 -1
  385. data/lib/chef/shell/ext.rb +3 -3
  386. data/lib/chef/user.rb +0 -1
  387. data/lib/chef/user_v1.rb +3 -4
  388. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  389. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  390. data/lib/chef/version.rb +1 -1
  391. data/lib/chef/win32/api.rb +2 -9
  392. data/lib/chef/win32/registry.rb +4 -2
  393. data/lib/chef/win32/version.rb +2 -4
  394. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  395. data/spec/data/lwrp/resources/bar.rb +2 -0
  396. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  397. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  398. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  399. data/spec/data/lwrp/resources/foo.rb +2 -0
  400. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  401. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  402. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  403. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  404. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  405. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  406. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  407. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  408. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  409. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  410. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  411. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  412. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  413. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  414. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  415. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  416. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  417. data/spec/functional/assets/yumrepo/repodata/4632d67cb92636e7575d911c24f0e04d3505a944e97c483abe0c3e73a7c62d33-filelists.sqlite.bz2 +0 -0
  418. data/spec/functional/assets/yumrepo/repodata/74599b793e54d877323837d2d81a1c3c594c44e4335f9528234bb490f7b9b439-other.xml.gz +0 -0
  419. data/spec/functional/assets/yumrepo/repodata/a845d418f919d2115ab95a56b2c76f6825ad0d0bede49181a55c04f58995d057-primary.sqlite.bz2 +0 -0
  420. data/spec/functional/assets/yumrepo/repodata/af9b7cf9ef23bd7b43068d74a460f3b5d06753d638e58e4a0c9edc35bfb9cdc4-other.sqlite.bz2 +0 -0
  421. data/spec/functional/assets/yumrepo/repodata/bdb4f5f1492a3b9532f22c43110a81500dd744f23da0aec5c33b2a41317c737d-filelists.xml.gz +0 -0
  422. data/spec/functional/assets/yumrepo/repodata/c10d1d34ce99e02f12ec96ef68360543ab1bb7c3cb81a4a2bf78df7d8597e9df-primary.xml.gz +0 -0
  423. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  424. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  425. data/spec/functional/resource/apt_package_spec.rb +1 -1
  426. data/spec/functional/resource/chocolatey_package_spec.rb +9 -0
  427. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  428. data/spec/functional/resource/dsc_script_spec.rb +1 -1
  429. data/spec/functional/resource/group_spec.rb +1 -5
  430. data/spec/functional/resource/link_spec.rb +0 -8
  431. data/spec/functional/resource/registry_spec.rb +8 -8
  432. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  433. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  434. data/spec/functional/resource/windows_font_spec.rb +1 -2
  435. data/spec/functional/resource/yum_package_spec.rb +0 -12
  436. data/spec/functional/shell_spec.rb +0 -5
  437. data/spec/functional/version_spec.rb +1 -1
  438. data/spec/functional/win32/registry_spec.rb +1 -1
  439. data/spec/integration/client/client_spec.rb +5 -2
  440. data/spec/integration/client/exit_code_spec.rb +1 -1
  441. data/spec/integration/client/ipv6_spec.rb +1 -1
  442. data/spec/integration/compliance/compliance_spec.rb +1 -1
  443. data/spec/integration/ohai/ohai_spec.rb +7 -6
  444. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  445. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  446. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  447. data/spec/integration/recipes/notifies_spec.rb +15 -1
  448. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  449. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  450. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  451. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  452. data/spec/spec_helper.rb +10 -17
  453. data/spec/support/chef_helpers.rb +0 -16
  454. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  455. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  456. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  457. data/spec/support/matchers/leak.rb +7 -9
  458. data/spec/support/platform_helpers.rb +1 -12
  459. data/spec/support/shared/integration/integration_helper.rb +0 -1
  460. data/spec/support/shared/unit/script_resource.rb +2 -2
  461. data/spec/unit/application/solo_spec.rb +2 -2
  462. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  463. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  464. data/spec/unit/client_spec.rb +4 -4
  465. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  466. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  467. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  468. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  469. data/spec/unit/compliance/runner_spec.rb +30 -4
  470. data/spec/unit/cookbook_version_spec.rb +0 -52
  471. data/spec/unit/daemon_spec.rb +5 -1
  472. data/spec/unit/data_bag_item_spec.rb +1 -6
  473. data/spec/unit/data_collector_spec.rb +2 -71
  474. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  475. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  476. data/spec/unit/lwrp_spec.rb +1 -1
  477. data/spec/unit/mixin/checksum_spec.rb +0 -28
  478. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  479. data/spec/unit/mixin/powershell_exec_spec.rb +9 -9
  480. data/spec/unit/mixin/powershell_out_spec.rb +2 -2
  481. data/spec/unit/node/attribute_spec.rb +1 -1
  482. data/spec/unit/node_spec.rb +78 -0
  483. data/spec/unit/org_group_spec.rb +45 -0
  484. data/spec/unit/platform/query_helpers_spec.rb +5 -5
  485. data/spec/unit/policy_builder/policyfile_spec.rb +1 -11
  486. data/spec/unit/property_spec.rb +23 -22
  487. data/spec/unit/provider/cron_spec.rb +1 -35
  488. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  489. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  490. data/spec/unit/provider/group/pw_spec.rb +2 -2
  491. data/spec/unit/provider/group_spec.rb +1 -1
  492. data/spec/unit/provider/package/apt_spec.rb +84 -18
  493. data/spec/unit/provider/package/deb_spec.rb +3 -3
  494. data/spec/unit/provider/package/powershell_spec.rb +12 -74
  495. data/spec/unit/provider/package/rubygems_spec.rb +18 -30
  496. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  497. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  498. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  499. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  500. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  501. data/spec/unit/provider/service/windows_spec.rb +2 -2
  502. data/spec/unit/provider/subversion_spec.rb +2 -2
  503. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  504. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  505. data/spec/unit/provider_spec.rb +0 -8
  506. data/spec/unit/resource/archive_file_spec.rb +1 -13
  507. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +0 -14
  508. data/spec/unit/resource/homebrew_cask_spec.rb +11 -29
  509. data/spec/unit/resource/mount_spec.rb +0 -10
  510. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  511. data/spec/unit/resource/rhsm_subscription_spec.rb +3 -50
  512. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  513. data/spec/unit/resource/user_ulimit_spec.rb +1 -14
  514. data/spec/unit/resource/windows_task_spec.rb +1 -1
  515. data/spec/unit/resource_spec.rb +2 -7
  516. data/spec/unit/user_spec.rb +1 -1
  517. data/spec/unit/user_v1_spec.rb +6 -4
  518. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +2 -2
  519. data/tasks/rspec.rb +15 -7
  520. metadata +45 -404
  521. data/bin/knife +0 -24
  522. data/lib/chef/application/knife.rb +0 -234
  523. data/lib/chef/application/windows_service.rb +0 -338
  524. data/lib/chef/application/windows_service_manager.rb +0 -205
  525. data/lib/chef/chef_fs/knife.rb +0 -160
  526. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  527. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  528. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  529. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  530. data/lib/chef/knife/acl_add.rb +0 -57
  531. data/lib/chef/knife/acl_base.rb +0 -183
  532. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  533. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  534. data/lib/chef/knife/acl_remove.rb +0 -62
  535. data/lib/chef/knife/acl_show.rb +0 -56
  536. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  537. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  538. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  539. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  540. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  541. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  542. data/lib/chef/knife/bootstrap.rb +0 -1192
  543. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  544. data/lib/chef/knife/client_create.rb +0 -101
  545. data/lib/chef/knife/client_delete.rb +0 -62
  546. data/lib/chef/knife/client_edit.rb +0 -52
  547. data/lib/chef/knife/client_key_create.rb +0 -73
  548. data/lib/chef/knife/client_key_delete.rb +0 -80
  549. data/lib/chef/knife/client_key_edit.rb +0 -83
  550. data/lib/chef/knife/client_key_list.rb +0 -73
  551. data/lib/chef/knife/client_key_show.rb +0 -80
  552. data/lib/chef/knife/client_list.rb +0 -41
  553. data/lib/chef/knife/client_reregister.rb +0 -58
  554. data/lib/chef/knife/client_show.rb +0 -48
  555. data/lib/chef/knife/config_get.rb +0 -39
  556. data/lib/chef/knife/config_get_profile.rb +0 -37
  557. data/lib/chef/knife/config_list.rb +0 -139
  558. data/lib/chef/knife/config_list_profiles.rb +0 -37
  559. data/lib/chef/knife/config_show.rb +0 -127
  560. data/lib/chef/knife/config_use.rb +0 -61
  561. data/lib/chef/knife/config_use_profile.rb +0 -47
  562. data/lib/chef/knife/configure.rb +0 -150
  563. data/lib/chef/knife/configure_client.rb +0 -48
  564. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  565. data/lib/chef/knife/cookbook_delete.rb +0 -151
  566. data/lib/chef/knife/cookbook_download.rb +0 -142
  567. data/lib/chef/knife/cookbook_list.rb +0 -47
  568. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  569. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  570. data/lib/chef/knife/cookbook_show.rb +0 -98
  571. data/lib/chef/knife/cookbook_upload.rb +0 -292
  572. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  573. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  574. data/lib/chef/knife/core/formatting_options.rb +0 -49
  575. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  576. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  577. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  578. data/lib/chef/knife/core/node_editor.rb +0 -130
  579. data/lib/chef/knife/core/node_presenter.rb +0 -133
  580. data/lib/chef/knife/core/object_loader.rb +0 -115
  581. data/lib/chef/knife/core/status_presenter.rb +0 -147
  582. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  583. data/lib/chef/knife/core/text_formatter.rb +0 -85
  584. data/lib/chef/knife/core/ui.rb +0 -338
  585. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  586. data/lib/chef/knife/data_bag_create.rb +0 -81
  587. data/lib/chef/knife/data_bag_delete.rb +0 -49
  588. data/lib/chef/knife/data_bag_edit.rb +0 -74
  589. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  590. data/lib/chef/knife/data_bag_list.rb +0 -42
  591. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  592. data/lib/chef/knife/data_bag_show.rb +0 -69
  593. data/lib/chef/knife/delete.rb +0 -125
  594. data/lib/chef/knife/deps.rb +0 -156
  595. data/lib/chef/knife/diff.rb +0 -83
  596. data/lib/chef/knife/download.rb +0 -84
  597. data/lib/chef/knife/edit.rb +0 -88
  598. data/lib/chef/knife/environment_compare.rb +0 -128
  599. data/lib/chef/knife/environment_create.rb +0 -52
  600. data/lib/chef/knife/environment_delete.rb +0 -44
  601. data/lib/chef/knife/environment_edit.rb +0 -44
  602. data/lib/chef/knife/environment_from_file.rb +0 -84
  603. data/lib/chef/knife/environment_list.rb +0 -41
  604. data/lib/chef/knife/environment_show.rb +0 -47
  605. data/lib/chef/knife/exec.rb +0 -99
  606. data/lib/chef/knife/group_add.rb +0 -55
  607. data/lib/chef/knife/group_create.rb +0 -49
  608. data/lib/chef/knife/group_destroy.rb +0 -53
  609. data/lib/chef/knife/group_list.rb +0 -43
  610. data/lib/chef/knife/group_remove.rb +0 -56
  611. data/lib/chef/knife/group_show.rb +0 -49
  612. data/lib/chef/knife/key_create.rb +0 -112
  613. data/lib/chef/knife/key_create_base.rb +0 -50
  614. data/lib/chef/knife/key_delete.rb +0 -55
  615. data/lib/chef/knife/key_edit.rb +0 -118
  616. data/lib/chef/knife/key_edit_base.rb +0 -55
  617. data/lib/chef/knife/key_list.rb +0 -90
  618. data/lib/chef/knife/key_list_base.rb +0 -45
  619. data/lib/chef/knife/key_show.rb +0 -53
  620. data/lib/chef/knife/list.rb +0 -177
  621. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  622. data/lib/chef/knife/node_create.rb +0 -47
  623. data/lib/chef/knife/node_delete.rb +0 -46
  624. data/lib/chef/knife/node_edit.rb +0 -70
  625. data/lib/chef/knife/node_environment_set.rb +0 -53
  626. data/lib/chef/knife/node_from_file.rb +0 -51
  627. data/lib/chef/knife/node_list.rb +0 -44
  628. data/lib/chef/knife/node_policy_set.rb +0 -79
  629. data/lib/chef/knife/node_run_list_add.rb +0 -104
  630. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  631. data/lib/chef/knife/node_run_list_set.rb +0 -66
  632. data/lib/chef/knife/node_show.rb +0 -63
  633. data/lib/chef/knife/null.rb +0 -12
  634. data/lib/chef/knife/raw.rb +0 -123
  635. data/lib/chef/knife/recipe_list.rb +0 -32
  636. data/lib/chef/knife/rehash.rb +0 -50
  637. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  638. data/lib/chef/knife/role_create.rb +0 -53
  639. data/lib/chef/knife/role_delete.rb +0 -46
  640. data/lib/chef/knife/role_edit.rb +0 -45
  641. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  642. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  643. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  644. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  645. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  646. data/lib/chef/knife/role_from_file.rb +0 -51
  647. data/lib/chef/knife/role_list.rb +0 -42
  648. data/lib/chef/knife/role_run_list_add.rb +0 -87
  649. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  650. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  651. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  652. data/lib/chef/knife/role_run_list_set.rb +0 -69
  653. data/lib/chef/knife/role_show.rb +0 -48
  654. data/lib/chef/knife/search.rb +0 -194
  655. data/lib/chef/knife/serve.rb +0 -65
  656. data/lib/chef/knife/show.rb +0 -72
  657. data/lib/chef/knife/ssh.rb +0 -645
  658. data/lib/chef/knife/ssl_check.rb +0 -284
  659. data/lib/chef/knife/ssl_fetch.rb +0 -161
  660. data/lib/chef/knife/status.rb +0 -95
  661. data/lib/chef/knife/supermarket_download.rb +0 -121
  662. data/lib/chef/knife/supermarket_install.rb +0 -192
  663. data/lib/chef/knife/supermarket_list.rb +0 -76
  664. data/lib/chef/knife/supermarket_search.rb +0 -53
  665. data/lib/chef/knife/supermarket_share.rb +0 -166
  666. data/lib/chef/knife/supermarket_show.rb +0 -66
  667. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  668. data/lib/chef/knife/tag_create.rb +0 -52
  669. data/lib/chef/knife/tag_delete.rb +0 -60
  670. data/lib/chef/knife/tag_list.rb +0 -47
  671. data/lib/chef/knife/upload.rb +0 -86
  672. data/lib/chef/knife/user_create.rb +0 -107
  673. data/lib/chef/knife/user_delete.rb +0 -44
  674. data/lib/chef/knife/user_dissociate.rb +0 -42
  675. data/lib/chef/knife/user_edit.rb +0 -52
  676. data/lib/chef/knife/user_invite_add.rb +0 -43
  677. data/lib/chef/knife/user_invite_list.rb +0 -34
  678. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  679. data/lib/chef/knife/user_key_create.rb +0 -73
  680. data/lib/chef/knife/user_key_delete.rb +0 -80
  681. data/lib/chef/knife/user_key_edit.rb +0 -83
  682. data/lib/chef/knife/user_key_list.rb +0 -73
  683. data/lib/chef/knife/user_key_show.rb +0 -80
  684. data/lib/chef/knife/user_list.rb +0 -42
  685. data/lib/chef/knife/user_reregister.rb +0 -59
  686. data/lib/chef/knife/user_show.rb +0 -48
  687. data/lib/chef/knife/xargs.rb +0 -282
  688. data/lib/chef/knife/yaml_convert.rb +0 -91
  689. data/lib/chef/knife.rb +0 -665
  690. data/lib/chef/resource/user/dscl_user.rb +0 -35
  691. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  692. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  693. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  694. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  695. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  696. data/spec/functional/assets/yumrepo-empty/repodata/01a3b-filelists.sqlite.bz2 +0 -0
  697. data/spec/functional/assets/yumrepo-empty/repodata/401dc-filelists.xml.gz +0 -0
  698. data/spec/functional/assets/yumrepo-empty/repodata/5dc1e-primary.sqlite.bz2 +0 -0
  699. data/spec/functional/assets/yumrepo-empty/repodata/6bf96-other.xml.gz +0 -0
  700. data/spec/functional/assets/yumrepo-empty/repodata/7c365-other.sqlite.bz2 +0 -0
  701. data/spec/functional/assets/yumrepo-empty/repodata/dabe2-primary.xml.gz +0 -0
  702. data/spec/functional/assets/yumrepo-empty/repodata/repomd.xml +0 -55
  703. data/spec/functional/knife/configure_spec.rb +0 -33
  704. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  705. data/spec/functional/knife/exec_spec.rb +0 -55
  706. data/spec/functional/knife/rehash_spec.rb +0 -39
  707. data/spec/functional/knife/smoke_test.rb +0 -42
  708. data/spec/functional/knife/ssh_spec.rb +0 -352
  709. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  710. data/spec/functional/resource/windows_service_spec.rb +0 -105
  711. data/spec/functional/win32/service_manager_spec.rb +0 -220
  712. data/spec/integration/client/fips_spec.rb +0 -21
  713. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  714. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  715. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  716. data/spec/integration/knife/chefignore_spec.rb +0 -301
  717. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  718. data/spec/integration/knife/client_create_spec.rb +0 -70
  719. data/spec/integration/knife/client_delete_spec.rb +0 -64
  720. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  721. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  722. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  723. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  724. data/spec/integration/knife/client_list_spec.rb +0 -49
  725. data/spec/integration/knife/client_show_spec.rb +0 -37
  726. data/spec/integration/knife/common_options_spec.rb +0 -174
  727. data/spec/integration/knife/config_list_spec.rb +0 -220
  728. data/spec/integration/knife/config_show_spec.rb +0 -192
  729. data/spec/integration/knife/config_use_spec.rb +0 -198
  730. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  731. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  732. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  733. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  734. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  735. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  736. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  737. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  738. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  739. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  740. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  741. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  742. data/spec/integration/knife/delete_spec.rb +0 -1018
  743. data/spec/integration/knife/deps_spec.rb +0 -703
  744. data/spec/integration/knife/diff_spec.rb +0 -605
  745. data/spec/integration/knife/download_spec.rb +0 -1336
  746. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  747. data/spec/integration/knife/environment_create_spec.rb +0 -41
  748. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  749. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  750. data/spec/integration/knife/environment_list_spec.rb +0 -42
  751. data/spec/integration/knife/environment_show_spec.rb +0 -77
  752. data/spec/integration/knife/list_spec.rb +0 -1060
  753. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  754. data/spec/integration/knife/node_create_spec.rb +0 -47
  755. data/spec/integration/knife/node_delete_spec.rb +0 -48
  756. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  757. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  758. data/spec/integration/knife/node_list_spec.rb +0 -45
  759. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  760. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  761. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  762. data/spec/integration/knife/node_show_spec.rb +0 -36
  763. data/spec/integration/knife/raw_spec.rb +0 -297
  764. data/spec/integration/knife/redirection_spec.rb +0 -64
  765. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  766. data/spec/integration/knife/role_create_spec.rb +0 -41
  767. data/spec/integration/knife/role_delete_spec.rb +0 -48
  768. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  769. data/spec/integration/knife/role_list_spec.rb +0 -45
  770. data/spec/integration/knife/role_show_spec.rb +0 -51
  771. data/spec/integration/knife/search_node_spec.rb +0 -40
  772. data/spec/integration/knife/serve_spec.rb +0 -92
  773. data/spec/integration/knife/show_spec.rb +0 -197
  774. data/spec/integration/knife/upload_spec.rb +0 -1616
  775. data/spec/support/shared/functional/knife.rb +0 -37
  776. data/spec/support/shared/functional/win32_service.rb +0 -57
  777. data/spec/support/shared/integration/knife_support.rb +0 -192
  778. data/spec/support/shared/unit/knife_shared.rb +0 -39
  779. data/spec/unit/application/knife_spec.rb +0 -241
  780. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  781. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  782. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  783. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  784. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  785. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  786. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  787. data/spec/unit/knife/client_create_spec.rb +0 -169
  788. data/spec/unit/knife/client_delete_spec.rb +0 -99
  789. data/spec/unit/knife/client_edit_spec.rb +0 -53
  790. data/spec/unit/knife/client_list_spec.rb +0 -34
  791. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  792. data/spec/unit/knife/client_show_spec.rb +0 -52
  793. data/spec/unit/knife/configure_client_spec.rb +0 -81
  794. data/spec/unit/knife/configure_spec.rb +0 -190
  795. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  796. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  797. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  798. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  799. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  800. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  801. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  802. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  803. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  804. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  805. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  806. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  807. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  808. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  809. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  810. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  811. data/spec/unit/knife/core/ui_spec.rb +0 -656
  812. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  813. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  814. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  815. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  816. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  817. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  818. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  819. data/spec/unit/knife/environment_create_spec.rb +0 -91
  820. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  821. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  822. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  823. data/spec/unit/knife/environment_list_spec.rb +0 -54
  824. data/spec/unit/knife/environment_show_spec.rb +0 -52
  825. data/spec/unit/knife/key_create_spec.rb +0 -223
  826. data/spec/unit/knife/key_delete_spec.rb +0 -133
  827. data/spec/unit/knife/key_edit_spec.rb +0 -264
  828. data/spec/unit/knife/key_helper.rb +0 -74
  829. data/spec/unit/knife/key_list_spec.rb +0 -216
  830. data/spec/unit/knife/key_show_spec.rb +0 -126
  831. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  832. data/spec/unit/knife/node_delete_spec.rb +0 -77
  833. data/spec/unit/knife/node_edit_spec.rb +0 -116
  834. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  835. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  836. data/spec/unit/knife/node_list_spec.rb +0 -62
  837. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  838. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  839. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  840. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  841. data/spec/unit/knife/node_show_spec.rb +0 -65
  842. data/spec/unit/knife/raw_spec.rb +0 -43
  843. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  844. data/spec/unit/knife/role_create_spec.rb +0 -80
  845. data/spec/unit/knife/role_delete_spec.rb +0 -67
  846. data/spec/unit/knife/role_edit_spec.rb +0 -77
  847. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  848. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  849. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  850. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  851. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  852. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  853. data/spec/unit/knife/role_list_spec.rb +0 -54
  854. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  855. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  856. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  857. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  858. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  859. data/spec/unit/knife/role_show_spec.rb +0 -59
  860. data/spec/unit/knife/ssh_spec.rb +0 -403
  861. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  862. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  863. data/spec/unit/knife/status_spec.rb +0 -112
  864. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  865. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  866. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  867. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  868. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  869. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  870. data/spec/unit/knife/tag_create_spec.rb +0 -23
  871. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  872. data/spec/unit/knife/tag_list_spec.rb +0 -23
  873. data/spec/unit/knife/user_create_spec.rb +0 -184
  874. data/spec/unit/knife/user_delete_spec.rb +0 -46
  875. data/spec/unit/knife/user_edit_spec.rb +0 -48
  876. data/spec/unit/knife/user_list_spec.rb +0 -36
  877. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  878. data/spec/unit/knife/user_show_spec.rb +0 -46
  879. data/spec/unit/knife_spec.rb +0 -634
  880. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  881. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,1616 +0,0 @@
1
- #
2
- # Author:: John Keiser (<jkeiser@chef.io>)
3
- # Copyright:: Copyright (c) Chef Software Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
-
18
- require "spec_helper"
19
- require "support/shared/integration/integration_helper"
20
- require "chef/knife/upload"
21
- require "chef/knife/diff"
22
- require "chef/knife/raw"
23
- require "chef/json_compat"
24
-
25
- describe "knife upload", :workstation do
26
- include IntegrationSupport
27
- include KnifeSupport
28
-
29
- context "without versioned cookbooks" do
30
-
31
- when_the_chef_server "has one of each thing" do
32
-
33
- before do
34
- client "x", {}
35
- cookbook "x", "1.0.0"
36
- data_bag "x", { "y" => {} }
37
- environment "x", {}
38
- node "x", {}
39
- role "x", {}
40
- user "x", {}
41
- end
42
-
43
- when_the_repository "has only top-level directories" do
44
- before do
45
- directory "clients"
46
- directory "cookbooks"
47
- directory "data_bags"
48
- directory "environments"
49
- directory "nodes"
50
- directory "roles"
51
- directory "users"
52
- end
53
-
54
- it "knife upload does nothing" do
55
- knife("upload /").should_succeed ""
56
- knife("diff --name-status /").should_succeed <<~EOM
57
- D\t/clients/chef-validator.json
58
- D\t/clients/chef-webui.json
59
- D\t/clients/x.json
60
- D\t/cookbooks/x
61
- D\t/data_bags/x
62
- D\t/environments/_default.json
63
- D\t/environments/x.json
64
- D\t/nodes/x.json
65
- D\t/roles/x.json
66
- D\t/users/admin.json
67
- D\t/users/x.json
68
- EOM
69
- end
70
-
71
- it "knife upload --purge deletes everything" do
72
- knife("upload --purge /").should_succeed(<<~EOM, stderr: "WARNING: /environments/_default.json cannot be deleted (default environment cannot be modified).\n")
73
- Deleted extra entry /clients/chef-validator.json (purge is on)
74
- Deleted extra entry /clients/chef-webui.json (purge is on)
75
- Deleted extra entry /clients/x.json (purge is on)
76
- Deleted extra entry /cookbooks/x (purge is on)
77
- Deleted extra entry /data_bags/x (purge is on)
78
- Deleted extra entry /environments/x.json (purge is on)
79
- Deleted extra entry /nodes/x.json (purge is on)
80
- Deleted extra entry /roles/x.json (purge is on)
81
- Deleted extra entry /users/admin.json (purge is on)
82
- Deleted extra entry /users/x.json (purge is on)
83
- EOM
84
- knife("diff --name-status /").should_succeed <<~EOM
85
- D\t/environments/_default.json
86
- EOM
87
- end
88
- end
89
-
90
- when_the_repository "has an identical copy of each thing" do
91
-
92
- before do
93
- file "clients/chef-validator.json", { "validator" => true, "public_key" => ChefZero::PUBLIC_KEY }
94
- file "clients/chef-webui.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
95
- file "clients/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
96
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
97
- file "data_bags/x/y.json", {}
98
- file "environments/_default.json", { "description" => "The default Chef environment" }
99
- file "environments/x.json", {}
100
- file "nodes/x.json", { "normal" => { "tags" => [] } }
101
- file "roles/x.json", {}
102
- file "users/admin.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
103
- file "users/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
104
- end
105
-
106
- it "knife upload makes no changes" do
107
- knife("upload /cookbooks/x").should_succeed ""
108
- knife("diff --name-status /").should_succeed ""
109
- end
110
-
111
- it "knife upload --purge makes no changes" do
112
- knife("upload --purge /").should_succeed ""
113
- knife("diff --name-status /").should_succeed ""
114
- end
115
-
116
- context "except the role file" do
117
- before do
118
- file "roles/x.json", { "description" => "blarghle" }
119
- end
120
-
121
- it "knife upload changes the role" do
122
- knife("upload /").should_succeed "Updated /roles/x.json\n"
123
- knife("diff --name-status /").should_succeed ""
124
- end
125
- it "knife upload --no-diff does not change the role" do
126
- knife("upload --no-diff /").should_succeed ""
127
- knife("diff --name-status /").should_succeed "M\t/roles/x.json\n"
128
- end
129
- end
130
-
131
- context "except the role file is textually different, but not ACTUALLY different" do
132
- before do
133
- file "roles/x.json", <<~EOM
134
- {
135
- "chef_type": "role",
136
- "default_attributes": {
137
- },
138
- "env_run_lists": {
139
- },
140
- "json_class": "Chef::Role",
141
- "name": "x",
142
- "description": "",
143
- "override_attributes": {
144
- },
145
- "run_list": [
146
-
147
- ]
148
- }
149
- EOM
150
- end
151
-
152
- it "knife upload / does not change anything" do
153
- knife("upload /").should_succeed ""
154
- knife("diff --name-status /").should_succeed ""
155
- end
156
- end
157
-
158
- context "the role is in ruby" do
159
- before do
160
- file "roles/x.rb", <<~EOM
161
- name "x"
162
- description "blargle"
163
- EOM
164
- end
165
-
166
- it "knife upload changes the role" do
167
- knife("upload /").should_succeed "Updated /roles/x.json\n"
168
- knife("diff --name-status /").should_succeed ""
169
- end
170
-
171
- it "knife upload --no-diff does not change the role" do
172
- knife("upload --no-diff /").should_succeed ""
173
- knife("diff --name-status /").should_succeed "M\t/roles/x.rb\n"
174
- end
175
- end
176
-
177
- context "when cookbook metadata has a self-dependency" do
178
- before do
179
- file "cookbooks/x/metadata.rb", "name 'x'; version '1.0.0'; depends 'x'"
180
- end
181
-
182
- it "fails with RuntimeError" do
183
- expect { knife("upload /cookbooks") }.to raise_error RuntimeError, /Cookbook depends on itself/
184
- end
185
- end
186
-
187
- context "as well as one extra copy of each thing" do
188
- before do
189
- file "clients/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
190
- file "cookbooks/x/blah.rb", ""
191
- file "cookbooks/y/metadata.rb", cb_metadata("y", "1.0.0")
192
- file "data_bags/x/z.json", {}
193
- file "data_bags/y/zz.json", {}
194
- file "environments/y.json", {}
195
- file "nodes/y.json", {}
196
- file "roles/y.json", {}
197
- file "users/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
198
- end
199
-
200
- it "knife upload adds the new files" do
201
- knife("upload /").should_succeed <<~EOM
202
- Created /clients/y.json
203
- Updated /cookbooks/x
204
- Created /cookbooks/y
205
- Created /data_bags/x/z.json
206
- Created /data_bags/y
207
- Created /data_bags/y/zz.json
208
- Created /environments/y.json
209
- Created /nodes/y.json
210
- Created /roles/y.json
211
- Created /users/y.json
212
- EOM
213
- knife("diff --name-status /").should_succeed <<~EOM
214
- D\t/cookbooks/x/metadata.json
215
- D\t/cookbooks/y/metadata.json
216
- EOM
217
- end
218
-
219
- it "knife upload --no-diff adds the new files" do
220
- knife("upload --no-diff /").should_succeed <<~EOM
221
- Created /clients/y.json
222
- Updated /cookbooks/x
223
- Created /cookbooks/y
224
- Created /data_bags/x/z.json
225
- Created /data_bags/y
226
- Created /data_bags/y/zz.json
227
- Created /environments/y.json
228
- Created /nodes/y.json
229
- Created /roles/y.json
230
- Created /users/y.json
231
- EOM
232
- knife("diff --name-status /").should_succeed <<~EOM
233
- D\t/cookbooks/x/metadata.json
234
- D\t/cookbooks/y/metadata.json
235
- EOM
236
- end
237
- end
238
- end
239
-
240
- when_the_repository "is empty" do
241
- it "knife upload does nothing" do
242
- knife("upload /").should_succeed ""
243
- knife("diff --name-status /").should_succeed <<~EOM
244
- D\t/clients
245
- D\t/cookbooks
246
- D\t/data_bags
247
- D\t/environments
248
- D\t/nodes
249
- D\t/roles
250
- D\t/users
251
- EOM
252
- end
253
-
254
- it "knife upload --purge deletes nothing" do
255
- knife("upload --purge /").should_fail <<~EOM
256
- ERROR: /clients cannot be deleted.
257
- ERROR: /cookbooks cannot be deleted.
258
- ERROR: /data_bags cannot be deleted.
259
- ERROR: /environments cannot be deleted.
260
- ERROR: /nodes cannot be deleted.
261
- ERROR: /roles cannot be deleted.
262
- ERROR: /users cannot be deleted.
263
- EOM
264
- knife("diff --name-status /").should_succeed <<~EOM
265
- D\t/clients
266
- D\t/cookbooks
267
- D\t/data_bags
268
- D\t/environments
269
- D\t/nodes
270
- D\t/roles
271
- D\t/users
272
- EOM
273
- end
274
-
275
- context "when current directory is top level" do
276
- before do
277
- cwd "."
278
- end
279
-
280
- it "knife upload with no parameters reports an error" do
281
- knife("upload").should_fail "FATAL: You must specify at least one argument. If you want to upload everything in this directory, run \"knife upload .\"\n", stdout: /USAGE/
282
- end
283
- end
284
- end
285
- end
286
-
287
- when_the_chef_server "is empty" do
288
- when_the_repository "has a data bag item" do
289
-
290
- before do
291
- file "data_bags/x/y.json", { "foo" => "bar" }
292
- end
293
-
294
- it "knife upload of the data bag uploads only the values in the data bag item and no other" do
295
- knife("upload /data_bags/x/y.json").should_succeed <<~EOM
296
- Created /data_bags/x
297
- Created /data_bags/x/y.json
298
- EOM
299
- knife("diff --name-status /data_bags").should_succeed <<~EOM
300
- EOM
301
- expect(Chef::JSONCompat.parse(knife("raw /data/x/y").stdout, create_additions: false).keys.sort).to eq(%w{foo id})
302
- end
303
-
304
- it "knife upload /data_bags/x /data_bags/x/y.json uploads x once" do
305
- knife("upload /data_bags/x /data_bags/x/y.json").should_succeed <<~EOM
306
- Created /data_bags/x
307
- Created /data_bags/x/y.json
308
- EOM
309
- end
310
- end
311
-
312
- when_the_repository "has a data bag item with keys chef_type and data_bag" do
313
-
314
- before do
315
- file "data_bags/x/y.json", { "chef_type" => "aaa", "data_bag" => "bbb" }
316
- end
317
-
318
- it "upload preserves chef_type and data_bag" do
319
- knife("upload /data_bags/x/y.json").should_succeed <<~EOM
320
- Created /data_bags/x
321
- Created /data_bags/x/y.json
322
- EOM
323
- knife("diff --name-status /data_bags").should_succeed ""
324
- result = Chef::JSONCompat.parse(knife("raw /data/x/y").stdout, create_additions: false)
325
- expect(result.keys.sort).to eq(%w{chef_type data_bag id})
326
- expect(result["chef_type"]).to eq("aaa")
327
- expect(result["data_bag"]).to eq("bbb")
328
- end
329
- end
330
-
331
- # Test upload of an item when the other end doesn't even have the container
332
- when_the_repository "has two data bag items" do
333
- before do
334
- file "data_bags/x/y.json", {}
335
- file "data_bags/x/z.json", {}
336
- end
337
- it "knife upload of one data bag item itself succeeds" do
338
- knife("upload /data_bags/x/y.json").should_succeed <<~EOM
339
- Created /data_bags/x
340
- Created /data_bags/x/y.json
341
- EOM
342
- knife("diff --name-status /data_bags").should_succeed <<~EOM
343
- A\t/data_bags/x/z.json
344
- EOM
345
- end
346
- end
347
- end
348
-
349
- when_the_chef_server "has three data bag items" do
350
-
351
- before do
352
- data_bag "x", { "deleted" => {}, "modified" => {}, "unmodified" => {} }
353
- end
354
-
355
- when_the_repository "has a modified, unmodified, added and deleted data bag item" do
356
- before do
357
- file "data_bags/x/added.json", {}
358
- file "data_bags/x/modified.json", { "foo" => "bar" }
359
- file "data_bags/x/unmodified.json", {}
360
- end
361
-
362
- it "knife upload of the modified file succeeds" do
363
- knife("upload /data_bags/x/modified.json").should_succeed <<~EOM
364
- Updated /data_bags/x/modified.json
365
- EOM
366
- knife("diff --name-status /data_bags").should_succeed <<~EOM
367
- D\t/data_bags/x/deleted.json
368
- A\t/data_bags/x/added.json
369
- EOM
370
- end
371
- it "knife upload of the unmodified file does nothing" do
372
- knife("upload /data_bags/x/unmodified.json").should_succeed ""
373
- knife("diff --name-status /data_bags").should_succeed <<~EOM
374
- D\t/data_bags/x/deleted.json
375
- M\t/data_bags/x/modified.json
376
- A\t/data_bags/x/added.json
377
- EOM
378
- end
379
- it "knife upload of the added file succeeds" do
380
- knife("upload /data_bags/x/added.json").should_succeed <<~EOM
381
- Created /data_bags/x/added.json
382
- EOM
383
- knife("diff --name-status /data_bags").should_succeed <<~EOM
384
- D\t/data_bags/x/deleted.json
385
- M\t/data_bags/x/modified.json
386
- EOM
387
- end
388
- it "knife upload of the deleted file does nothing" do
389
- knife("upload /data_bags/x/deleted.json").should_succeed ""
390
- knife("diff --name-status /data_bags").should_succeed <<~EOM
391
- D\t/data_bags/x/deleted.json
392
- M\t/data_bags/x/modified.json
393
- A\t/data_bags/x/added.json
394
- EOM
395
- end
396
- it "knife upload --purge of the deleted file deletes it" do
397
- knife("upload --purge /data_bags/x/deleted.json").should_succeed <<~EOM
398
- Deleted extra entry /data_bags/x/deleted.json (purge is on)
399
- EOM
400
- knife("diff --name-status /data_bags").should_succeed <<~EOM
401
- M\t/data_bags/x/modified.json
402
- A\t/data_bags/x/added.json
403
- EOM
404
- end
405
- it "knife upload of the entire data bag uploads everything" do
406
- knife("upload /data_bags/x").should_succeed <<~EOM
407
- Created /data_bags/x/added.json
408
- Updated /data_bags/x/modified.json
409
- EOM
410
- knife("diff --name-status /data_bags").should_succeed <<~EOM
411
- D\t/data_bags/x/deleted.json
412
- EOM
413
- end
414
- it "knife upload --purge of the entire data bag uploads everything" do
415
- knife("upload --purge /data_bags/x").should_succeed <<~EOM
416
- Created /data_bags/x/added.json
417
- Updated /data_bags/x/modified.json
418
- Deleted extra entry /data_bags/x/deleted.json (purge is on)
419
- EOM
420
- knife("diff --name-status /data_bags").should_succeed ""
421
- end
422
- context "when cwd is the /data_bags directory" do
423
-
424
- before do
425
- cwd "data_bags"
426
- end
427
-
428
- it "knife upload fails" do
429
- knife("upload").should_fail "FATAL: You must specify at least one argument. If you want to upload everything in this directory, run \"knife upload .\"\n", stdout: /USAGE/
430
- end
431
-
432
- it "knife upload --purge . uploads everything" do
433
- knife("upload --purge .").should_succeed <<~EOM
434
- Created x/added.json
435
- Updated x/modified.json
436
- Deleted extra entry x/deleted.json (purge is on)
437
- EOM
438
- knife("diff --name-status /data_bags").should_succeed ""
439
- end
440
- it "knife upload --purge * uploads everything" do
441
- knife("upload --purge *").should_succeed <<~EOM
442
- Created x/added.json
443
- Updated x/modified.json
444
- Deleted extra entry x/deleted.json (purge is on)
445
- EOM
446
- knife("diff --name-status /data_bags").should_succeed ""
447
- end
448
- end
449
- end
450
- end
451
-
452
- # Cookbook upload is a funny thing ... direct cookbook upload works, but
453
- # upload of a file is designed not to work at present. Make sure that is the
454
- # case.
455
- when_the_chef_server "has a cookbook" do
456
- before do
457
- cookbook "x", "1.0.0", { "z.rb" => "" }
458
- end
459
-
460
- when_the_repository "does not have metadata file" do
461
- before do
462
- file "cookbooks/x/y.rb", "hi"
463
- end
464
-
465
- it "raises MetadataNotFound exception" do
466
- expect { knife("upload /cookbooks/x") }.to raise_error(Chef::Exceptions::MetadataNotFound)
467
- end
468
- end
469
-
470
- when_the_repository "does not have valid metadata" do
471
- before do
472
- file "cookbooks/x/metadata.rb", cb_metadata(nil, "1.0.0")
473
- end
474
-
475
- it "raises exception for invalid metadata" do
476
- expect { knife("upload /cookbooks/x") }.to raise_error(Chef::Exceptions::MetadataNotValid)
477
- end
478
- end
479
-
480
- when_the_repository "has a modified, extra and missing file for the cookbook" do
481
- before do
482
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0", "#modified")
483
- file "cookbooks/x/y.rb", "hi"
484
- end
485
-
486
- it "knife upload of any individual file fails" do
487
- knife("upload /cookbooks/x/metadata.rb").should_fail "ERROR: /cookbooks/x/metadata.rb cannot be updated.\n"
488
- knife("upload /cookbooks/x/y.rb").should_fail "ERROR: /cookbooks/x cannot have a child created under it.\n"
489
- knife("upload --purge /cookbooks/x/z.rb").should_fail "ERROR: /cookbooks/x/z.rb cannot be deleted.\n"
490
- end
491
-
492
- # TODO this is a bit of an inconsistency: if we didn't specify --purge,
493
- # technically we shouldn't have deleted missing files. But ... cookbooks
494
- # are a special case.
495
- it "knife upload of the cookbook itself succeeds" do
496
- knife("upload /cookbooks/x").should_succeed <<~EOM
497
- Updated /cookbooks/x
498
- EOM
499
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
500
- D\t/cookbooks/x/metadata.json
501
- EOM
502
- end
503
-
504
- it "knife upload --purge of the cookbook itself succeeds" do
505
- knife("upload /cookbooks/x").should_succeed <<~EOM
506
- Updated /cookbooks/x
507
- EOM
508
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
509
- D\t/cookbooks/x/metadata.json
510
- EOM
511
- end
512
- end
513
- when_the_repository "has a missing file for the cookbook" do
514
-
515
- before do
516
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
517
- end
518
-
519
- it "knife upload of the cookbook succeeds" do
520
- knife("upload /cookbooks/x").should_succeed <<~EOM
521
- Updated /cookbooks/x
522
- EOM
523
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
524
- D\t/cookbooks/x/metadata.json
525
- EOM
526
- end
527
- end
528
- when_the_repository "has an extra file for the cookbook" do
529
-
530
- before do
531
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
532
- file "cookbooks/x/z.rb", ""
533
- file "cookbooks/x/blah.rb", ""
534
- end
535
-
536
- it "knife upload of the cookbook succeeds" do
537
- knife("upload /cookbooks/x").should_succeed <<~EOM
538
- Updated /cookbooks/x
539
- EOM
540
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
541
- D\t/cookbooks/x/metadata.json
542
- EOM
543
- end
544
- end
545
-
546
- when_the_repository "has a different file in the cookbook" do
547
- before do
548
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
549
- end
550
-
551
- it "knife upload --freeze freezes the cookbook" do
552
- knife("upload --freeze /cookbooks/x").should_succeed <<~EOM
553
- Updated /cookbooks/x
554
- EOM
555
- # Modify a file and attempt to upload
556
- file "cookbooks/x/metadata.rb", 'name "x"; version "1.0.0"#different'
557
- knife("upload /cookbooks/x").should_fail "ERROR: /cookbooks failed to write: Cookbook x is frozen\n"
558
- end
559
- end
560
- end
561
-
562
- when_the_chef_server "has a frozen cookbook" do
563
- before do
564
- cookbook "frozencook", "1.0.0", {}, frozen: true
565
- end
566
-
567
- when_the_repository "has an update to said cookbook" do
568
-
569
- before do
570
- file "cookbooks/frozencook/metadata.rb", cb_metadata("frozencook", "1.0.0", "# This is different")
571
- end
572
-
573
- it "knife upload fails to upload the frozen cookbook" do
574
- knife("upload /cookbooks/frozencook").should_fail "ERROR: /cookbooks failed to write: Cookbook frozencook is frozen\n"
575
- end
576
- it "knife upload --force uploads the frozen cookbook" do
577
- knife("upload --force /cookbooks/frozencook").should_succeed <<~EOM
578
- Updated /cookbooks/frozencook
579
- EOM
580
- end
581
- end
582
- end
583
-
584
- when_the_repository "has a cookbook" do
585
- before do
586
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
587
- file "cookbooks/x/metadata.json", { name: "x", version: "1.0.0" }
588
- file "cookbooks/x/onlyin1.0.0.rb", "old_text"
589
- end
590
-
591
- when_the_chef_server "has a later version for the cookbook" do
592
- before do
593
- cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
594
- cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
595
- end
596
-
597
- it "knife upload /cookbooks/x uploads the local version" do
598
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
599
- M\t/cookbooks/x/metadata.rb
600
- D\t/cookbooks/x/onlyin1.0.1.rb
601
- A\t/cookbooks/x/metadata.json
602
- A\t/cookbooks/x/onlyin1.0.0.rb
603
- EOM
604
- knife("upload --purge /cookbooks/x").should_succeed <<~EOM
605
- Updated /cookbooks/x
606
- EOM
607
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
608
- M\t/cookbooks/x/metadata.rb
609
- D\t/cookbooks/x/onlyin1.0.1.rb
610
- A\t/cookbooks/x/metadata.json
611
- A\t/cookbooks/x/onlyin1.0.0.rb
612
- EOM
613
- end
614
- end
615
- end
616
-
617
- when_the_repository "has a cookbook" do
618
- before do
619
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
620
- file "cookbooks/x/onlyin1.0.0.rb", "old_text"
621
- end
622
-
623
- when_the_chef_server "has a later version for the cookbook" do
624
- before do
625
- cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
626
- cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
627
- end
628
-
629
- it "knife upload /cookbooks/x uploads the local version and generates metadata.json from metadata.rb and uploads it." do
630
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
631
- M\t/cookbooks/x/metadata.rb
632
- D\t/cookbooks/x/onlyin1.0.1.rb
633
- A\t/cookbooks/x/onlyin1.0.0.rb
634
- EOM
635
- knife("upload --purge /cookbooks/x").should_succeed <<~EOM
636
- Updated /cookbooks/x
637
- EOM
638
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
639
- M\t/cookbooks/x/metadata.rb
640
- D\t/cookbooks/x/onlyin1.0.1.rb
641
- A\t/cookbooks/x/onlyin1.0.0.rb
642
- EOM
643
- end
644
- end
645
-
646
- when_the_chef_server "has an earlier version for the cookbook" do
647
- before do
648
- cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
649
- cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
650
- end
651
-
652
- it "knife upload /cookbooks/x uploads the local version generates metadata.json and uploads it." do
653
- knife("upload --purge /cookbooks/x").should_succeed <<~EOM
654
- Updated /cookbooks/x
655
- EOM
656
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
657
- D\t/cookbooks/x/metadata.json
658
- EOM
659
- end
660
- end
661
-
662
- when_the_chef_server "has a later version for the cookbook, and no current version" do
663
- before do
664
- cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
665
- end
666
-
667
- it "knife upload /cookbooks/x uploads the local version and generates metadata.json before upload and uploads it." do
668
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
669
- M\t/cookbooks/x/metadata.rb
670
- D\t/cookbooks/x/onlyin1.0.1.rb
671
- A\t/cookbooks/x/onlyin1.0.0.rb
672
- EOM
673
- knife("upload --purge /cookbooks/x").should_succeed <<~EOM
674
- Updated /cookbooks/x
675
- EOM
676
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
677
- M\t/cookbooks/x/metadata.rb
678
- D\t/cookbooks/x/onlyin1.0.1.rb
679
- A\t/cookbooks/x/onlyin1.0.0.rb
680
- EOM
681
- end
682
- end
683
-
684
- when_the_chef_server "has an earlier version for the cookbook, and no current version" do
685
- before do
686
- cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
687
- end
688
-
689
- it "knife upload /cookbooks/x uploads the new version" do
690
- knife("upload --purge /cookbooks/x").should_succeed <<~EOM
691
- Updated /cookbooks/x
692
- EOM
693
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
694
- D\t/cookbooks/x/metadata.json
695
- EOM
696
- end
697
- end
698
- end
699
-
700
- when_the_chef_server "has an environment" do
701
- before do
702
- environment "x", {}
703
- end
704
-
705
- when_the_repository "has an environment with bad JSON" do
706
- before do
707
- file "environments/x.json", "{"
708
- end
709
-
710
- it "knife upload tries and fails" do
711
- error1 = <<~EOH
712
- WARN: Parse error reading #{path_to("environments/x.json")} as JSON: parse error: premature EOF
713
- {
714
- (right here) ------^
715
-
716
- ERROR: /environments/x.json failed to write: Parse error reading JSON: parse error: premature EOF
717
- {
718
- (right here) ------^
719
- EOH
720
-
721
- warn = <<~EOH
722
- WARN: Parse error reading #{path_to("environments/x.json")} as JSON: parse error: premature EOF
723
- {
724
- (right here) ------^
725
-
726
- EOH
727
- knife("upload /environments/x.json").should_fail(error1)
728
- knife("diff --name-status /environments/x.json").should_succeed("M\t/environments/x.json\n", stderr: warn)
729
- end
730
- end
731
-
732
- when_the_repository "has the same environment with the wrong name in the file" do
733
- before do
734
- file "environments/x.json", { "name" => "y" }
735
- end
736
- it "knife upload fails" do
737
- knife("upload /environments/x.json").should_fail "ERROR: /environments/x.json failed to write: Name must be 'x' (is 'y')\n"
738
- knife("diff --name-status /environments/x.json").should_succeed "M\t/environments/x.json\n"
739
- end
740
- end
741
-
742
- when_the_repository "has the same environment with no name in the file" do
743
- before do
744
- file "environments/x.json", { "description" => "hi" }
745
- end
746
- it "knife upload succeeds" do
747
- knife("upload /environments/x.json").should_succeed "Updated /environments/x.json\n"
748
- knife("diff --name-status /environments/x.json").should_succeed ""
749
- end
750
- end
751
- end
752
-
753
- when_the_chef_server "is empty" do
754
-
755
- when_the_repository "has an environment with the wrong name in the file" do
756
- before do
757
- file "environments/x.json", { "name" => "y" }
758
- end
759
- it "knife upload fails" do
760
- knife("upload /environments/x.json").should_fail "ERROR: /environments failed to create_child: Error creating 'x.json': Name must be 'x' (is 'y')\n"
761
- knife("diff --name-status /environments/x.json").should_succeed "A\t/environments/x.json\n"
762
- end
763
- end
764
-
765
- when_the_repository "has an environment with no name in the file" do
766
-
767
- before do
768
- file "environments/x.json", { "description" => "hi" }
769
- end
770
- it "knife upload succeeds" do
771
- knife("upload /environments/x.json").should_succeed "Created /environments/x.json\n"
772
- knife("diff --name-status /environments/x.json").should_succeed ""
773
- end
774
- end
775
-
776
- when_the_repository "has a data bag with no id in the file" do
777
- before do
778
- file "data_bags/bag/x.json", { "foo" => "bar" }
779
- end
780
- it "knife upload succeeds" do
781
- knife("upload /data_bags/bag/x.json").should_succeed "Created /data_bags/bag\nCreated /data_bags/bag/x.json\n"
782
- knife("diff --name-status /data_bags/bag/x.json").should_succeed ""
783
- end
784
- end
785
- end
786
- when_the_chef_server "is empty" do
787
- when_the_repository "has a cookbook with an invalid chef_version constraint in it" do
788
- before do
789
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0", "\nchef_version '~> 999.0'")
790
- end
791
- it "knife upload succeeds" do
792
- knife("upload /cookbooks/x").should_succeed <<~EOM
793
- Created /cookbooks/x
794
- EOM
795
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
796
- D\t/cookbooks/x/metadata.json
797
- EOM
798
- end
799
- end
800
- end
801
- end # without versioned cookbooks
802
-
803
- context "with versioned cookbooks" do
804
- before { Chef::Config[:versioned_cookbooks] = true }
805
-
806
- when_the_chef_server "has one of each thing" do
807
-
808
- before do
809
- client "x", {}
810
- cookbook "x", "1.0.0"
811
- data_bag "x", { "y" => {} }
812
- environment "x", {}
813
- node "x", {}
814
- role "x", {}
815
- user "x", {}
816
- end
817
-
818
- when_the_repository "has only top-level directories" do
819
- before do
820
- directory "clients"
821
- directory "cookbooks"
822
- directory "data_bags"
823
- directory "environments"
824
- directory "nodes"
825
- directory "roles"
826
- directory "users"
827
- end
828
-
829
- it "knife upload does nothing" do
830
- knife("upload /").should_succeed ""
831
- knife("diff --name-status /").should_succeed <<~EOM
832
- D\t/clients/chef-validator.json
833
- D\t/clients/chef-webui.json
834
- D\t/clients/x.json
835
- D\t/cookbooks/x-1.0.0
836
- D\t/data_bags/x
837
- D\t/environments/_default.json
838
- D\t/environments/x.json
839
- D\t/nodes/x.json
840
- D\t/roles/x.json
841
- D\t/users/admin.json
842
- D\t/users/x.json
843
- EOM
844
- end
845
-
846
- it "knife upload --purge deletes everything" do
847
- knife("upload --purge /").should_succeed(<<~EOM, stderr: "WARNING: /environments/_default.json cannot be deleted (default environment cannot be modified).\n")
848
- Deleted extra entry /clients/chef-validator.json (purge is on)
849
- Deleted extra entry /clients/chef-webui.json (purge is on)
850
- Deleted extra entry /clients/x.json (purge is on)
851
- Deleted extra entry /cookbooks/x-1.0.0 (purge is on)
852
- Deleted extra entry /data_bags/x (purge is on)
853
- Deleted extra entry /environments/x.json (purge is on)
854
- Deleted extra entry /nodes/x.json (purge is on)
855
- Deleted extra entry /roles/x.json (purge is on)
856
- Deleted extra entry /users/admin.json (purge is on)
857
- Deleted extra entry /users/x.json (purge is on)
858
- EOM
859
- knife("diff --name-status /").should_succeed <<~EOM
860
- D\t/environments/_default.json
861
- EOM
862
- end
863
- end
864
-
865
- when_the_repository "has an identical copy of each thing" do
866
- before do
867
- file "clients/chef-validator.json", { "validator" => true, "public_key" => ChefZero::PUBLIC_KEY }
868
- file "clients/chef-webui.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
869
- file "clients/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
870
- file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0")
871
- file "data_bags/x/y.json", {}
872
- file "environments/_default.json", { "description" => "The default Chef environment" }
873
- file "environments/x.json", {}
874
- file "nodes/x.json", { "normal" => { "tags" => [] } }
875
- file "roles/x.json", {}
876
- file "users/admin.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
877
- file "users/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
878
- end
879
-
880
- it "knife upload makes no changes" do
881
- knife("upload /cookbooks/x-1.0.0").should_succeed ""
882
- knife("diff --name-status /").should_succeed ""
883
- end
884
-
885
- it "knife upload --purge makes no changes" do
886
- knife("upload --purge /").should_succeed ""
887
- knife("diff --name-status /").should_succeed ""
888
- end
889
-
890
- context "except the role file" do
891
- before do
892
- file "roles/x.json", { "description" => "blarghle" }
893
- end
894
-
895
- it "knife upload changes the role" do
896
- knife("upload /").should_succeed "Updated /roles/x.json\n"
897
- knife("diff --name-status /").should_succeed ""
898
- end
899
- end
900
-
901
- context "except the role file is textually different, but not ACTUALLY different" do
902
-
903
- before do
904
- file "roles/x.json", <<~EOM
905
- {
906
- "chef_type": "role",
907
- "default_attributes": {
908
- },
909
- "env_run_lists": {
910
- },
911
- "json_class": "Chef::Role",
912
- "name": "x",
913
- "description": "",
914
- "override_attributes": {
915
- },
916
- "run_list": [
917
-
918
- ]
919
- }
920
- EOM
921
- end
922
-
923
- it "knife upload / does not change anything" do
924
- knife("upload /").should_succeed ""
925
- knife("diff --name-status /").should_succeed ""
926
- end
927
- end
928
-
929
- context "as well as one extra copy of each thing" do
930
- before do
931
- file "clients/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
932
- file "cookbooks/x-1.0.0/blah.rb", ""
933
- file "cookbooks/x-2.0.0/metadata.rb", cb_metadata("x", "2.0.0")
934
- file "cookbooks/y-1.0.0/metadata.rb", cb_metadata("y", "1.0.0")
935
- file "data_bags/x/z.json", {}
936
- file "data_bags/y/zz.json", {}
937
- file "environments/y.json", {}
938
- file "nodes/y.json", {}
939
- file "roles/y.json", {}
940
- file "users/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
941
- end
942
-
943
- it "knife upload adds the new files" do
944
- knife("upload /").should_succeed <<~EOM
945
- Created /clients/y.json
946
- Updated /cookbooks/x-1.0.0
947
- Created /cookbooks/x-2.0.0
948
- Created /cookbooks/y-1.0.0
949
- Created /data_bags/x/z.json
950
- Created /data_bags/y
951
- Created /data_bags/y/zz.json
952
- Created /environments/y.json
953
- Created /nodes/y.json
954
- Created /roles/y.json
955
- Created /users/y.json
956
- EOM
957
- knife("diff --name-status /").should_succeed ""
958
- end
959
- end
960
- end
961
-
962
- when_the_repository "is empty" do
963
- it "knife upload does nothing" do
964
- knife("upload /").should_succeed ""
965
- knife("diff --name-status /").should_succeed <<~EOM
966
- D\t/clients
967
- D\t/cookbooks
968
- D\t/data_bags
969
- D\t/environments
970
- D\t/nodes
971
- D\t/roles
972
- D\t/users
973
- EOM
974
- end
975
-
976
- it "knife upload --purge deletes nothing" do
977
- knife("upload --purge /").should_fail <<~EOM
978
- ERROR: /clients cannot be deleted.
979
- ERROR: /cookbooks cannot be deleted.
980
- ERROR: /data_bags cannot be deleted.
981
- ERROR: /environments cannot be deleted.
982
- ERROR: /nodes cannot be deleted.
983
- ERROR: /roles cannot be deleted.
984
- ERROR: /users cannot be deleted.
985
- EOM
986
- knife("diff --name-status /").should_succeed <<~EOM
987
- D\t/clients
988
- D\t/cookbooks
989
- D\t/data_bags
990
- D\t/environments
991
- D\t/nodes
992
- D\t/roles
993
- D\t/users
994
- EOM
995
- end
996
-
997
- context "when current directory is top level" do
998
- before do
999
- cwd "."
1000
- end
1001
- it "knife upload with no parameters reports an error" do
1002
- knife("upload").should_fail "FATAL: You must specify at least one argument. If you want to upload everything in this directory, run \"knife upload .\"\n", stdout: /USAGE/
1003
- end
1004
- end
1005
- end
1006
- end
1007
-
1008
- # Test upload of an item when the other end doesn't even have the container
1009
- when_the_chef_server "is empty" do
1010
- when_the_repository "has two data bag items" do
1011
- before do
1012
- file "data_bags/x/y.json", {}
1013
- file "data_bags/x/z.json", {}
1014
- end
1015
-
1016
- it "knife upload of one data bag item itself succeeds" do
1017
- knife("upload /data_bags/x/y.json").should_succeed <<~EOM
1018
- Created /data_bags/x
1019
- Created /data_bags/x/y.json
1020
- EOM
1021
- knife("diff --name-status /data_bags").should_succeed <<~EOM
1022
- A\t/data_bags/x/z.json
1023
- EOM
1024
- end
1025
- end
1026
- end
1027
-
1028
- when_the_chef_server "has three data bag items" do
1029
- before do
1030
- data_bag "x", { "deleted" => {}, "modified" => {}, "unmodified" => {} }
1031
- end
1032
- when_the_repository "has a modified, unmodified, added and deleted data bag item" do
1033
- before do
1034
- file "data_bags/x/added.json", {}
1035
- file "data_bags/x/modified.json", { "foo" => "bar" }
1036
- file "data_bags/x/unmodified.json", {}
1037
- end
1038
-
1039
- it "knife upload of the modified file succeeds" do
1040
- knife("upload /data_bags/x/modified.json").should_succeed <<~EOM
1041
- Updated /data_bags/x/modified.json
1042
- EOM
1043
- knife("diff --name-status /data_bags").should_succeed <<~EOM
1044
- D\t/data_bags/x/deleted.json
1045
- A\t/data_bags/x/added.json
1046
- EOM
1047
- end
1048
- it "knife upload of the unmodified file does nothing" do
1049
- knife("upload /data_bags/x/unmodified.json").should_succeed ""
1050
- knife("diff --name-status /data_bags").should_succeed <<~EOM
1051
- D\t/data_bags/x/deleted.json
1052
- M\t/data_bags/x/modified.json
1053
- A\t/data_bags/x/added.json
1054
- EOM
1055
- end
1056
- it "knife upload of the added file succeeds" do
1057
- knife("upload /data_bags/x/added.json").should_succeed <<~EOM
1058
- Created /data_bags/x/added.json
1059
- EOM
1060
- knife("diff --name-status /data_bags").should_succeed <<~EOM
1061
- D\t/data_bags/x/deleted.json
1062
- M\t/data_bags/x/modified.json
1063
- EOM
1064
- end
1065
- it "knife upload of the deleted file does nothing" do
1066
- knife("upload /data_bags/x/deleted.json").should_succeed ""
1067
- knife("diff --name-status /data_bags").should_succeed <<~EOM
1068
- D\t/data_bags/x/deleted.json
1069
- M\t/data_bags/x/modified.json
1070
- A\t/data_bags/x/added.json
1071
- EOM
1072
- end
1073
- it "knife upload --purge of the deleted file deletes it" do
1074
- knife("upload --purge /data_bags/x/deleted.json").should_succeed <<~EOM
1075
- Deleted extra entry /data_bags/x/deleted.json (purge is on)
1076
- EOM
1077
- knife("diff --name-status /data_bags").should_succeed <<~EOM
1078
- M\t/data_bags/x/modified.json
1079
- A\t/data_bags/x/added.json
1080
- EOM
1081
- end
1082
- it "knife upload of the entire data bag uploads everything" do
1083
- knife("upload /data_bags/x").should_succeed <<~EOM
1084
- Created /data_bags/x/added.json
1085
- Updated /data_bags/x/modified.json
1086
- EOM
1087
- knife("diff --name-status /data_bags").should_succeed <<~EOM
1088
- D\t/data_bags/x/deleted.json
1089
- EOM
1090
- end
1091
- it "knife upload --purge of the entire data bag uploads everything" do
1092
- knife("upload --purge /data_bags/x").should_succeed <<~EOM
1093
- Created /data_bags/x/added.json
1094
- Updated /data_bags/x/modified.json
1095
- Deleted extra entry /data_bags/x/deleted.json (purge is on)
1096
- EOM
1097
- knife("diff --name-status /data_bags").should_succeed ""
1098
- end
1099
- context "when cwd is the /data_bags directory" do
1100
- before do
1101
- cwd "data_bags"
1102
- end
1103
- it "knife upload fails" do
1104
- knife("upload").should_fail "FATAL: You must specify at least one argument. If you want to upload everything in this directory, run \"knife upload .\"\n", stdout: /USAGE/
1105
- end
1106
- it "knife upload --purge . uploads everything" do
1107
- knife("upload --purge .").should_succeed <<~EOM
1108
- Created x/added.json
1109
- Updated x/modified.json
1110
- Deleted extra entry x/deleted.json (purge is on)
1111
- EOM
1112
- knife("diff --name-status /data_bags").should_succeed ""
1113
- end
1114
- it "knife upload --purge * uploads everything" do
1115
- knife("upload --purge *").should_succeed <<~EOM
1116
- Created x/added.json
1117
- Updated x/modified.json
1118
- Deleted extra entry x/deleted.json (purge is on)
1119
- EOM
1120
- knife("diff --name-status /data_bags").should_succeed ""
1121
- end
1122
- end
1123
- end
1124
- end
1125
-
1126
- # Cookbook upload is a funny thing ... direct cookbook upload works, but
1127
- # upload of a file is designed not to work at present. Make sure that is the
1128
- # case.
1129
- when_the_chef_server "has a cookbook" do
1130
- before do
1131
- cookbook "x", "1.0.0", { "z.rb" => "" }
1132
- end
1133
-
1134
- when_the_repository "has a modified, extra and missing file for the cookbook" do
1135
- before do
1136
- file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0", "#modified")
1137
- file "cookbooks/x-1.0.0/y.rb", "hi"
1138
- end
1139
-
1140
- it "knife upload of any individual file fails" do
1141
- knife("upload /cookbooks/x-1.0.0/metadata.rb").should_fail "ERROR: /cookbooks/x-1.0.0/metadata.rb cannot be updated.\n"
1142
- knife("upload /cookbooks/x-1.0.0/y.rb").should_fail "ERROR: /cookbooks/x-1.0.0 cannot have a child created under it.\n"
1143
- knife("upload --purge /cookbooks/x-1.0.0/z.rb").should_fail "ERROR: /cookbooks/x-1.0.0/z.rb cannot be deleted.\n"
1144
- end
1145
-
1146
- # TODO this is a bit of an inconsistency: if we didn't specify --purge,
1147
- # technically we shouldn't have deleted missing files. But ... cookbooks
1148
- # are a special case.
1149
- it "knife upload of the cookbook itself succeeds" do
1150
- knife("upload /cookbooks/x-1.0.0").should_succeed <<~EOM
1151
- Updated /cookbooks/x-1.0.0
1152
- EOM
1153
- knife("diff --name-status /cookbooks").should_succeed ""
1154
- end
1155
-
1156
- it "knife upload --purge of the cookbook itself succeeds" do
1157
- knife("upload /cookbooks/x-1.0.0").should_succeed <<~EOM
1158
- Updated /cookbooks/x-1.0.0
1159
- EOM
1160
- knife("diff --name-status /cookbooks").should_succeed ""
1161
- end
1162
- end
1163
-
1164
- when_the_repository "has a missing file for the cookbook" do
1165
- before do
1166
- file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0")
1167
- end
1168
-
1169
- it "knife upload of the cookbook succeeds" do
1170
- knife("upload /cookbooks/x-1.0.0").should_succeed <<~EOM
1171
- Updated /cookbooks/x-1.0.0
1172
- EOM
1173
- knife("diff --name-status /cookbooks").should_succeed ""
1174
- end
1175
- end
1176
-
1177
- when_the_repository "has an extra file for the cookbook" do
1178
- before do
1179
- file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0")
1180
- file "cookbooks/x-1.0.0/z.rb", ""
1181
- file "cookbooks/x-1.0.0/blah.rb", ""
1182
- end
1183
-
1184
- it "knife upload of the cookbook succeeds" do
1185
- knife("upload /cookbooks/x-1.0.0").should_succeed <<~EOM
1186
- Updated /cookbooks/x-1.0.0
1187
- EOM
1188
- knife("diff --name-status /cookbooks").should_succeed ""
1189
- end
1190
- end
1191
- end
1192
-
1193
- when_the_repository "has a cookbook" do
1194
- before do
1195
- file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0")
1196
- file "cookbooks/x-1.0.0/onlyin1.0.0.rb", "old_text"
1197
- end
1198
-
1199
- when_the_chef_server "has a later version for the cookbook" do
1200
- before do
1201
- cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
1202
- cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
1203
- end
1204
-
1205
- it "knife upload /cookbooks uploads the local version" do
1206
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
1207
- M\t/cookbooks/x-1.0.0/onlyin1.0.0.rb
1208
- D\t/cookbooks/x-1.0.1
1209
- EOM
1210
- knife("upload --purge /cookbooks").should_succeed <<~EOM
1211
- Updated /cookbooks/x-1.0.0
1212
- Deleted extra entry /cookbooks/x-1.0.1 (purge is on)
1213
- EOM
1214
- knife("diff --name-status /cookbooks").should_succeed ""
1215
- end
1216
- end
1217
-
1218
- when_the_chef_server "has an earlier version for the cookbook" do
1219
- before do
1220
- cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
1221
- cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
1222
- end
1223
- it "knife upload /cookbooks uploads the local version" do
1224
- knife("upload --purge /cookbooks").should_succeed <<~EOM
1225
- Updated /cookbooks/x-1.0.0
1226
- Deleted extra entry /cookbooks/x-0.9.9 (purge is on)
1227
- EOM
1228
- knife("diff --name-status /cookbooks").should_succeed ""
1229
- end
1230
- end
1231
-
1232
- when_the_chef_server "has a later version for the cookbook, and no current version" do
1233
- before do
1234
- cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
1235
- end
1236
-
1237
- it "knife upload /cookbooks/x uploads the local version" do
1238
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
1239
- D\t/cookbooks/x-1.0.1
1240
- A\t/cookbooks/x-1.0.0
1241
- EOM
1242
- knife("upload --purge /cookbooks").should_succeed <<~EOM
1243
- Created /cookbooks/x-1.0.0
1244
- Deleted extra entry /cookbooks/x-1.0.1 (purge is on)
1245
- EOM
1246
- knife("diff --name-status /cookbooks").should_succeed ""
1247
- end
1248
- end
1249
-
1250
- when_the_chef_server "has an earlier version for the cookbook, and no current version" do
1251
- before do
1252
- cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
1253
- end
1254
-
1255
- it "knife upload /cookbooks/x uploads the new version" do
1256
- knife("upload --purge /cookbooks").should_succeed <<~EOM
1257
- Created /cookbooks/x-1.0.0
1258
- Deleted extra entry /cookbooks/x-0.9.9 (purge is on)
1259
- EOM
1260
- knife("diff --name-status /cookbooks").should_succeed ""
1261
- end
1262
- end
1263
- end
1264
-
1265
- when_the_chef_server "has an environment" do
1266
- before do
1267
- environment "x", {}
1268
- end
1269
-
1270
- when_the_repository "has the same environment with the wrong name in the file" do
1271
- before do
1272
- file "environments/x.json", { "name" => "y" }
1273
- end
1274
- it "knife upload fails" do
1275
- knife("upload /environments/x.json").should_fail "ERROR: /environments/x.json failed to write: Name must be 'x' (is 'y')\n"
1276
- knife("diff --name-status /environments/x.json").should_succeed "M\t/environments/x.json\n"
1277
- end
1278
- end
1279
-
1280
- when_the_repository "has the same environment with no name in the file" do
1281
- before do
1282
- file "environments/x.json", { "description" => "hi" }
1283
- end
1284
- it "knife upload succeeds" do
1285
- knife("upload /environments/x.json").should_succeed "Updated /environments/x.json\n"
1286
- knife("diff --name-status /environments/x.json").should_succeed ""
1287
- end
1288
- end
1289
- end
1290
-
1291
- when_the_chef_server "is empty" do
1292
-
1293
- when_the_repository "has an environment with the wrong name in the file" do
1294
- before do
1295
- file "environments/x.json", { "name" => "y" }
1296
- end
1297
- it "knife upload fails" do
1298
- knife("upload /environments/x.json").should_fail "ERROR: /environments failed to create_child: Error creating 'x.json': Name must be 'x' (is 'y')\n"
1299
- knife("diff --name-status /environments/x.json").should_succeed "A\t/environments/x.json\n"
1300
- end
1301
- end
1302
-
1303
- when_the_repository "has an environment with no name in the file" do
1304
- before do
1305
- file "environments/x.json", { "description" => "hi" }
1306
- end
1307
- it "knife upload succeeds" do
1308
- knife("upload /environments/x.json").should_succeed "Created /environments/x.json\n"
1309
- knife("diff --name-status /environments/x.json").should_succeed ""
1310
- end
1311
- end
1312
-
1313
- when_the_repository "has a data bag with no id in the file" do
1314
- before do
1315
- file "data_bags/bag/x.json", { "foo" => "bar" }
1316
- end
1317
- it "knife upload succeeds" do
1318
- knife("upload /data_bags/bag/x.json").should_succeed "Created /data_bags/bag\nCreated /data_bags/bag/x.json\n"
1319
- knife("diff --name-status /data_bags/bag/x.json").should_succeed ""
1320
- end
1321
- end
1322
- end
1323
-
1324
- when_the_chef_server "is empty" do
1325
- when_the_repository "has a cookbook with an invalid chef_version constraint in it" do
1326
- before do
1327
- file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0", "\nchef_version '~> 999.0'")
1328
- end
1329
- it "knife upload succeeds" do
1330
- knife("upload /cookbooks/x-1.0.0").should_succeed <<~EOM
1331
- Created /cookbooks/x-1.0.0
1332
- EOM
1333
- knife("diff --name-status /cookbooks").should_succeed ""
1334
- end
1335
- end
1336
- end
1337
- end # with versioned cookbooks
1338
-
1339
- when_the_chef_server "has a user" do
1340
- before do
1341
- user "x", {}
1342
- end
1343
-
1344
- when_the_repository "has the same user with json_class in it" do
1345
- before do
1346
- file "users/x.json", { "admin" => true, "json_class" => "Chef::WebUIUser" }
1347
- end
1348
- it "knife upload /users/x.json succeeds" do
1349
- knife("upload /users/x.json").should_succeed "Updated /users/x.json\n"
1350
- end
1351
- end
1352
- end
1353
-
1354
- when_the_chef_server "is in Enterprise mode", osc_compat: false, single_org: false do
1355
- before do
1356
- user "foo", {}
1357
- user "bar", {}
1358
- user "foobar", {}
1359
- organization "foo", { "full_name" => "Something" }
1360
- end
1361
-
1362
- before :each do
1363
- Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, "/organizations/foo")
1364
- end
1365
-
1366
- context "and has nothing but a single group named blah" do
1367
- group "blah", {}
1368
-
1369
- when_the_repository "has at least one of each thing" do
1370
-
1371
- before do
1372
- # TODO We have to upload acls for an existing group due to a lack of
1373
- # dependency detection during upload. Fix that!
1374
- file "acls/groups/blah.json", {}
1375
- file "clients/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
1376
- file "containers/x.json", {}
1377
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
1378
- file "cookbook_artifacts/x-1x1/metadata.rb", cb_metadata("x", "1.0.0")
1379
- file "data_bags/x/y.json", {}
1380
- file "environments/x.json", {}
1381
- file "groups/x.json", {}
1382
- file "invitations.json", [ "foo" ]
1383
- file "members.json", [ "bar" ]
1384
- file "org.json", { "full_name" => "wootles" }
1385
- file "nodes/x.json", { "normal" => { "tags" => [] } }
1386
- file "policies/x-1.0.0.json", { "policy_group_list" => [ "x" ] }
1387
- file "policies/blah-1.0.0.json", { "policy_group_list" => [ "x" ] }
1388
- file "policy_groups/x.json", { "policies" => { "x" => { "revision_id" => "1.0.0" }, "blah" => { "revision_id" => "1.0.0" } } }
1389
- file "roles/x.json", {}
1390
- end
1391
-
1392
- it "knife upload / uploads everything" do
1393
- knife("upload /").should_succeed <<~EOM
1394
- Updated /acls/groups/blah.json
1395
- Created /clients/x.json
1396
- Created /containers/x.json
1397
- Created /cookbook_artifacts/x-1x1
1398
- Created /cookbooks/x
1399
- Created /data_bags/x
1400
- Created /data_bags/x/y.json
1401
- Created /environments/x.json
1402
- Created /groups/x.json
1403
- Updated /invitations.json
1404
- Updated /members.json
1405
- Created /nodes/x.json
1406
- Updated /org.json
1407
- Created /policies/blah-1.0.0.json
1408
- Created /policies/x-1.0.0.json
1409
- Created /policy_groups/x.json
1410
- Created /roles/x.json
1411
- EOM
1412
- expect(api.get("association_requests").map { |a| a["username"] }).to eq([ "foo" ])
1413
- expect(api.get("users").map { |a| a["user"]["username"] }).to eq([ "bar" ])
1414
- knife("diff --name-status --diff-filter=AMT /").should_succeed ""
1415
- end
1416
-
1417
- context "When the chef server has an identical copy of each thing" do
1418
- before do
1419
- file "invitations.json", [ "foo" ]
1420
- file "members.json", [ "bar" ]
1421
- file "org.json", { "full_name" => "Something" }
1422
-
1423
- # acl_for %w(organizations foo groups blah)
1424
- client "x", {}
1425
- cookbook "x", "1.0.0"
1426
- cookbook_artifact "x", "1x1", "metadata.rb" => cb_metadata("x", "1.0.0")
1427
- container "x", {}
1428
- data_bag "x", { "y" => {} }
1429
- environment "x", {}
1430
- group "x", {}
1431
- org_invite "foo"
1432
- org_member "bar"
1433
- node "x", {}
1434
- policy "x", "1.0.0", {}
1435
- policy "blah", "1.0.0", {}
1436
- policy_group "x", {
1437
- "policies" => {
1438
- "x" => { "revision_id" => "1.0.0" },
1439
- "blah" => { "revision_id" => "1.0.0" },
1440
- },
1441
- }
1442
- role "x", {}
1443
- end
1444
-
1445
- it "knife upload makes no changes" do
1446
- knife("upload /").should_succeed <<~EOM
1447
- Updated /acls/groups/blah.json
1448
- EOM
1449
- end
1450
- end
1451
-
1452
- context "When the chef server has a slightly different copy of the policy revision" do
1453
- before do
1454
- policy "x", "1.0.0", { "run_list" => [ "blah" ] }
1455
- end
1456
-
1457
- it "should fail because policies are not updateable" do
1458
- knife("upload /policies/x-1.0.0.json").should_fail <<~EOM
1459
- ERROR: /policies/x-1.0.0.json cannot be updated: policy revisions are immutable once uploaded. If you want to change the policy, create a new revision with your changes.
1460
- EOM
1461
- end
1462
- end
1463
-
1464
- context "When the chef server has a slightly different copy of the cookbook artifact" do
1465
- before do
1466
- cookbook_artifact "x", "1x1", { "recipes" => { "default.rb" => "" } }
1467
- end
1468
-
1469
- it "should fail because cookbook_artifacts cannot be updated" do
1470
- knife("upload /cookbook_artifacts/x-1x1").should_fail <<~EOM
1471
- ERROR: /cookbook_artifacts/x-1x1 cannot be updated: cookbook artifacts are immutable once uploaded.
1472
- EOM
1473
- end
1474
- end
1475
-
1476
- context "When the chef server has a slightly different copy of each thing (except policy revisions)" do
1477
- before do
1478
- # acl_for %w(organizations foo groups blah)
1479
- client "x", { "validator" => true }
1480
- container "x", {}
1481
- cookbook "x", "1.0.0", { "recipes" => { "default.rb" => "" } }
1482
- cookbook_artifact "x", "1x1", { "metadata.rb" => cb_metadata("x", "1.0.0") }
1483
- data_bag "x", { "y" => { "a" => "b" } }
1484
- environment "x", { "description" => "foo" }
1485
- group "x", { "groups" => [ "admin" ] }
1486
- node "x", { "run_list" => [ "blah" ] }
1487
- policy "x", "1.0.0", { "policy_group_list" => [ "x" ] }
1488
- policy "y", "1.0.0", { "policy_group_list" => [ "x" ] }
1489
- policy_group "x", {
1490
- "policies" => {
1491
- "x" => { "revision_id" => "1.0.0" },
1492
- "y" => { "revision_id" => "1.0.0" },
1493
- },
1494
- }
1495
- role "x", { "run_list" => [ "blah" ] }
1496
- end
1497
-
1498
- it "knife upload updates everything" do
1499
- knife("upload /").should_succeed <<~EOM
1500
- Updated /acls/groups/blah.json
1501
- Updated /clients/x.json
1502
- Updated /cookbooks/x
1503
- Updated /data_bags/x/y.json
1504
- Updated /environments/x.json
1505
- Updated /groups/x.json
1506
- Updated /invitations.json
1507
- Updated /members.json
1508
- Updated /nodes/x.json
1509
- Updated /org.json
1510
- Created /policies/blah-1.0.0.json
1511
- Updated /policy_groups/x.json
1512
- Updated /roles/x.json
1513
- EOM
1514
- knife("diff --name-status --diff-filter=AMT /").should_succeed ""
1515
- end
1516
- end
1517
- end
1518
-
1519
- when_the_repository "has an org.json that does not change full_name" do
1520
- before do
1521
- file "org.json", { "full_name" => "Something" }
1522
- end
1523
-
1524
- it "knife upload / emits a warning for bar and adds foo and foobar" do
1525
- knife("upload /").should_succeed ""
1526
- expect(api.get("/")["full_name"]).to eq("Something")
1527
- end
1528
- end
1529
-
1530
- when_the_repository "has an org.json that changes full_name" do
1531
- before do
1532
- file "org.json", { "full_name" => "Something Else" }
1533
- end
1534
-
1535
- it "knife upload / emits a warning for bar and adds foo and foobar" do
1536
- knife("upload /").should_succeed "Updated /org.json\n"
1537
- expect(api.get("/")["full_name"]).to eq("Something Else")
1538
- end
1539
- end
1540
-
1541
- context "and has invited foo and bar is already a member" do
1542
- org_invite "foo"
1543
- org_member "bar"
1544
-
1545
- when_the_repository "wants to invite foo, bar and foobar" do
1546
- before do
1547
- file "invitations.json", %w{foo bar foobar}
1548
- end
1549
-
1550
- it "knife upload / emits a warning for bar and invites foobar" do
1551
- knife("upload /").should_succeed "Updated /invitations.json\n", stderr: "WARN: Could not invite bar to organization foo: User bar is already in organization foo\n"
1552
- expect(api.get("association_requests").map { |a| a["username"] }).to eq(%w{foo foobar})
1553
- expect(api.get("users").map { |a| a["user"]["username"] }).to eq([ "bar" ])
1554
- end
1555
- end
1556
-
1557
- when_the_repository "wants to make foo, bar and foobar members" do
1558
- before do
1559
- file "members.json", %w{foo bar foobar}
1560
- end
1561
-
1562
- it "knife upload / emits a warning for bar and adds foo and foobar" do
1563
- knife("upload /").should_succeed "Updated /members.json\n"
1564
- expect(api.get("association_requests").map { |a| a["username"] }).to eq([ ])
1565
- expect(api.get("users").map { |a| a["user"]["username"] }).to eq(%w{bar foo foobar})
1566
- end
1567
- end
1568
-
1569
- when_the_repository "wants to invite foo and have bar as a member" do
1570
- before do
1571
- file "invitations.json", [ "foo" ]
1572
- file "members.json", [ "bar" ]
1573
- end
1574
-
1575
- it "knife upload / does nothing" do
1576
- knife("upload /").should_succeed ""
1577
- expect(api.get("association_requests").map { |a| a["username"] }).to eq([ "foo" ])
1578
- expect(api.get("users").map { |a| a["user"]["username"] }).to eq([ "bar" ])
1579
- end
1580
- end
1581
- end
1582
-
1583
- context "and has invited bar and foo" do
1584
- org_invite "bar", "foo"
1585
-
1586
- when_the_repository "wants to invite foo and bar (different order)" do
1587
- before do
1588
- file "invitations.json", %w{foo bar}
1589
- end
1590
-
1591
- it "knife upload / does nothing" do
1592
- knife("upload /").should_succeed ""
1593
- expect(api.get("association_requests").map { |a| a["username"] }).to eq(%w{bar foo})
1594
- expect(api.get("users").map { |a| a["user"]["username"] }).to eq([ ])
1595
- end
1596
- end
1597
- end
1598
-
1599
- context "and has already added bar and foo as members of the org" do
1600
- org_member "bar", "foo"
1601
-
1602
- when_the_repository "wants to add foo and bar (different order)" do
1603
- before do
1604
- file "members.json", %w{foo bar}
1605
- end
1606
-
1607
- it "knife upload / does nothing" do
1608
- knife("upload /").should_succeed ""
1609
- expect(api.get("association_requests").map { |a| a["username"] }).to eq([ ])
1610
- expect(api.get("users").map { |a| a["user"]["username"] }).to eq(%w{bar foo})
1611
- end
1612
- end
1613
- end
1614
- end
1615
- end
1616
- end