bundlefile_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // +build experimental
  2. package bundlefile
  3. import (
  4. "bytes"
  5. "strings"
  6. "testing"
  7. "github.com/docker/docker/pkg/testutil/assert"
  8. )
  9. func TestLoadFileV01Success(t *testing.T) {
  10. reader := strings.NewReader(`{
  11. "Version": "0.1",
  12. "Services": {
  13. "redis": {
  14. "Image": "redis@sha256:4b24131101fa0117bcaa18ac37055fffd9176aa1a240392bb8ea85e0be50f2ce",
  15. "Networks": ["default"]
  16. },
  17. "web": {
  18. "Image": "dockercloud/hello-world@sha256:fe79a2cfbd17eefc344fb8419420808df95a1e22d93b7f621a7399fd1e9dca1d",
  19. "Networks": ["default"],
  20. "User": "web"
  21. }
  22. }
  23. }`)
  24. bundle, err := LoadFile(reader)
  25. assert.NilError(t, err)
  26. assert.Equal(t, bundle.Version, "0.1")
  27. assert.Equal(t, len(bundle.Services), 2)
  28. }
  29. func TestLoadFileSyntaxError(t *testing.T) {
  30. reader := strings.NewReader(`{
  31. "Version": "0.1",
  32. "Services": unquoted string
  33. }`)
  34. _, err := LoadFile(reader)
  35. assert.Error(t, err, "syntax error at byte 37: invalid character 'u'")
  36. }
  37. func TestLoadFileTypeError(t *testing.T) {
  38. reader := strings.NewReader(`{
  39. "Version": "0.1",
  40. "Services": {
  41. "web": {
  42. "Image": "redis",
  43. "Networks": "none"
  44. }
  45. }
  46. }`)
  47. _, err := LoadFile(reader)
  48. assert.Error(t, err, "Unexpected type at byte 94. Expected []string but received string")
  49. }
  50. func TestPrint(t *testing.T) {
  51. var buffer bytes.Buffer
  52. bundle := &Bundlefile{
  53. Version: "0.1",
  54. Services: map[string]Service{
  55. "web": {
  56. Image: "image",
  57. Command: []string{"echo", "something"},
  58. },
  59. },
  60. }
  61. assert.NilError(t, Print(&buffer, bundle))
  62. output := buffer.String()
  63. assert.Contains(t, output, "\"Image\": \"image\"")
  64. assert.Contains(t, output,
  65. `"Command": [
  66. "echo",
  67. "something"
  68. ]`)
  69. }