49 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
require 'spec_helper'
 | 
						|
require 'google/apis/pubsub_v1'
 | 
						|
require 'googleauth'
 | 
						|
 | 
						|
Pubsub = Google::Apis::PubsubV1
 | 
						|
 | 
						|
RSpec.describe Google::Apis::PubsubV1, :if => run_integration_tests? do
 | 
						|
 | 
						|
  before(:context) do
 | 
						|
    WebMock.allow_net_connect!
 | 
						|
    project = ENV['GOOGLE_PROJECT_ID']
 | 
						|
    @topic_name = "projects/#{project}/topics/test"
 | 
						|
    @subscription_name = "projects/#{project}/subscriptions/test"
 | 
						|
 | 
						|
    @pubsub = Pubsub::PubsubService.new
 | 
						|
    @pubsub.authorization = Google::Auth.get_application_default([Pubsub::AUTH_PUBSUB])
 | 
						|
    @pubsub.create_topic(@topic_name)
 | 
						|
    @pubsub.create_subscription(@subscription_name, Pubsub::Subscription.new(topic: @topic_name))
 | 
						|
  end
 | 
						|
 | 
						|
  it 'should publish & receive messages' do
 | 
						|
    # Publish messages
 | 
						|
    request = Pubsub::PublishRequest.new(messages: [])
 | 
						|
    request.messages << Pubsub::Message.new(attributes: { "language" => "en" }, data: 'Hello')
 | 
						|
    request.messages << Pubsub::Message.new(attributes: { "language" => "en" }, data: 'World')
 | 
						|
    @pubsub.publish_topic(@topic_name, request)
 | 
						|
 | 
						|
    # Pull messages
 | 
						|
    response = @pubsub.pull_subscription(@subscription_name, Pubsub::PullRequest.new(max_messages: 5))
 | 
						|
    response.received_messages.each do |received_message|
 | 
						|
      data = received_message.message.data
 | 
						|
      puts "Received #{data}"
 | 
						|
    end
 | 
						|
 | 
						|
    # Acknowledge receipt
 | 
						|
    ack_ids = response.received_messages.map{ |msg| msg.ack_id }
 | 
						|
    @pubsub.acknowledge_subscription(@subscription_name, Pubsub::AcknowledgeRequest.new(ack_ids: ack_ids))
 | 
						|
 | 
						|
    expect(response.received_messages.length).to eq 2
 | 
						|
  end
 | 
						|
 | 
						|
  after(:context) do
 | 
						|
    @pubsub.delete_subscription(@subscription_name)
 | 
						|
    @pubsub.delete_topic(@topic_name)
 | 
						|
    WebMock.disable_net_connect!
 | 
						|
  end
 | 
						|
 | 
						|
end
 |