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
|