github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/compute/v2/servers/testing/results_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"crypto/rsa"
     5  	"testing"
     6  
     7  	"golang.org/x/crypto/ssh"
     8  
     9  	"github.com/opentelekomcloud/gophertelekomcloud"
    10  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/compute/v2/servers"
    11  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    12  	"github.com/opentelekomcloud/gophertelekomcloud/testhelper/client"
    13  )
    14  
    15  // Fail - No password in JSON.
    16  func TestExtractPassword_no_pwd_data(t *testing.T) {
    17  	resp := servers.GetPasswordResult{Result: golangsdk.Result{Body: []byte(`{ "Crappy data": ".-.-." }`)}}
    18  
    19  	pwd, err := resp.ExtractPassword(nil)
    20  	th.AssertNoErr(t, err)
    21  	th.AssertEquals(t, pwd, "")
    22  }
    23  
    24  // Ok - return encrypted password when no private key is given.
    25  func TestExtractPassword_encrypted_pwd(t *testing.T) {
    26  
    27  	sejson := []byte(`{"password":"PP8EnwPO9DhEc8+O/6CKAkPF379mKsUsfFY6yyw0734XXvKsSdV9KbiHQ2hrBvzeZxtGMrlFaikVunCRizyLLWLMuOi4hoH+qy9F9sQid61gQIGkxwDAt85d/7Eau2/KzorFnZhgxArl7IiqJ67X6xjKkR3zur+Yp3V/mtVIehpPYIaAvPbcp2t4mQXl1I9J8yrQfEZOctLL1L4heDEVXnxvNihVLK6pivlVggp6SZCtjj9cduZGrYGsxsOCso1dqJQr7GCojfwvuLOoG0OYwEGuWVTZppxWxi/q1QgeHFhGKA5QUXlz7pS71oqpjYsTeViuHnfvlqb5TVYZpQ1haw=="}`)
    28  
    29  	resp := servers.GetPasswordResult{Result: golangsdk.Result{Body: sejson}}
    30  
    31  	pwd, err := resp.ExtractPassword(nil)
    32  	th.AssertNoErr(t, err)
    33  	th.AssertEquals(t, "PP8EnwPO9DhEc8+O/6CKAkPF379mKsUsfFY6yyw0734XXvKsSdV9KbiHQ2hrBvzeZxtGMrlFaikVunCRizyLLWLMuOi4hoH+qy9F9sQid61gQIGkxwDAt85d/7Eau2/KzorFnZhgxArl7IiqJ67X6xjKkR3zur+Yp3V/mtVIehpPYIaAvPbcp2t4mQXl1I9J8yrQfEZOctLL1L4heDEVXnxvNihVLK6pivlVggp6SZCtjj9cduZGrYGsxsOCso1dqJQr7GCojfwvuLOoG0OYwEGuWVTZppxWxi/q1QgeHFhGKA5QUXlz7pS71oqpjYsTeViuHnfvlqb5TVYZpQ1haw==", pwd)
    34  }
    35  
    36  // Ok - return decrypted password when private key is given.
    37  // Decrytion can be verified by:
    38  //
    39  //	echo "<enc_pwd>" | base64 -D | openssl rsautl -decrypt -inkey <privateKey.pem>
    40  func TestExtractPassword_decrypted_pwd(t *testing.T) {
    41  
    42  	privateKey, err := ssh.ParseRawPrivateKey([]byte(`
    43  -----BEGIN RSA PRIVATE KEY-----
    44  MIIEpQIBAAKCAQEAo1ODZgwMVdTJYim9UYuYhowoPMhGEuV5IRZjcJ315r7RBSC+
    45  yEiBb1V+jhf+P8fzAyU35lkBzZGDr7E3jxSesbOuYT8cItQS4ErUnI1LGuqvMxwv
    46  X3GMyE/HmOcaiODF1XZN3Ur5pMJdVknnmczgUsW0hT98Udrh3MQn9WSuh/6LRy6+
    47  x1QsKHOCLFPnkhWa3LKyxmpQq/Gvhz+6NLe+gt8MFullA5mKQxBJ/K6laVHeaMlw
    48  JG3GCX0EZhRlvzoV8koIBKZtbKFolFr8ZtxBm3R5LvnyrtOvp22sa+xeItUT5kG1
    49  ZnbGNdK87oYW+VigEUfzT/+8R1i6E2QIXoeZiQIDAQABAoIBAQCVZ70IqbbTAW8j
    50  RAlyQh/J3Qal65LmkFJJKUDX8TfT1/Q/G6BKeMEmxm+Zrmsfj1pHI1HKftt+YEG1
    51  g4jOc09kQXkgbmnfll6aHPn3J+1vdwXD3GGdjrL5PrnYrngAhJWU2r8J0x8hT8ew
    52  OrUJZXhDX6XuSpAAFRmOKUZgXbSmo4X+LZX76ACnarselJt5FL724ECvpWJ7xxC4
    53  FMzvp4RqMmNFvv/Uq9lE/EmoSk4dviYyIZZ16DbDNyc9k/sGqCAMktCEwZ3EQm//
    54  S5bkNhgP6oUXjluWy53aPRgykEylgDWo5SSdSEyKnw/fciU0xdprA9JrBGIcTyHS
    55  /k2kgD4xAoGBANTkJ88Q0YrxX3fZNZVqcn00XKTxPGmxN5LRs7eV743q30AxK5Db
    56  QU8iwaAA1IKUWV5DLhgUTNsDCOPUPue4aOSBD3/sj+WEmvIhj7afDL5didkYHsqf
    57  fDnhFHq7y/3i57d428C7BwwR79pGWVyi7vH3pfu9A1iwl1aNOae+zvbVAoGBAMRm
    58  AmwQ9fJ3Qc44jysFK/yliLRGdShjkMMah5G3JlrelwfPtwPwEL2EHHhJB/C1acMs
    59  n6Q6RaoF6WNSZUY65ksQg7aPOYf2X0FTFwQJvwDJ4qlWjmq7w+tQ0AoGJG+dVUmQ
    60  zHZ/Y+HokSXzz9c4oevk4v/rMgAQ00WHrTdtIhnlAoGBALIJJ72D7CkNGHCq5qPQ
    61  xHQukPejgolFGhufYXM7YX3GmPMe67cVlTVv9Isxhoa5N0+cUPT0LR3PGOUm/4Bb
    62  eOT3hZXOqLwhvE6XgI8Rzd95bClwgXekDoh80dqeKMdmta961BQGlKskaPiacmsF
    63  G1yhZV70P9Mwwy8vpbLB4GUNAoGAbTwbjsWkNfa0qCF3J8NZoszjCvnBQfSW2J1R
    64  1+8ZKyNwt0yFi3Ajr3TibNiZzPzp1T9lj29FvfpJxA9Y+sXZvthxmcFxizix5GB1
    65  ha5yCNtA8VSOI7lJkAFDpL+j1lyYyjD6N9JE2KqEyKoh6J+8F7sXsqW7CqRRDfQX
    66  mKNfey0CgYEAxcEoNoADN2hRl7qY9rbQfVvQb3RkoQkdHhl9gpLFCcV32IP8R4xg
    67  09NbQK5OmgcIuZhLVNzTmUHJbabEGeXqIFIV0DsqECAt3WzbDyKQO23VJysFD46c
    68  KSde3I0ybDz7iS2EtceKB7m4C0slYd+oBkm4efuF00rCOKDwpFq45m0=
    69  -----END RSA PRIVATE KEY-----
    70  `))
    71  	if err != nil {
    72  		t.Fatalf("Error parsing private key: %s\n", err)
    73  	}
    74  
    75  	sejson := []byte(`{"password":"PP8EnwPO9DhEc8+O/6CKAkPF379mKsUsfFY6yyw0734XXvKsSdV9KbiHQ2hrBvzeZxtGMrlFaikVunCRizyLLWLMuOi4hoH+qy9F9sQid61gQIGkxwDAt85d/7Eau2/KzorFnZhgxArl7IiqJ67X6xjKkR3zur+Yp3V/mtVIehpPYIaAvPbcp2t4mQXl1I9J8yrQfEZOctLL1L4heDEVXnxvNihVLK6pivlVggp6SZCtjj9cduZGrYGsxsOCso1dqJQr7GCojfwvuLOoG0OYwEGuWVTZppxWxi/q1QgeHFhGKA5QUXlz7pS71oqpjYsTeViuHnfvlqb5TVYZpQ1haw=="}`)
    76  
    77  	resp := servers.GetPasswordResult{Result: golangsdk.Result{Body: sejson}}
    78  
    79  	pwd, err := resp.ExtractPassword(privateKey.(*rsa.PrivateKey))
    80  	th.AssertNoErr(t, err)
    81  	th.AssertEquals(t, "ruZKK0tqxRfYm5t7lSJq", pwd)
    82  }
    83  
    84  func TestListAddressesAllPages(t *testing.T) {
    85  	th.SetupHTTP()
    86  	defer th.TeardownHTTP()
    87  	HandleAddressListSuccessfully(t)
    88  
    89  	allPages, err := servers.ListAddresses(client.ServiceClient(), "asdfasdfasdf").AllPages()
    90  	th.AssertNoErr(t, err)
    91  	_, err = servers.ExtractAddresses(allPages)
    92  	th.AssertNoErr(t, err)
    93  }