Added spec to ensure next page tokens are escaped.
authorSérgio Gomes <sergio.gomes@google.com>
Tue, 24 Apr 2012 11:47:28 +0000 (14:47 +0300)
committerBob Aman <bobaman@google.com>
Tue, 24 Apr 2012 11:47:28 +0000 (14:47 +0300)
spec/google/api_client/result_spec.rb [new file with mode: 0644]

diff --git a/spec/google/api_client/result_spec.rb b/spec/google/api_client/result_spec.rb
new file mode 100644 (file)
index 0000000..8dd2f82
--- /dev/null
@@ -0,0 +1,82 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+require 'spec_helper'
+
+require 'google/api_client'
+require 'google/api_client/version'
+
+describe Google::APIClient::Result do
+  before do
+    @client = Google::APIClient.new
+  end
+
+  describe 'with the plus API' do
+    before do
+      @client.authorization = nil
+      @plus = @client.discovered_api('plus', 'v1')
+      @reference = Google::APIClient::Reference.new({
+        :api_method => @plus.activities.list,
+        :parameters => {
+          'userId' => 'me',
+          'collection' => 'public',
+          'maxResults' => 20
+        }
+      })
+      @request = @reference.to_request
+
+      # Response stub
+      @response = stub("response")
+      @response.stub(:status).and_return(200)
+      @response.stub(:headers).and_return({
+        'etag' => '12345',
+        'x-google-apiary-auth-scopes' =>
+          'https://www.googleapis.com/auth/plus.me',
+        'content-type' => 'application/json; charset=UTF-8',
+        'date' => 'Mon, 23 Apr 2012 00:00:00 GMT',
+        'cache-control' => 'private, max-age=0, must-revalidate, no-transform',
+        'server' => 'GSE',
+        'connection' => 'close'
+      })
+      @response.stub(:body).and_return(
+        <<-END_OF_STRING
+        {
+          "kind": "plus#activityFeed",
+          "etag": "FOO",
+          "nextPageToken": "NEXT+PAGE+TOKEN",
+          "selfLink": "https://www.googleapis.com/plus/v1/people/foo/activities/public?",
+          "nextLink": "https://www.googleapis.com/plus/v1/people/foo/activities/public?maxResults=20&pageToken=NEXT%2BPAGE%2BTOKEN",
+          "title": "Plus Public Activity Feed for ",
+          "updated": "2012-04-23T00:00:00.000Z",
+          "id": "tag:google.com,2010:/plus/people/foo/activities/public",
+          "items": []
+        }
+        END_OF_STRING
+      )
+      @result = Google::APIClient::Result.new(@reference, @request, @response)
+    end
+
+    it 'should return the correct next page token' do
+      @result.next_page_token.should == 'NEXT+PAGE+TOKEN'
+    end
+
+    it 'should escape the next page token when calling next_page' do
+      reference = @result.next_page
+      reference.parameters.should include('pageToken')
+      reference.parameters['pageToken'].should == 'NEXT+PAGE+TOKEN'
+      path = reference.to_request.path.to_s
+      path.should include 'pageToken=NEXT%2BPAGE%2BTOKEN'
+    end
+  end
+end