instance_metadata_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package providers
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "strings"
  6. "testing"
  7. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
  8. )
  9. func TestInstanceMetadataProvider_Retrieve_Success(t *testing.T) {
  10. // Start a test server locally.
  11. ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  12. body := "unsupported path: " + r.URL.Path
  13. status := 500
  14. switch r.URL.Path {
  15. case "/latest/meta-data/ram/security-credentials/":
  16. body = "ELK"
  17. status = 200
  18. case "/latest/meta-data/ram/security-credentials/ELK":
  19. body = ` {
  20. "AccessKeyId" : "STS.L4aBSCSJVMuKg5U1vFDw",
  21. "AccessKeySecret" : "wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pKCNZ9",
  22. "Expiration" : "2018-08-20T22:30:02Z",
  23. "SecurityToken" : "CAESrAIIARKAAShQquMnLIlbvEcIxO6wCoqJufs8sWwieUxu45hS9AvKNEte8KRUWiJWJ6Y+YHAPgNwi7yfRecMFydL2uPOgBI7LDio0RkbYLmJfIxHM2nGBPdml7kYEOXmJp2aDhbvvwVYIyt/8iES/R6N208wQh0Pk2bu+/9dvalp6wOHF4gkFGhhTVFMuTDRhQlNDU0pWTXVLZzVVMXZGRHciBTQzMjc0KgVhbGljZTCpnJjwySk6BlJzYU1ENUJuCgExGmkKBUFsbG93Eh8KDEFjdGlvbkVxdWFscxIGQWN0aW9uGgcKBW9zczoqEj8KDlJlc291cmNlRXF1YWxzEghSZXNvdXJjZRojCiFhY3M6b3NzOio6NDMyNzQ6c2FtcGxlYm94L2FsaWNlLyo=",
  24. "LastUpdated" : "2018-08-20T16:30:01Z",
  25. "Code" : "Success"
  26. }`
  27. status = 200
  28. }
  29. w.Write([]byte(body))
  30. w.WriteHeader(status)
  31. }))
  32. defer ts.Close()
  33. // Update our securityCredURL to point at our local test server.
  34. originalSecurityCredURL := securityCredURL
  35. securityCredURL = strings.Replace(securityCredURL, "http://100.100.100.200", ts.URL, -1)
  36. defer func() {
  37. securityCredURL = originalSecurityCredURL
  38. }()
  39. credential, err := NewInstanceMetadataProvider().Retrieve()
  40. if err != nil {
  41. t.Fatal(err)
  42. }
  43. stsTokenCredential, ok := credential.(*credentials.StsTokenCredential)
  44. if !ok {
  45. t.Fatal("expected AccessKeyCredential")
  46. }
  47. if stsTokenCredential.AccessKeyId != "STS.L4aBSCSJVMuKg5U1vFDw" {
  48. t.Fatalf("expected AccessKeyId STS.L4aBSCSJVMuKg5U1vFDw but received %s", stsTokenCredential.AccessKeyId)
  49. }
  50. if stsTokenCredential.AccessKeySecret != "wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pKCNZ9" {
  51. t.Fatalf("expected AccessKeySecret wyLTSmsyPGP1ohvvw8xYgB29dlGI8KMiH2pKCNZ9 but received %s", stsTokenCredential.AccessKeySecret)
  52. }
  53. if !strings.HasPrefix(stsTokenCredential.AccessKeyStsToken, "CAESrAIIARKAA") {
  54. t.Fatalf("expected AccessKeyStsToken starting with CAESrAIIARKAA but received %s", stsTokenCredential.AccessKeyStsToken)
  55. }
  56. }