/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package installer import ( "testing" "github.com/stretchr/testify/suite" "github.com/talos-systems/talos/pkg/userdata" "gopkg.in/yaml.v2" ) type validateSuite struct { suite.Suite } func TestValidateSuite(t *testing.T) { suite.Run(t, new(validateSuite)) } func (suite *validateSuite) TestVerifyDevice() { // Start off with success and then remove bits data := &userdata.UserData{} err := yaml.Unmarshal([]byte(testConfig), data) suite.Require().NoError(err) suite.Require().NoError(VerifyBootDevice(data)) suite.Require().NoError(VerifyDataDevice(data)) // No impact because we can infer all data from the data device and // defaults. data.Install.Boot = nil suite.Require().NoError(VerifyBootDevice(data)) data.Install.Data = &userdata.InstallDevice{ Device: "/dev/sda", } suite.Require().NoError(VerifyDataDevice(data)) } // TODO we should move this to a well defined location // Copied from userdata_test.go const testConfig = `version: "1" security: os: ca: crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCi0tLS0tRU5EIEVDIFBSSVZBVEUgS0VZLS0tLS0= identity: crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCi0tLS0tRU5EIEVDIFBSSVZBVEUgS0VZLS0tLS0= kubernetes: ca: crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCi0tLS0tRU5EIEVDIFBSSVZBVEUgS0VZLS0tLS0= sa: crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCi0tLS0tRU5EIEVDIFBSSVZBVEUgS0VZLS0tLS0= frontproxy: crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCi0tLS0tRU5EIEVDIFBSSVZBVEUgS0VZLS0tLS0= etcd: crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCi0tLS0tRU5EIEVDIFBSSVZBVEUgS0VZLS0tLS0= networking: os: {} kubernetes: {} services: init: cni: flannel kubeadm: certificateKey: 'test' configuration: | apiVersion: kubeadm.k8s.io/v1beta1 kind: InitConfiguration localAPIEndpoint: bindPort: 6443 bootstrapTokens: - token: '1qbsj9.3oz5hsk6grdfp98b' ttl: 0s --- apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration clusterName: test kubernetesVersion: v1.14.1 --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration mode: ipvs ipvs: scheduler: lc trustd: username: 'test' password: 'test' endpoints: [ "1.2.3.4" ] certSANs: [] install: wipe: true force: true boot: device: /dev/sda size: 1024000000 data: device: /dev/sda size: 1024000000 `