client_test.go 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. package metadata
  2. import (
  3. "errors"
  4. "fmt"
  5. "net/http"
  6. "strings"
  7. "testing"
  8. )
  9. func init() {
  10. fmt.Println("make sure your ecs is in vpc before you run ```go test```")
  11. }
  12. type MockMetaDataClient struct {
  13. I IMetaDataClient
  14. }
  15. func (vpc *MockMetaDataClient) Version(version string) IMetaDataClient {
  16. vpc.I.Version(version)
  17. return vpc
  18. }
  19. func (vpc *MockMetaDataClient) ResourceType(rtype string) IMetaDataClient {
  20. vpc.I.ResourceType(rtype)
  21. return vpc
  22. }
  23. func (vpc *MockMetaDataClient) Resource(resource string) IMetaDataClient {
  24. vpc.I.Resource(resource)
  25. return vpc
  26. }
  27. func (vpc *MockMetaDataClient) Url() (string, error) {
  28. return vpc.I.Url()
  29. }
  30. func (m *MockMetaDataClient) Go() ([]string, error) {
  31. uri, err := m.Url()
  32. if err != nil {
  33. return []string{}, errors.New("error retrieve url")
  34. }
  35. if strings.Contains(uri, HOSTNAME) {
  36. return []string{"hostname-test"}, nil
  37. }
  38. if strings.Contains(uri, DNS_NAMESERVERS) {
  39. return []string{"8.8.8.8", "8.8.4.4"}, nil
  40. }
  41. if strings.Contains(uri, EIPV4) {
  42. return []string{"1.1.1.1-test"}, nil
  43. }
  44. if strings.Contains(uri, IMAGE_ID) {
  45. return []string{"image-id-test"}, nil
  46. }
  47. if strings.Contains(uri, INSTANCE_ID) {
  48. return []string{"instanceid-test"}, nil
  49. }
  50. if strings.Contains(uri, MAC) {
  51. return []string{"mac-test"}, nil
  52. }
  53. if strings.Contains(uri, NETWORK_TYPE) {
  54. return []string{"network-type-test"}, nil
  55. }
  56. if strings.Contains(uri, OWNER_ACCOUNT_ID) {
  57. return []string{"owner-account-id-test"}, nil
  58. }
  59. if strings.Contains(uri, PRIVATE_IPV4) {
  60. return []string{"private-ipv4-test"}, nil
  61. }
  62. if strings.Contains(uri, REGION) {
  63. return []string{"region-test"}, nil
  64. }
  65. if strings.Contains(uri, SERIAL_NUMBER) {
  66. return []string{"serial-number-test"}, nil
  67. }
  68. if strings.Contains(uri, SOURCE_ADDRESS) {
  69. return []string{"source-address-test"}, nil
  70. }
  71. if strings.Contains(uri, VPC_CIDR_BLOCK) {
  72. return []string{"vpc-cidr-block-test"}, nil
  73. }
  74. if strings.Contains(uri, VPC_ID) {
  75. return []string{"vpc-id-test"}, nil
  76. }
  77. if strings.Contains(uri, VSWITCH_CIDR_BLOCK) {
  78. return []string{"vswitch-cidr-block-test"}, nil
  79. }
  80. if strings.Contains(uri, VSWITCH_ID) {
  81. return []string{"vswitch-id-test"}, nil
  82. }
  83. if strings.Contains(uri, NTP_CONF_SERVERS) {
  84. return []string{"ntp1.server.com", "ntp2.server.com"}, nil
  85. }
  86. return nil, errors.New("unknow resource error.")
  87. }
  88. func TestOK(t *testing.T) {
  89. fmt.Println("ok")
  90. }
  91. func NewMockMetaData(client *http.Client) *MetaData {
  92. if client == nil {
  93. client = &http.Client{}
  94. }
  95. return &MetaData{
  96. c: &MetaDataClient{client: client},
  97. }
  98. }
  99. //func NewMockMetaData(client *http.Client)* MetaData{
  100. // if client == nil {
  101. // client = &http.Client{}
  102. // }
  103. // return &MetaData{
  104. // c: &MockMetaDataClient{&MetaDataClient{client:client}},
  105. // }
  106. //}
  107. func TestHostname(t *testing.T) {
  108. meta := NewMockMetaData(nil)
  109. host, err := meta.HostName()
  110. if err != nil {
  111. t.Errorf("hostname err: %s", err.Error())
  112. }
  113. if host != "hostname-test" {
  114. t.Error("hostname not equal hostname-test")
  115. }
  116. }
  117. func TestEIPV4(t *testing.T) {
  118. meta := NewMockMetaData(nil)
  119. host, err := meta.EIPv4()
  120. if err != nil {
  121. t.Errorf("EIPV4 err: %s", err.Error())
  122. }
  123. if host != "1.1.1.1-test" {
  124. t.Error("EIPV4 not equal eipv4-test")
  125. }
  126. }
  127. func TestImageID(t *testing.T) {
  128. meta := NewMockMetaData(nil)
  129. host, err := meta.ImageID()
  130. if err != nil {
  131. t.Errorf("IMAGE_ID err: %s", err.Error())
  132. }
  133. if host != "image-id-test" {
  134. t.Error("IMAGE_ID not equal image-id-test")
  135. }
  136. }
  137. func TestInstanceID(t *testing.T) {
  138. meta := NewMockMetaData(nil)
  139. host, err := meta.InstanceID()
  140. if err != nil {
  141. t.Errorf("IMAGE_ID err: %s", err.Error())
  142. }
  143. if host != "instanceid-test" {
  144. t.Error("IMAGE_ID not equal instanceid-test")
  145. }
  146. }
  147. func TestMac(t *testing.T) {
  148. meta := NewMockMetaData(nil)
  149. host, err := meta.Mac()
  150. if err != nil {
  151. t.Errorf("Mac err: %s", err.Error())
  152. }
  153. if host != "mac-test" {
  154. t.Error("Mac not equal mac-test")
  155. }
  156. }
  157. func TestNetworkType(t *testing.T) {
  158. meta := NewMockMetaData(nil)
  159. host, err := meta.NetworkType()
  160. if err != nil {
  161. t.Errorf("NetworkType err: %s", err.Error())
  162. }
  163. if host != "network-type-test" {
  164. t.Error("networktype not equal network-type-test")
  165. }
  166. }
  167. func TestOwnerAccountID(t *testing.T) {
  168. meta := NewMockMetaData(nil)
  169. host, err := meta.OwnerAccountID()
  170. if err != nil {
  171. t.Errorf("owneraccountid err: %s", err.Error())
  172. }
  173. if host != "owner-account-id-test" {
  174. t.Error("owner-account-id not equal owner-account-id-test")
  175. }
  176. }
  177. func TestPrivateIPv4(t *testing.T) {
  178. meta := NewMockMetaData(nil)
  179. host, err := meta.PrivateIPv4()
  180. if err != nil {
  181. t.Errorf("privateIPv4 err: %s", err.Error())
  182. }
  183. if host != "private-ipv4-test" {
  184. t.Error("privateIPv4 not equal private-ipv4-test")
  185. }
  186. }
  187. func TestRegion(t *testing.T) {
  188. meta := NewMockMetaData(nil)
  189. host, err := meta.Region()
  190. if err != nil {
  191. t.Errorf("region err: %s", err.Error())
  192. }
  193. if host != "region-test" {
  194. t.Error("region not equal region-test")
  195. }
  196. }
  197. func TestSerialNumber(t *testing.T) {
  198. meta := NewMockMetaData(nil)
  199. host, err := meta.SerialNumber()
  200. if err != nil {
  201. t.Errorf("serial number err: %s", err.Error())
  202. }
  203. if host != "serial-number-test" {
  204. t.Error("serial number not equal serial-number-test")
  205. }
  206. }
  207. func TestSourceAddress(t *testing.T) {
  208. meta := NewMockMetaData(nil)
  209. host, err := meta.SourceAddress()
  210. if err != nil {
  211. t.Errorf("source address err: %s", err.Error())
  212. }
  213. if host != "source-address-test" {
  214. t.Error("source address not equal source-address-test")
  215. }
  216. }
  217. func TestVpcCIDRBlock(t *testing.T) {
  218. meta := NewMockMetaData(nil)
  219. host, err := meta.VpcCIDRBlock()
  220. if err != nil {
  221. t.Errorf("vpcCIDRBlock err: %s", err.Error())
  222. }
  223. if host != "vpc-cidr-block-test" {
  224. t.Error("vpc-cidr-block not equal vpc-cidr-block-test")
  225. }
  226. }
  227. func TestVpcID(t *testing.T) {
  228. meta := NewMockMetaData(nil)
  229. host, err := meta.VpcID()
  230. if err != nil {
  231. t.Errorf("vpcID err: %s", err.Error())
  232. }
  233. if host != "vpc-id-test" {
  234. t.Error("vpc-id not equal vpc-id-test")
  235. }
  236. }
  237. func TestVswitchCIDRBlock(t *testing.T) {
  238. meta := NewMockMetaData(nil)
  239. host, err := meta.VswitchCIDRBlock()
  240. if err != nil {
  241. t.Errorf("vswitchCIDRBlock err: %s", err.Error())
  242. }
  243. if host != "vswitch-cidr-block-test" {
  244. t.Error("vswitch-cidr-block not equal vswitch-cidr-block-test")
  245. }
  246. }
  247. func TestVswitchID(t *testing.T) {
  248. meta := NewMockMetaData(nil)
  249. host, err := meta.VswitchID()
  250. if err != nil {
  251. t.Errorf("vswitch id err: %s", err.Error())
  252. }
  253. if host != "vswitch-id-test" {
  254. t.Error("vswitch-id not equal vswitch-id-test")
  255. }
  256. }
  257. func TestNTPConfigServers(t *testing.T) {
  258. meta := NewMockMetaData(nil)
  259. host, err := meta.NTPConfigServers()
  260. if err != nil {
  261. t.Errorf("ntpconfigservers err: %s", err.Error())
  262. }
  263. if host[0] != "ntp1.server.com" || host[1] != "ntp2.server.com" {
  264. t.Error("ntp1.server.com not equal ntp1.server.com")
  265. }
  266. }
  267. func TestDNSServers(t *testing.T) {
  268. meta := NewMockMetaData(nil)
  269. host, err := meta.DNSNameServers()
  270. if err != nil {
  271. t.Errorf("dnsservers err: %s", err.Error())
  272. }
  273. if host[0] != "8.8.8.8" || host[1] != "8.8.4.4" {
  274. t.Error("dns servers not equal 8.8.8.8/8.8.4.4")
  275. }
  276. }