github.com/drone/runner-go@v1.12.0/manifest/secret_test.go (about)

     1  // Copyright 2019 Drone.IO Inc. All rights reserved.
     2  // Use of this source code is governed by the Polyform License
     3  // that can be found in the LICENSE file.
     4  
     5  package manifest
     6  
     7  import (
     8  	"testing"
     9  
    10  	"github.com/buildkite/yaml"
    11  	"github.com/google/go-cmp/cmp"
    12  )
    13  
    14  var mockSecretYaml = []byte(`
    15  ---
    16  kind: secret
    17  name: username
    18  
    19  data: b2N0b2NhdA==
    20  `)
    21  
    22  var mockSecret = &Secret{
    23  	Kind: "secret",
    24  	Name: "username",
    25  	Data: "b2N0b2NhdA==",
    26  }
    27  
    28  func TestSecretUnmarshal(t *testing.T) {
    29  	a := new(Secret)
    30  	b := mockSecret
    31  	yaml.Unmarshal(mockSecretYaml, a)
    32  	if diff := cmp.Diff(a, b); diff != "" {
    33  		t.Error("Failed to parse secret")
    34  		t.Log(diff)
    35  	}
    36  }
    37  
    38  func TestSecretValidate(t *testing.T) {
    39  	secret := new(Secret)
    40  
    41  	secret.Data = "some-data"
    42  	if err := secret.Validate(); err != nil {
    43  		t.Error(err)
    44  		return
    45  	}
    46  
    47  	secret.Get.Path = "secret/data/docker"
    48  	if err := secret.Validate(); err != nil {
    49  		t.Error(err)
    50  		return
    51  	}
    52  
    53  	secret.Data = ""
    54  	secret.Get.Path = ""
    55  	if err := secret.Validate(); err == nil {
    56  		t.Errorf("Expect invalid secret error")
    57  	}
    58  }