unmarshal_test.go 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765
  1. package jsonrpc_test
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "encoding/xml"
  6. "io"
  7. "io/ioutil"
  8. "net/http"
  9. "net/url"
  10. "testing"
  11. "time"
  12. "github.com/aws/aws-sdk-go/aws"
  13. "github.com/aws/aws-sdk-go/aws/defaults"
  14. "github.com/aws/aws-sdk-go/aws/request"
  15. "github.com/aws/aws-sdk-go/aws/service"
  16. "github.com/aws/aws-sdk-go/aws/service/serviceinfo"
  17. "github.com/aws/aws-sdk-go/internal/protocol/jsonrpc"
  18. "github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil"
  19. "github.com/aws/aws-sdk-go/internal/signer/v4"
  20. "github.com/aws/aws-sdk-go/internal/util"
  21. "github.com/stretchr/testify/assert"
  22. )
  23. var _ bytes.Buffer // always import bytes
  24. var _ http.Request
  25. var _ json.Marshaler
  26. var _ time.Time
  27. var _ xmlutil.XMLNode
  28. var _ xml.Attr
  29. var _ = ioutil.Discard
  30. var _ = util.Trim("")
  31. var _ = url.Values{}
  32. var _ = io.EOF
  33. type OutputService1ProtocolTest struct {
  34. *service.Service
  35. }
  36. // New returns a new OutputService1ProtocolTest client.
  37. func NewOutputService1ProtocolTest(config *aws.Config) *OutputService1ProtocolTest {
  38. service := &service.Service{
  39. ServiceInfo: serviceinfo.ServiceInfo{
  40. Config: defaults.DefaultConfig.Merge(config),
  41. ServiceName: "outputservice1protocoltest",
  42. APIVersion: "",
  43. JSONVersion: "",
  44. TargetPrefix: "",
  45. },
  46. }
  47. service.Initialize()
  48. // Handlers
  49. service.Handlers.Sign.PushBack(v4.Sign)
  50. service.Handlers.Build.PushBack(jsonrpc.Build)
  51. service.Handlers.Unmarshal.PushBack(jsonrpc.Unmarshal)
  52. service.Handlers.UnmarshalMeta.PushBack(jsonrpc.UnmarshalMeta)
  53. service.Handlers.UnmarshalError.PushBack(jsonrpc.UnmarshalError)
  54. return &OutputService1ProtocolTest{service}
  55. }
  56. // newRequest creates a new request for a OutputService1ProtocolTest operation and runs any
  57. // custom request initialization.
  58. func (c *OutputService1ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
  59. req := c.NewRequest(op, params, data)
  60. return req
  61. }
  62. const opOutputService1TestCaseOperation1 = "OperationName"
  63. // OutputService1TestCaseOperation1Request generates a request for the OutputService1TestCaseOperation1 operation.
  64. func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1Request(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (req *request.Request, output *OutputService1TestShapeOutputService1TestCaseOperation1Output) {
  65. op := &request.Operation{
  66. Name: opOutputService1TestCaseOperation1,
  67. }
  68. if input == nil {
  69. input = &OutputService1TestShapeOutputService1TestCaseOperation1Input{}
  70. }
  71. req = c.newRequest(op, input, output)
  72. output = &OutputService1TestShapeOutputService1TestCaseOperation1Output{}
  73. req.Data = output
  74. return
  75. }
  76. func (c *OutputService1ProtocolTest) OutputService1TestCaseOperation1(input *OutputService1TestShapeOutputService1TestCaseOperation1Input) (*OutputService1TestShapeOutputService1TestCaseOperation1Output, error) {
  77. req, out := c.OutputService1TestCaseOperation1Request(input)
  78. err := req.Send()
  79. return out, err
  80. }
  81. type OutputService1TestShapeOutputService1TestCaseOperation1Input struct {
  82. metadataOutputService1TestShapeOutputService1TestCaseOperation1Input `json:"-" xml:"-"`
  83. }
  84. type metadataOutputService1TestShapeOutputService1TestCaseOperation1Input struct {
  85. SDKShapeTraits bool `type:"structure"`
  86. }
  87. type OutputService1TestShapeOutputService1TestCaseOperation1Output struct {
  88. metadataOutputService1TestShapeOutputService1TestCaseOperation1Output `json:"-" xml:"-"`
  89. }
  90. type metadataOutputService1TestShapeOutputService1TestCaseOperation1Output struct {
  91. SDKShapeTraits bool `type:"structure"`
  92. }
  93. type OutputService2ProtocolTest struct {
  94. *service.Service
  95. }
  96. // New returns a new OutputService2ProtocolTest client.
  97. func NewOutputService2ProtocolTest(config *aws.Config) *OutputService2ProtocolTest {
  98. service := &service.Service{
  99. ServiceInfo: serviceinfo.ServiceInfo{
  100. Config: defaults.DefaultConfig.Merge(config),
  101. ServiceName: "outputservice2protocoltest",
  102. APIVersion: "",
  103. JSONVersion: "",
  104. TargetPrefix: "",
  105. },
  106. }
  107. service.Initialize()
  108. // Handlers
  109. service.Handlers.Sign.PushBack(v4.Sign)
  110. service.Handlers.Build.PushBack(jsonrpc.Build)
  111. service.Handlers.Unmarshal.PushBack(jsonrpc.Unmarshal)
  112. service.Handlers.UnmarshalMeta.PushBack(jsonrpc.UnmarshalMeta)
  113. service.Handlers.UnmarshalError.PushBack(jsonrpc.UnmarshalError)
  114. return &OutputService2ProtocolTest{service}
  115. }
  116. // newRequest creates a new request for a OutputService2ProtocolTest operation and runs any
  117. // custom request initialization.
  118. func (c *OutputService2ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
  119. req := c.NewRequest(op, params, data)
  120. return req
  121. }
  122. const opOutputService2TestCaseOperation1 = "OperationName"
  123. // OutputService2TestCaseOperation1Request generates a request for the OutputService2TestCaseOperation1 operation.
  124. func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1Request(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (req *request.Request, output *OutputService2TestShapeOutputService2TestCaseOperation1Output) {
  125. op := &request.Operation{
  126. Name: opOutputService2TestCaseOperation1,
  127. }
  128. if input == nil {
  129. input = &OutputService2TestShapeOutputService2TestCaseOperation1Input{}
  130. }
  131. req = c.newRequest(op, input, output)
  132. output = &OutputService2TestShapeOutputService2TestCaseOperation1Output{}
  133. req.Data = output
  134. return
  135. }
  136. func (c *OutputService2ProtocolTest) OutputService2TestCaseOperation1(input *OutputService2TestShapeOutputService2TestCaseOperation1Input) (*OutputService2TestShapeOutputService2TestCaseOperation1Output, error) {
  137. req, out := c.OutputService2TestCaseOperation1Request(input)
  138. err := req.Send()
  139. return out, err
  140. }
  141. type OutputService2TestShapeOutputService2TestCaseOperation1Input struct {
  142. metadataOutputService2TestShapeOutputService2TestCaseOperation1Input `json:"-" xml:"-"`
  143. }
  144. type metadataOutputService2TestShapeOutputService2TestCaseOperation1Input struct {
  145. SDKShapeTraits bool `type:"structure"`
  146. }
  147. type OutputService2TestShapeOutputService2TestCaseOperation1Output struct {
  148. Char *string `type:"character"`
  149. Double *float64 `type:"double"`
  150. FalseBool *bool `type:"boolean"`
  151. Float *float64 `type:"float"`
  152. Long *int64 `type:"long"`
  153. Num *int64 `type:"integer"`
  154. Str *string `type:"string"`
  155. TrueBool *bool `type:"boolean"`
  156. metadataOutputService2TestShapeOutputService2TestCaseOperation1Output `json:"-" xml:"-"`
  157. }
  158. type metadataOutputService2TestShapeOutputService2TestCaseOperation1Output struct {
  159. SDKShapeTraits bool `type:"structure"`
  160. }
  161. type OutputService3ProtocolTest struct {
  162. *service.Service
  163. }
  164. // New returns a new OutputService3ProtocolTest client.
  165. func NewOutputService3ProtocolTest(config *aws.Config) *OutputService3ProtocolTest {
  166. service := &service.Service{
  167. ServiceInfo: serviceinfo.ServiceInfo{
  168. Config: defaults.DefaultConfig.Merge(config),
  169. ServiceName: "outputservice3protocoltest",
  170. APIVersion: "",
  171. JSONVersion: "",
  172. TargetPrefix: "",
  173. },
  174. }
  175. service.Initialize()
  176. // Handlers
  177. service.Handlers.Sign.PushBack(v4.Sign)
  178. service.Handlers.Build.PushBack(jsonrpc.Build)
  179. service.Handlers.Unmarshal.PushBack(jsonrpc.Unmarshal)
  180. service.Handlers.UnmarshalMeta.PushBack(jsonrpc.UnmarshalMeta)
  181. service.Handlers.UnmarshalError.PushBack(jsonrpc.UnmarshalError)
  182. return &OutputService3ProtocolTest{service}
  183. }
  184. // newRequest creates a new request for a OutputService3ProtocolTest operation and runs any
  185. // custom request initialization.
  186. func (c *OutputService3ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
  187. req := c.NewRequest(op, params, data)
  188. return req
  189. }
  190. const opOutputService3TestCaseOperation1 = "OperationName"
  191. // OutputService3TestCaseOperation1Request generates a request for the OutputService3TestCaseOperation1 operation.
  192. func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1Request(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (req *request.Request, output *OutputService3TestShapeOutputService3TestCaseOperation1Output) {
  193. op := &request.Operation{
  194. Name: opOutputService3TestCaseOperation1,
  195. }
  196. if input == nil {
  197. input = &OutputService3TestShapeOutputService3TestCaseOperation1Input{}
  198. }
  199. req = c.newRequest(op, input, output)
  200. output = &OutputService3TestShapeOutputService3TestCaseOperation1Output{}
  201. req.Data = output
  202. return
  203. }
  204. func (c *OutputService3ProtocolTest) OutputService3TestCaseOperation1(input *OutputService3TestShapeOutputService3TestCaseOperation1Input) (*OutputService3TestShapeOutputService3TestCaseOperation1Output, error) {
  205. req, out := c.OutputService3TestCaseOperation1Request(input)
  206. err := req.Send()
  207. return out, err
  208. }
  209. type OutputService3TestShapeBlobContainer struct {
  210. Foo []byte `locationName:"foo" type:"blob"`
  211. metadataOutputService3TestShapeBlobContainer `json:"-" xml:"-"`
  212. }
  213. type metadataOutputService3TestShapeBlobContainer struct {
  214. SDKShapeTraits bool `type:"structure"`
  215. }
  216. type OutputService3TestShapeOutputService3TestCaseOperation1Input struct {
  217. metadataOutputService3TestShapeOutputService3TestCaseOperation1Input `json:"-" xml:"-"`
  218. }
  219. type metadataOutputService3TestShapeOutputService3TestCaseOperation1Input struct {
  220. SDKShapeTraits bool `type:"structure"`
  221. }
  222. type OutputService3TestShapeOutputService3TestCaseOperation1Output struct {
  223. BlobMember []byte `type:"blob"`
  224. StructMember *OutputService3TestShapeBlobContainer `type:"structure"`
  225. metadataOutputService3TestShapeOutputService3TestCaseOperation1Output `json:"-" xml:"-"`
  226. }
  227. type metadataOutputService3TestShapeOutputService3TestCaseOperation1Output struct {
  228. SDKShapeTraits bool `type:"structure"`
  229. }
  230. type OutputService4ProtocolTest struct {
  231. *service.Service
  232. }
  233. // New returns a new OutputService4ProtocolTest client.
  234. func NewOutputService4ProtocolTest(config *aws.Config) *OutputService4ProtocolTest {
  235. service := &service.Service{
  236. ServiceInfo: serviceinfo.ServiceInfo{
  237. Config: defaults.DefaultConfig.Merge(config),
  238. ServiceName: "outputservice4protocoltest",
  239. APIVersion: "",
  240. JSONVersion: "",
  241. TargetPrefix: "",
  242. },
  243. }
  244. service.Initialize()
  245. // Handlers
  246. service.Handlers.Sign.PushBack(v4.Sign)
  247. service.Handlers.Build.PushBack(jsonrpc.Build)
  248. service.Handlers.Unmarshal.PushBack(jsonrpc.Unmarshal)
  249. service.Handlers.UnmarshalMeta.PushBack(jsonrpc.UnmarshalMeta)
  250. service.Handlers.UnmarshalError.PushBack(jsonrpc.UnmarshalError)
  251. return &OutputService4ProtocolTest{service}
  252. }
  253. // newRequest creates a new request for a OutputService4ProtocolTest operation and runs any
  254. // custom request initialization.
  255. func (c *OutputService4ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
  256. req := c.NewRequest(op, params, data)
  257. return req
  258. }
  259. const opOutputService4TestCaseOperation1 = "OperationName"
  260. // OutputService4TestCaseOperation1Request generates a request for the OutputService4TestCaseOperation1 operation.
  261. func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1Request(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (req *request.Request, output *OutputService4TestShapeOutputService4TestCaseOperation1Output) {
  262. op := &request.Operation{
  263. Name: opOutputService4TestCaseOperation1,
  264. }
  265. if input == nil {
  266. input = &OutputService4TestShapeOutputService4TestCaseOperation1Input{}
  267. }
  268. req = c.newRequest(op, input, output)
  269. output = &OutputService4TestShapeOutputService4TestCaseOperation1Output{}
  270. req.Data = output
  271. return
  272. }
  273. func (c *OutputService4ProtocolTest) OutputService4TestCaseOperation1(input *OutputService4TestShapeOutputService4TestCaseOperation1Input) (*OutputService4TestShapeOutputService4TestCaseOperation1Output, error) {
  274. req, out := c.OutputService4TestCaseOperation1Request(input)
  275. err := req.Send()
  276. return out, err
  277. }
  278. type OutputService4TestShapeOutputService4TestCaseOperation1Input struct {
  279. metadataOutputService4TestShapeOutputService4TestCaseOperation1Input `json:"-" xml:"-"`
  280. }
  281. type metadataOutputService4TestShapeOutputService4TestCaseOperation1Input struct {
  282. SDKShapeTraits bool `type:"structure"`
  283. }
  284. type OutputService4TestShapeOutputService4TestCaseOperation1Output struct {
  285. StructMember *OutputService4TestShapeTimeContainer `type:"structure"`
  286. TimeMember *time.Time `type:"timestamp" timestampFormat:"unix"`
  287. metadataOutputService4TestShapeOutputService4TestCaseOperation1Output `json:"-" xml:"-"`
  288. }
  289. type metadataOutputService4TestShapeOutputService4TestCaseOperation1Output struct {
  290. SDKShapeTraits bool `type:"structure"`
  291. }
  292. type OutputService4TestShapeTimeContainer struct {
  293. Foo *time.Time `locationName:"foo" type:"timestamp" timestampFormat:"unix"`
  294. metadataOutputService4TestShapeTimeContainer `json:"-" xml:"-"`
  295. }
  296. type metadataOutputService4TestShapeTimeContainer struct {
  297. SDKShapeTraits bool `type:"structure"`
  298. }
  299. type OutputService5ProtocolTest struct {
  300. *service.Service
  301. }
  302. // New returns a new OutputService5ProtocolTest client.
  303. func NewOutputService5ProtocolTest(config *aws.Config) *OutputService5ProtocolTest {
  304. service := &service.Service{
  305. ServiceInfo: serviceinfo.ServiceInfo{
  306. Config: defaults.DefaultConfig.Merge(config),
  307. ServiceName: "outputservice5protocoltest",
  308. APIVersion: "",
  309. JSONVersion: "",
  310. TargetPrefix: "",
  311. },
  312. }
  313. service.Initialize()
  314. // Handlers
  315. service.Handlers.Sign.PushBack(v4.Sign)
  316. service.Handlers.Build.PushBack(jsonrpc.Build)
  317. service.Handlers.Unmarshal.PushBack(jsonrpc.Unmarshal)
  318. service.Handlers.UnmarshalMeta.PushBack(jsonrpc.UnmarshalMeta)
  319. service.Handlers.UnmarshalError.PushBack(jsonrpc.UnmarshalError)
  320. return &OutputService5ProtocolTest{service}
  321. }
  322. // newRequest creates a new request for a OutputService5ProtocolTest operation and runs any
  323. // custom request initialization.
  324. func (c *OutputService5ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
  325. req := c.NewRequest(op, params, data)
  326. return req
  327. }
  328. const opOutputService5TestCaseOperation1 = "OperationName"
  329. // OutputService5TestCaseOperation1Request generates a request for the OutputService5TestCaseOperation1 operation.
  330. func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1Request(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (req *request.Request, output *OutputService5TestShapeOutputService5TestCaseOperation1Output) {
  331. op := &request.Operation{
  332. Name: opOutputService5TestCaseOperation1,
  333. }
  334. if input == nil {
  335. input = &OutputService5TestShapeOutputService5TestCaseOperation1Input{}
  336. }
  337. req = c.newRequest(op, input, output)
  338. output = &OutputService5TestShapeOutputService5TestCaseOperation1Output{}
  339. req.Data = output
  340. return
  341. }
  342. func (c *OutputService5ProtocolTest) OutputService5TestCaseOperation1(input *OutputService5TestShapeOutputService5TestCaseOperation1Input) (*OutputService5TestShapeOutputService5TestCaseOperation1Output, error) {
  343. req, out := c.OutputService5TestCaseOperation1Request(input)
  344. err := req.Send()
  345. return out, err
  346. }
  347. type OutputService5TestShapeOutputService5TestCaseOperation1Input struct {
  348. metadataOutputService5TestShapeOutputService5TestCaseOperation1Input `json:"-" xml:"-"`
  349. }
  350. type metadataOutputService5TestShapeOutputService5TestCaseOperation1Input struct {
  351. SDKShapeTraits bool `type:"structure"`
  352. }
  353. type OutputService5TestShapeOutputService5TestCaseOperation1Output struct {
  354. ListMember []*string `type:"list"`
  355. metadataOutputService5TestShapeOutputService5TestCaseOperation1Output `json:"-" xml:"-"`
  356. }
  357. type metadataOutputService5TestShapeOutputService5TestCaseOperation1Output struct {
  358. SDKShapeTraits bool `type:"structure"`
  359. }
  360. type OutputService6ProtocolTest struct {
  361. *service.Service
  362. }
  363. // New returns a new OutputService6ProtocolTest client.
  364. func NewOutputService6ProtocolTest(config *aws.Config) *OutputService6ProtocolTest {
  365. service := &service.Service{
  366. ServiceInfo: serviceinfo.ServiceInfo{
  367. Config: defaults.DefaultConfig.Merge(config),
  368. ServiceName: "outputservice6protocoltest",
  369. APIVersion: "",
  370. JSONVersion: "",
  371. TargetPrefix: "",
  372. },
  373. }
  374. service.Initialize()
  375. // Handlers
  376. service.Handlers.Sign.PushBack(v4.Sign)
  377. service.Handlers.Build.PushBack(jsonrpc.Build)
  378. service.Handlers.Unmarshal.PushBack(jsonrpc.Unmarshal)
  379. service.Handlers.UnmarshalMeta.PushBack(jsonrpc.UnmarshalMeta)
  380. service.Handlers.UnmarshalError.PushBack(jsonrpc.UnmarshalError)
  381. return &OutputService6ProtocolTest{service}
  382. }
  383. // newRequest creates a new request for a OutputService6ProtocolTest operation and runs any
  384. // custom request initialization.
  385. func (c *OutputService6ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
  386. req := c.NewRequest(op, params, data)
  387. return req
  388. }
  389. const opOutputService6TestCaseOperation1 = "OperationName"
  390. // OutputService6TestCaseOperation1Request generates a request for the OutputService6TestCaseOperation1 operation.
  391. func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1Request(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (req *request.Request, output *OutputService6TestShapeOutputService6TestCaseOperation1Output) {
  392. op := &request.Operation{
  393. Name: opOutputService6TestCaseOperation1,
  394. }
  395. if input == nil {
  396. input = &OutputService6TestShapeOutputService6TestCaseOperation1Input{}
  397. }
  398. req = c.newRequest(op, input, output)
  399. output = &OutputService6TestShapeOutputService6TestCaseOperation1Output{}
  400. req.Data = output
  401. return
  402. }
  403. func (c *OutputService6ProtocolTest) OutputService6TestCaseOperation1(input *OutputService6TestShapeOutputService6TestCaseOperation1Input) (*OutputService6TestShapeOutputService6TestCaseOperation1Output, error) {
  404. req, out := c.OutputService6TestCaseOperation1Request(input)
  405. err := req.Send()
  406. return out, err
  407. }
  408. type OutputService6TestShapeOutputService6TestCaseOperation1Input struct {
  409. metadataOutputService6TestShapeOutputService6TestCaseOperation1Input `json:"-" xml:"-"`
  410. }
  411. type metadataOutputService6TestShapeOutputService6TestCaseOperation1Input struct {
  412. SDKShapeTraits bool `type:"structure"`
  413. }
  414. type OutputService6TestShapeOutputService6TestCaseOperation1Output struct {
  415. MapMember map[string][]*int64 `type:"map"`
  416. metadataOutputService6TestShapeOutputService6TestCaseOperation1Output `json:"-" xml:"-"`
  417. }
  418. type metadataOutputService6TestShapeOutputService6TestCaseOperation1Output struct {
  419. SDKShapeTraits bool `type:"structure"`
  420. }
  421. type OutputService7ProtocolTest struct {
  422. *service.Service
  423. }
  424. // New returns a new OutputService7ProtocolTest client.
  425. func NewOutputService7ProtocolTest(config *aws.Config) *OutputService7ProtocolTest {
  426. service := &service.Service{
  427. ServiceInfo: serviceinfo.ServiceInfo{
  428. Config: defaults.DefaultConfig.Merge(config),
  429. ServiceName: "outputservice7protocoltest",
  430. APIVersion: "",
  431. JSONVersion: "",
  432. TargetPrefix: "",
  433. },
  434. }
  435. service.Initialize()
  436. // Handlers
  437. service.Handlers.Sign.PushBack(v4.Sign)
  438. service.Handlers.Build.PushBack(jsonrpc.Build)
  439. service.Handlers.Unmarshal.PushBack(jsonrpc.Unmarshal)
  440. service.Handlers.UnmarshalMeta.PushBack(jsonrpc.UnmarshalMeta)
  441. service.Handlers.UnmarshalError.PushBack(jsonrpc.UnmarshalError)
  442. return &OutputService7ProtocolTest{service}
  443. }
  444. // newRequest creates a new request for a OutputService7ProtocolTest operation and runs any
  445. // custom request initialization.
  446. func (c *OutputService7ProtocolTest) newRequest(op *request.Operation, params, data interface{}) *request.Request {
  447. req := c.NewRequest(op, params, data)
  448. return req
  449. }
  450. const opOutputService7TestCaseOperation1 = "OperationName"
  451. // OutputService7TestCaseOperation1Request generates a request for the OutputService7TestCaseOperation1 operation.
  452. func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1Request(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (req *request.Request, output *OutputService7TestShapeOutputService7TestCaseOperation1Output) {
  453. op := &request.Operation{
  454. Name: opOutputService7TestCaseOperation1,
  455. }
  456. if input == nil {
  457. input = &OutputService7TestShapeOutputService7TestCaseOperation1Input{}
  458. }
  459. req = c.newRequest(op, input, output)
  460. output = &OutputService7TestShapeOutputService7TestCaseOperation1Output{}
  461. req.Data = output
  462. return
  463. }
  464. func (c *OutputService7ProtocolTest) OutputService7TestCaseOperation1(input *OutputService7TestShapeOutputService7TestCaseOperation1Input) (*OutputService7TestShapeOutputService7TestCaseOperation1Output, error) {
  465. req, out := c.OutputService7TestCaseOperation1Request(input)
  466. err := req.Send()
  467. return out, err
  468. }
  469. type OutputService7TestShapeOutputService7TestCaseOperation1Input struct {
  470. metadataOutputService7TestShapeOutputService7TestCaseOperation1Input `json:"-" xml:"-"`
  471. }
  472. type metadataOutputService7TestShapeOutputService7TestCaseOperation1Input struct {
  473. SDKShapeTraits bool `type:"structure"`
  474. }
  475. type OutputService7TestShapeOutputService7TestCaseOperation1Output struct {
  476. StrType *string `type:"string"`
  477. metadataOutputService7TestShapeOutputService7TestCaseOperation1Output `json:"-" xml:"-"`
  478. }
  479. type metadataOutputService7TestShapeOutputService7TestCaseOperation1Output struct {
  480. SDKShapeTraits bool `type:"structure"`
  481. }
  482. //
  483. // Tests begin here
  484. //
  485. func TestOutputService1ProtocolTestEmptyBodyCase1(t *testing.T) {
  486. svc := NewOutputService1ProtocolTest(nil)
  487. buf := bytes.NewReader([]byte(""))
  488. req, out := svc.OutputService1TestCaseOperation1Request(nil)
  489. req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
  490. // set headers
  491. // unmarshal response
  492. jsonrpc.UnmarshalMeta(req)
  493. jsonrpc.Unmarshal(req)
  494. assert.NoError(t, req.Error)
  495. // assert response
  496. assert.NotNil(t, out) // ensure out variable is used
  497. }
  498. func TestOutputService2ProtocolTestScalarMembersCase1(t *testing.T) {
  499. svc := NewOutputService2ProtocolTest(nil)
  500. buf := bytes.NewReader([]byte("{\"Str\": \"myname\", \"Num\": 123, \"FalseBool\": false, \"TrueBool\": true, \"Float\": 1.2, \"Double\": 1.3, \"Long\": 200, \"Char\": \"a\"}"))
  501. req, out := svc.OutputService2TestCaseOperation1Request(nil)
  502. req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
  503. // set headers
  504. // unmarshal response
  505. jsonrpc.UnmarshalMeta(req)
  506. jsonrpc.Unmarshal(req)
  507. assert.NoError(t, req.Error)
  508. // assert response
  509. assert.NotNil(t, out) // ensure out variable is used
  510. assert.Equal(t, "a", *out.Char)
  511. assert.Equal(t, 1.3, *out.Double)
  512. assert.Equal(t, false, *out.FalseBool)
  513. assert.Equal(t, 1.2, *out.Float)
  514. assert.Equal(t, int64(200), *out.Long)
  515. assert.Equal(t, int64(123), *out.Num)
  516. assert.Equal(t, "myname", *out.Str)
  517. assert.Equal(t, true, *out.TrueBool)
  518. }
  519. func TestOutputService3ProtocolTestBlobMembersCase1(t *testing.T) {
  520. svc := NewOutputService3ProtocolTest(nil)
  521. buf := bytes.NewReader([]byte("{\"BlobMember\": \"aGkh\", \"StructMember\": {\"foo\": \"dGhlcmUh\"}}"))
  522. req, out := svc.OutputService3TestCaseOperation1Request(nil)
  523. req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
  524. // set headers
  525. // unmarshal response
  526. jsonrpc.UnmarshalMeta(req)
  527. jsonrpc.Unmarshal(req)
  528. assert.NoError(t, req.Error)
  529. // assert response
  530. assert.NotNil(t, out) // ensure out variable is used
  531. assert.Equal(t, "hi!", string(out.BlobMember))
  532. assert.Equal(t, "there!", string(out.StructMember.Foo))
  533. }
  534. func TestOutputService4ProtocolTestTimestampMembersCase1(t *testing.T) {
  535. svc := NewOutputService4ProtocolTest(nil)
  536. buf := bytes.NewReader([]byte("{\"TimeMember\": 1398796238, \"StructMember\": {\"foo\": 1398796238}}"))
  537. req, out := svc.OutputService4TestCaseOperation1Request(nil)
  538. req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
  539. // set headers
  540. // unmarshal response
  541. jsonrpc.UnmarshalMeta(req)
  542. jsonrpc.Unmarshal(req)
  543. assert.NoError(t, req.Error)
  544. // assert response
  545. assert.NotNil(t, out) // ensure out variable is used
  546. assert.Equal(t, time.Unix(1.398796238e+09, 0).UTC().String(), out.StructMember.Foo.String())
  547. assert.Equal(t, time.Unix(1.398796238e+09, 0).UTC().String(), out.TimeMember.String())
  548. }
  549. func TestOutputService5ProtocolTestListsCase1(t *testing.T) {
  550. svc := NewOutputService5ProtocolTest(nil)
  551. buf := bytes.NewReader([]byte("{\"ListMember\": [\"a\", \"b\"]}"))
  552. req, out := svc.OutputService5TestCaseOperation1Request(nil)
  553. req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
  554. // set headers
  555. // unmarshal response
  556. jsonrpc.UnmarshalMeta(req)
  557. jsonrpc.Unmarshal(req)
  558. assert.NoError(t, req.Error)
  559. // assert response
  560. assert.NotNil(t, out) // ensure out variable is used
  561. assert.Equal(t, "a", *out.ListMember[0])
  562. assert.Equal(t, "b", *out.ListMember[1])
  563. }
  564. func TestOutputService6ProtocolTestMapsCase1(t *testing.T) {
  565. svc := NewOutputService6ProtocolTest(nil)
  566. buf := bytes.NewReader([]byte("{\"MapMember\": {\"a\": [1, 2], \"b\": [3, 4]}}"))
  567. req, out := svc.OutputService6TestCaseOperation1Request(nil)
  568. req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
  569. // set headers
  570. // unmarshal response
  571. jsonrpc.UnmarshalMeta(req)
  572. jsonrpc.Unmarshal(req)
  573. assert.NoError(t, req.Error)
  574. // assert response
  575. assert.NotNil(t, out) // ensure out variable is used
  576. assert.Equal(t, int64(1), *out.MapMember["a"][0])
  577. assert.Equal(t, int64(2), *out.MapMember["a"][1])
  578. assert.Equal(t, int64(3), *out.MapMember["b"][0])
  579. assert.Equal(t, int64(4), *out.MapMember["b"][1])
  580. }
  581. func TestOutputService7ProtocolTestIgnoresExtraDataCase1(t *testing.T) {
  582. svc := NewOutputService7ProtocolTest(nil)
  583. buf := bytes.NewReader([]byte("{\"foo\": \"bar\"}"))
  584. req, out := svc.OutputService7TestCaseOperation1Request(nil)
  585. req.HTTPResponse = &http.Response{StatusCode: 200, Body: ioutil.NopCloser(buf), Header: http.Header{}}
  586. // set headers
  587. // unmarshal response
  588. jsonrpc.UnmarshalMeta(req)
  589. jsonrpc.Unmarshal(req)
  590. assert.NoError(t, req.Error)
  591. // assert response
  592. assert.NotNil(t, out) // ensure out variable is used
  593. }