anchor.diff:      PublNode = publish_node_with_content_stanza(NodeName, ItemTopublish),
       pubsub_stanza([PublNode], ?NS_PUBSUB).
   
  -%% Similar to above but with different entry body - mimicking "real" physical 
  +%% Similar to above but with different entry body - mimicking "real" physical
   %% device with hardware "identifier" - device 1
   create_publish_node_content_stanza_second(NodeName, ItemId) ->
       PublishEntry = publish_entry(entry_body_with_sample_device_id()),
  
positive.code: %%% @copyright (C) 2015, Erlang Solutions Ltd.
  %%% @doc Suite for testing pubsub features as described in XEP-0060
  %%% @Helper module - only pubsub specific stanzas generation
  %%% @functions. 
  %%% @end
  %%%===================================================================
  
  -module(escalus_pubsub_stanza).
  %%-compile(export_all).
  
  -include_lib("escalus/include/escalus.hrl").
  -include_lib("common_test/include/ct.hrl").
  
negative.code: 
  create_sub_unsubscribe_from_node_stanza(NodeName, From, SubUnsubType) ->
      #xmlel{name = SubUnsubType,
             attrs = [
                      {<<"node">>, NodeName},
                      {<<"jid">>, escalus_utils:get_jid(From)}]
            }.
  
  %% ----end----- subscribe - unscubscribe -----------
  
  delete_node_stanza(NodeName) ->
      DelNode = #xmlel{name = <<"delete">>,
                       attrs = [{<<"node">>, NodeName}]
                      },
      pubsub_stanza([DelNode], ?NS_PUBSUB_OWNER).
  
  retrieve_subscriptions_stanza(NodeName) ->
      RetrieveNode = #xmlel{name = <<"subscriptions">>,
                            attrs = [{<<"node">>, NodeName}]
                           },
      pubsub_stanza([RetrieveNode], ?NS_PUBSUB_OWNER).
  
  subscription_stanza({Jid, SubscriptionState}) ->
      #xmlel{name = <<"subscription">>,
             attrs = [{<<"jid">>, Jid},{<<"subscription">>, SubscriptionState}]
            }.
  
  %% according to Example 187, 8.8.2.1, XEP-0060
  set_subscriptions_stanza(NodeName, SubscriptionChangesListStanza) ->
      RetrieveNode = #xmlel{
                        name = <<"subscriptions">>,
                        attrs = [{<<"node">>, NodeName}],
                        children = SubscriptionChangesListStanza
                       },
      pubsub_stanza([RetrieveNode], ?NS_PUBSUB_OWNER).
  
  %% pass SubscrChangeData as List of tuples {jid, new_subscription_state}
  get_subscription_change_list_stanza(SubscriptionChangeData) ->
      lists:map(
        fun(ChangeEntry) ->
                subscription_stanza({_Jid, _SubsState} = ChangeEntry)
        end,
        SubscriptionChangeData).
  