github.com/iqoqo/nomad@v0.11.3-0.20200911112621-d7021c74d101/command/volume_register_test.go (about)

     1  package command
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/hashicorp/hcl"
     7  	"github.com/hashicorp/nomad/api"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestVolumeDispatchParse(t *testing.T) {
    12  	t.Parallel()
    13  
    14  	cases := []struct {
    15  		hcl string
    16  		t   string
    17  		err string
    18  	}{{
    19  		hcl: `
    20  type = "foo"
    21  rando = "bar"
    22  `,
    23  		t:   "foo",
    24  		err: "",
    25  	}, {
    26  		hcl: `{"id": "foo", "type": "foo", "other": "bar"}`,
    27  		t:   "foo",
    28  		err: "",
    29  	}}
    30  
    31  	for _, c := range cases {
    32  		t.Run(c.hcl, func(t *testing.T) {
    33  			_, s, err := parseVolumeType(c.hcl)
    34  			require.Equal(t, c.t, s)
    35  			if c.err == "" {
    36  				require.NoError(t, err)
    37  			} else {
    38  				require.Contains(t, err.Error(), c.err)
    39  			}
    40  
    41  		})
    42  	}
    43  }
    44  
    45  func TestCSIVolumeParse(t *testing.T) {
    46  	t.Parallel()
    47  
    48  	cases := []struct {
    49  		hcl string
    50  		q   *api.CSIVolume
    51  		err string
    52  	}{{
    53  		hcl: `
    54  id = "foo"
    55  type = "csi"
    56  namespace = "n"
    57  access_mode = "single-node-writer"
    58  attachment_mode = "file-system"
    59  plugin_id = "p"
    60  secrets {
    61    mysecret = "secretvalue"
    62  }
    63  `,
    64  		q: &api.CSIVolume{
    65  			ID:             "foo",
    66  			Namespace:      "n",
    67  			AccessMode:     "single-node-writer",
    68  			AttachmentMode: "file-system",
    69  			PluginID:       "p",
    70  			Secrets:        api.CSISecrets{"mysecret": "secretvalue"},
    71  		},
    72  		err: "",
    73  	}, {
    74  		hcl: `
    75  {"id": "foo", "namespace": "n", "type": "csi", "access_mode": "single-node-writer", "attachment_mode": "file-system",
    76  "plugin_id": "p"}
    77  `,
    78  		q: &api.CSIVolume{
    79  			ID:             "foo",
    80  			Namespace:      "n",
    81  			AccessMode:     "single-node-writer",
    82  			AttachmentMode: "file-system",
    83  			PluginID:       "p",
    84  		},
    85  		err: "",
    86  	}}
    87  
    88  	for _, c := range cases {
    89  		t.Run(c.hcl, func(t *testing.T) {
    90  			ast, err := hcl.ParseString(c.hcl)
    91  			require.NoError(t, err)
    92  			vol, err := csiDecodeVolume(ast)
    93  			require.Equal(t, c.q, vol)
    94  			if c.err == "" {
    95  				require.NoError(t, err)
    96  			} else {
    97  				require.Contains(t, err.Error(), c.err)
    98  			}
    99  		})
   100  	}
   101  }