def test_policy_submission_with_valid_data(gpg_key, gpg, factories, policy_data):
    # sanity check that we are using valid test data.
    validate_policy_application(policy_data)

    policy_application = factories.PolicyApplicationFactory(data=json.dumps(policy_data))

    data = {
        'keybase_username': '******',
        'signed_message': gpg.sign(policy_application.data).data,
    }
    serializer = PolicySubmissionSerializer(policy_application, data=data)
    assert serializer.is_valid(), serializer.errors

    assert policy_application.is_final is False

    saved_policy_application = serializer.save()

    assert saved_policy_application.pk == policy_application.pk
    assert saved_policy_application.is_final is True
    assert saved_policy_application.is_signed is True