File: test_pubsub_requests.rb

package info (click to toggle)
ruby-fog-google 1.19.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,568 kB
  • sloc: ruby: 16,775; makefile: 3
file content (105 lines) | stat: -rw-r--r-- 3,320 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
require "helpers/integration_test_helper"
require "integration/pubsub/pubsub_shared"
require "securerandom"
require "base64"

class TestPubsubRequests < PubSubShared
  def test_create_topic
    name = new_topic_name
    result = @client.create_topic(name)
    assert_equal(result.name, name)
  end

  def test_get_topic
    result = @client.get_topic(some_topic_name)
    assert_equal(result.name, some_topic_name)
  end

  def test_list_topics
    # Force a topic to be created just so we have at least 1 to list
    name = new_topic_name
    @client.create_topic(name)

    Fog.wait_for(5) do
      result = @client.list_topics
      if result.topics.nil?
        false
      end

      result.topics.any? { |topic| topic.name == name }
    end
  end

  def test_delete_topic
    topic_to_delete = new_topic_name
    @client.create_topic(topic_to_delete)

    @client.delete_topic(topic_to_delete)
  end

  def test_publish_topic
    @client.publish_topic(some_topic_name, [:data => Base64.strict_encode64("some message")])
  end

  def test_create_subscription
    push_config = {}
    ack_deadline_seconds = 18

    subscription_name = new_subscription_name
    result = @client.create_subscription(subscription_name, some_topic_name,
                                         push_config, ack_deadline_seconds)
    assert_equal(result.name, subscription_name)
  end

  def test_get_subscription
    subscription_name = some_subscription_name
    result = @client.get_subscription(subscription_name)

    assert_equal(result.name, subscription_name)
  end

  def test_list_subscriptions
    # Force a subscription to be created just so we have at least 1 to list
    subscription_name = new_subscription_name
    @client.create_subscription(subscription_name, some_topic_name)

    Fog.wait_for(5) do
      result = @client.list_subscriptions
      if result.subscriptions.nil?
        false
      end

      result.subscriptions.any? { |sub| sub.name == subscription_name }
    end
  end

  def test_delete_subscription
    subscription_to_delete = new_subscription_name
    @client.create_subscription(subscription_to_delete, some_topic_name)

    @client.delete_subscription(subscription_to_delete)
  end

  def test_pull_subscription
    subscription_name = new_subscription_name
    message_bytes = Base64.strict_encode64("some message")
    @client.create_subscription(subscription_name, some_topic_name)
    @client.publish_topic(some_topic_name, [:data => message_bytes])

    result = @client.pull_subscription(subscription_name, {:return_immediately => false})

    contained = result.received_messages.any? { |received| received.message.data == message_bytes }
    assert_equal(true, contained, "sent messsage not contained within pulled responses")
  end

  def test_acknowledge_subscription
    subscription_name = new_subscription_name
    @client.create_subscription(subscription_name, some_topic_name)
    @client.publish_topic(some_topic_name, [:data => Base64.strict_encode64("some message")])
    pull_result = @client.pull_subscription(subscription_name, {:return_immediately => false})
    assert_operator(pull_result.received_messages.length, :>, 0)

    @client.acknowledge_subscription(subscription_name,
                                     pull_result.received_messages[0].ack_id)
  end
end