%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/opti/workflow/node_modules/aws-sdk/test/json/
Upload File :
Create Path :
Current File : /home/opti/workflow/node_modules/aws-sdk/test/json/parser.spec.coffee

helpers = require('../helpers')
AWS = helpers.AWS

describe 'AWS.JSON.Parser', ->

  parser = new AWS.JSON.Parser()
  timestampFormat = 'iso8601'
  api = null

  beforeEach ->
    api = new AWS.Model.Api metadata: timestampFormat: timestampFormat

  parse = (rules, params) ->
    shape = AWS.Model.Shape.create(rules, api: api)
    parser.parse(params, shape)

  describe 'parse', ->

    it 'returns an empty document when there are no params', ->
      expect(parse({}, '{}')).toEqual({})

    describe 'structures', ->
      rules =
        type: 'structure'
        members:
          Items:
            type: 'structure'
            members:
              A: type: 'string'
              B: type: 'string'

      it 'translates input', ->
        params = '{ "Items": { "A": "a", "B": "b" } }'
        expect(parse(rules, params)).toEqual({"Items":{"A":"a","B":"b"}})

      it 'ignores null', ->
        expect(parse(rules, '{"Items": null}')).toEqual({})

    describe 'lists', ->
      rules =
        type: 'structure'
        members:
          Items:
            type: 'list'
            member:
              type: 'string'

      it 'translates input', ->
        params = '{"Items":["a","b","c"]}'
        expect(parse(rules, params)).toEqual(Items: ['a', 'b', 'c'])

      it 'ignores null', ->
        expect(parse(rules, '{"Items": null}')).toEqual({})

    describe 'maps', ->
      rules =
        type: 'structure'
        members:
          Items:
            type: 'map'
            key: type: 'string'
            value: type: 'string'

      it 'translates maps', ->
        params = '{"Items":{"A":"a","B":"b"}}'
        expect(parse(rules, params)).toEqual({ Items: { A: 'a', B: 'b' } })

      it 'ignores null', ->
        expect(parse(rules, '{"Items": null}')).toEqual({})

    it 'translates nested maps', ->
      rules =
        type: 'structure'
        members:
          Items: type: 'map', value: type: 'integer'
      now = new Date()
      now.setMilliseconds(100)
      params = Items: MyKey: 5, MyOtherKey: 10
      str = '{"Items":{"MyKey":5,"MyOtherKey":10}}'
      expect(parse(rules, str)).toEqual(params)

    it 'traslates nested timestamps', ->
      rules =
        type: 'structure'
        members:
          Build:
            type: 'structure'
            members:
              When:
                type: 'timestamp'
      time = new Date(0)
      params = Build: When: time
      formatted = AWS.util.date.iso8601(time)
      expect(parse(rules, '{"Build":{"When":"'+formatted+'"}}')).toEqual(params)

    it 'translates binary types', ->
      rules =
        type: 'structure'
        members:
          Binary1:
            type: 'binary'
          Binary2:
            type: 'base64'
      data = parse(rules, '{"Binary1":"AQID","Binary2":"AQID"}')
      expect(AWS.util.Buffer.isBuffer(data.Binary1))
      expect(AWS.util.Buffer.isBuffer(data.Binary2))
      expect(data.Binary1.toString()).toEqual('\u0001\u0002\u0003')
      expect(data.Binary2.toString()).toEqual('\u0001\u0002\u0003')

Zerion Mini Shell 1.0