Commit 314c4746 authored by Valery Sizov's avatar Valery Sizov

Specs for Bitbucket::Connections and Bitbucket::Collections

parent 1d7f85ae
...@@ -15,18 +15,6 @@ module Bitbucket ...@@ -15,18 +15,6 @@ module Bitbucket
@refresh_token = options[:refresh_token] @refresh_token = options[:refresh_token]
end end
def client
@client ||= OAuth2::Client.new(provider.app_id, provider.app_secret, options)
end
def connection
@connection ||= OAuth2::AccessToken.new(client, @token, refresh_token: @refresh_token, expires_at: @expires_at, expires_in: @expires_in)
end
def set_default_query_parameters(params = {})
@default_query.merge!(params)
end
def get(path, extra_query = {}) def get(path, extra_query = {})
refresh! if expired? refresh! if expired?
...@@ -52,6 +40,14 @@ module Bitbucket ...@@ -52,6 +40,14 @@ module Bitbucket
attr_reader :expires_at, :expires_in, :refresh_token, :token attr_reader :expires_at, :expires_in, :refresh_token, :token
def client
@client ||= OAuth2::Client.new(provider.app_id, provider.app_secret, options)
end
def connection
@connection ||= OAuth2::AccessToken.new(client, @token, refresh_token: @refresh_token, expires_at: @expires_at, expires_in: @expires_in)
end
def build_url(path) def build_url(path)
return path if path.starts_with?(root_url) return path if path.starts_with?(root_url)
......
...@@ -7,8 +7,6 @@ module Bitbucket ...@@ -7,8 +7,6 @@ module Bitbucket
@type = type @type = type
@url = url @url = url
@page = nil @page = nil
connection.set_default_query_parameters(pagelen: PAGE_LENGTH, sort: :created_on)
end end
def items def items
...@@ -31,7 +29,7 @@ module Bitbucket ...@@ -31,7 +29,7 @@ module Bitbucket
end end
def fetch_next_page def fetch_next_page
parsed_response = connection.get(next_url) parsed_response = connection.get(next_url, { pagelen: PAGE_LENGTH, sort: :created_on })
Page.new(parsed_response, type) Page.new(parsed_response, type)
end end
end end
......
require 'spec_helper'
# Emulates paginator. It returns 2 pages with results
class TestPaginator
def initialize
@current_page = 0
end
def items
@current_page += 1
raise StopIteration if @current_page > 2
["result_1_page_#{@current_page}", "result_2_page_#{@current_page}"]
end
end
describe Bitbucket::Collection do
it "iterates paginator" do
collection = described_class.new(TestPaginator.new)
expect(collection.to_a).to match(["result_1_page_1", "result_2_page_1", "result_1_page_2", "result_2_page_2"])
end
end
require 'spec_helper'
describe Bitbucket::Connection do
describe '#get' do
it 'calls OAuth2::AccessToken::get' do
expect_any_instance_of(OAuth2::AccessToken).to receive(:get).and_return(double(parsed: true))
connection = described_class.new({})
connection.get('/users')
end
end
describe '#expired?' do
it 'calls connection.expired?' do
expect_any_instance_of(OAuth2::AccessToken).to receive(:expired?).and_return(true)
expect(described_class.new({}).expired?).to be_truthy
end
end
describe '#refresh!' do
it 'calls connection.refresh!' do
response = double(token: nil, expires_at: nil, expires_in: nil, refresh_token: nil)
expect_any_instance_of(OAuth2::AccessToken).to receive(:refresh!).and_return(response)
described_class.new({}).refresh!
end
end
end
...@@ -2,6 +2,7 @@ require 'spec_helper' ...@@ -2,6 +2,7 @@ require 'spec_helper'
describe Gitlab::BitbucketImport::ProjectCreator, lib: true do describe Gitlab::BitbucketImport::ProjectCreator, lib: true do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:repo) do let(:repo) do
double(name: 'Vim', double(name: 'Vim',
slug: 'vim', slug: 'vim',
...@@ -12,6 +13,7 @@ describe Gitlab::BitbucketImport::ProjectCreator, lib: true do ...@@ -12,6 +13,7 @@ describe Gitlab::BitbucketImport::ProjectCreator, lib: true do
visibility_level: Gitlab::VisibilityLevel::PRIVATE, visibility_level: Gitlab::VisibilityLevel::PRIVATE,
clone_url: 'ssh://git@bitbucket.org/asd/vim.git') clone_url: 'ssh://git@bitbucket.org/asd/vim.git')
end end
let(:namespace){ create(:group, owner: user) } let(:namespace){ create(:group, owner: user) }
let(:token) { "asdasd12345" } let(:token) { "asdasd12345" }
let(:secret) { "sekrettt" } let(:secret) { "sekrettt" }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment