import json

from nose.tools import assert_equal

from encryptit.openpgp_message import PacketLocation
from encryptit.dump_json import OpenPGPJsonEncoder

PACKET_LOCATION = PacketLocation(
    header_start=10,
    body_start=12,
    body_length=8)


def test_packet_location_header_length_field():
    assert_equal(2, PACKET_LOCATION.header_length)


def test_packet_location_header_end_field():
    assert_equal(12, PACKET_LOCATION.header_end)


def test_packet_location_body_end_field():
    assert_equal(20, PACKET_LOCATION.body_end)


def test_packet_location_serialize():
    # convert to JSON then back again in order to compare as python objects -
    # less picky than comparing as strings.

    as_json = json.dumps(PACKET_LOCATION.serialize(), cls=OpenPGPJsonEncoder)
    back_to_data = json.loads(as_json)

    assert_equal(
        {
            'header_start': 10,
            'header_length': 2,
            'header_end': 12,
            'body_start': 12,
            'body_length': 8,
            'body_end': 20,
        },
        back_to_data)

import json

from nose.tools import assert_equal

from encryptit.openpgp_message import PacketLocation
from encryptit.dump_json import OpenPGPJsonEncoder

PACKET_LOCATION = PacketLocation(
    header_start=10,
    body_start=12,
    body_length=8)


def test_packet_location_header_length_field():
    assert_equal(2, PACKET_LOCATION.header_length)


def test_packet_location_header_end_field():
    assert_equal(12, PACKET_LOCATION.header_end)


def test_packet_location_body_end_field():
    assert_equal(20, PACKET_LOCATION.body_end)


def test_packet_location_json_serializing():
    # convert to JSON then back again in order to compare as python objects -
    # less picky than comparing as strings.

    as_json = json.dumps(PACKET_LOCATION, cls=OpenPGPJsonEncoder)
    back_to_data = json.loads(as_json)

    assert_equal(
        {
            'header_start': 10,
            'header_length': 2,
            'header_end': 12,
            'body_start': 12,
            'body_length': 8,
            'body_end': 20,
        },
        back_to_data)

Test for incorrect serialisation of PacketLocation
Test for incorrect serialisation of PacketLocation

Although the `serialize` method is returning the right thing, when we
serialize it with the `OpenPGPJsonEncoder`, it's being serialized as a
JSON array. Test to capture that behaviour.

  import json
  
  from nose.tools import assert_equal
  
  from encryptit.openpgp_message import PacketLocation
  from encryptit.dump_json import OpenPGPJsonEncoder
  
  PACKET_LOCATION = PacketLocation(
      header_start=10,
      body_start=12,
      body_length=8)
  
  
  def test_packet_location_header_length_field():
      assert_equal(2, PACKET_LOCATION.header_length)
  
  
  def test_packet_location_header_end_field():
      assert_equal(12, PACKET_LOCATION.header_end)
  
  
  def test_packet_location_body_end_field():
      assert_equal(20, PACKET_LOCATION.body_end)
  
  
- def test_packet_location_serialize():
+ def test_packet_location_json_serializing():
      # convert to JSON then back again in order to compare as python objects -
      # less picky than comparing as strings.
  
-     as_json = json.dumps(PACKET_LOCATION.serialize(), cls=OpenPGPJsonEncoder)
+     as_json = json.dumps(PACKET_LOCATION, cls=OpenPGPJsonEncoder)
      back_to_data = json.loads(as_json)
  
      assert_equal(
          {
              'header_start': 10,
              'header_length': 2,
              'header_end': 12,
              'body_start': 12,
              'body_length': 8,
              'body_end': 20,
          },
          back_to_data)
  
Test for incorrect serialisation of PacketLocation
## Code Before:
import json

from nose.tools import assert_equal

from encryptit.openpgp_message import PacketLocation
from encryptit.dump_json import OpenPGPJsonEncoder

PACKET_LOCATION = PacketLocation(
    header_start=10,
    body_start=12,
    body_length=8)


def test_packet_location_header_length_field():
    assert_equal(2, PACKET_LOCATION.header_length)


def test_packet_location_header_end_field():
    assert_equal(12, PACKET_LOCATION.header_end)


def test_packet_location_body_end_field():
    assert_equal(20, PACKET_LOCATION.body_end)


def test_packet_location_serialize():
    # convert to JSON then back again in order to compare as python objects -
    # less picky than comparing as strings.

    as_json = json.dumps(PACKET_LOCATION.serialize(), cls=OpenPGPJsonEncoder)
    back_to_data = json.loads(as_json)

    assert_equal(
        {
            'header_start': 10,
            'header_length': 2,
            'header_end': 12,
            'body_start': 12,
            'body_length': 8,
            'body_end': 20,
        },
        back_to_data)

## Instruction:
Test for incorrect serialisation of PacketLocation
## Code After:
import json

from nose.tools import assert_equal

from encryptit.openpgp_message import PacketLocation
from encryptit.dump_json import OpenPGPJsonEncoder

PACKET_LOCATION = PacketLocation(
    header_start=10,
    body_start=12,
    body_length=8)


def test_packet_location_header_length_field():
    assert_equal(2, PACKET_LOCATION.header_length)


def test_packet_location_header_end_field():
    assert_equal(12, PACKET_LOCATION.header_end)


def test_packet_location_body_end_field():
    assert_equal(20, PACKET_LOCATION.body_end)


def test_packet_location_json_serializing():
    # convert to JSON then back again in order to compare as python objects -
    # less picky than comparing as strings.

    as_json = json.dumps(PACKET_LOCATION, cls=OpenPGPJsonEncoder)
    back_to_data = json.loads(as_json)

    assert_equal(
        {
            'header_start': 10,
            'header_length': 2,
            'header_end': 12,
            'body_start': 12,
            'body_length': 8,
            'body_end': 20,
        },
        back_to_data)
