added specs for the new octo_fetcher. Also had to refactor a bit to deal with hashes and arrays instead of objects
This commit is contained in:
parent
e494fc004e
commit
4fb674b68e
1
Gemfile
1
Gemfile
|
@ -12,6 +12,7 @@ end
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
gem "vcr"
|
gem "vcr"
|
||||||
|
gem "webmock"
|
||||||
gem "coveralls", "~>0.8", require: false
|
gem "coveralls", "~>0.8", require: false
|
||||||
gem "simplecov", "~>0.10", require: false
|
gem "simplecov", "~>0.10", require: false
|
||||||
gem "codeclimate-test-reporter", "~>0.4"
|
gem "codeclimate-test-reporter", "~>0.4"
|
||||||
|
|
|
@ -31,6 +31,8 @@ GEM
|
||||||
term-ansicolor (~> 1.3)
|
term-ansicolor (~> 1.3)
|
||||||
thor (~> 0.19.1)
|
thor (~> 0.19.1)
|
||||||
tins (~> 1.6.0)
|
tins (~> 1.6.0)
|
||||||
|
crack (0.4.3)
|
||||||
|
safe_yaml (~> 1.0.0)
|
||||||
descendants_tracker (0.0.4)
|
descendants_tracker (0.0.4)
|
||||||
thread_safe (~> 0.3, >= 0.3.1)
|
thread_safe (~> 0.3, >= 0.3.1)
|
||||||
diff-lcs (1.2.5)
|
diff-lcs (1.2.5)
|
||||||
|
@ -47,6 +49,7 @@ GEM
|
||||||
hashie (>= 3.4)
|
hashie (>= 3.4)
|
||||||
multi_json (>= 1.7.5, < 2.0)
|
multi_json (>= 1.7.5, < 2.0)
|
||||||
oauth2 (~> 1.0)
|
oauth2 (~> 1.0)
|
||||||
|
hashdiff (0.3.0)
|
||||||
hashie (3.4.6)
|
hashie (3.4.6)
|
||||||
i18n (0.7.0)
|
i18n (0.7.0)
|
||||||
iniparse (1.4.2)
|
iniparse (1.4.2)
|
||||||
|
@ -93,6 +96,7 @@ GEM
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (~> 1.0, >= 1.0.1)
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
||||||
ruby-progressbar (1.8.1)
|
ruby-progressbar (1.8.1)
|
||||||
|
safe_yaml (1.0.4)
|
||||||
sawyer (0.7.0)
|
sawyer (0.7.0)
|
||||||
addressable (>= 2.3.5, < 2.5)
|
addressable (>= 2.3.5, < 2.5)
|
||||||
faraday (~> 0.8, < 0.10)
|
faraday (~> 0.8, < 0.10)
|
||||||
|
@ -110,6 +114,10 @@ GEM
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
unicode-display_width (1.1.1)
|
unicode-display_width (1.1.1)
|
||||||
vcr (3.0.1)
|
vcr (3.0.1)
|
||||||
|
webmock (2.0.2)
|
||||||
|
addressable (>= 2.3.6)
|
||||||
|
crack (>= 0.3.2)
|
||||||
|
hashdiff
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
@ -126,6 +134,7 @@ DEPENDENCIES
|
||||||
rubocop (>= 0.43)
|
rubocop (>= 0.43)
|
||||||
simplecov (~> 0.10)
|
simplecov (~> 0.10)
|
||||||
vcr
|
vcr
|
||||||
|
webmock
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
1.13.1
|
1.13.1
|
||||||
|
|
|
@ -15,6 +15,8 @@ require_relative "github_changelog_generator/parser_file"
|
||||||
require_relative "github_changelog_generator/generator/generator"
|
require_relative "github_changelog_generator/generator/generator"
|
||||||
require_relative "github_changelog_generator/version"
|
require_relative "github_changelog_generator/version"
|
||||||
require_relative "github_changelog_generator/reader"
|
require_relative "github_changelog_generator/reader"
|
||||||
|
require_relative "github_changelog_generator/hash"
|
||||||
|
require_relative "github_changelog_generator/array"
|
||||||
|
|
||||||
# The main module, where placed all classes (now, at least)
|
# The main module, where placed all classes (now, at least)
|
||||||
module GitHubChangelogGenerator
|
module GitHubChangelogGenerator
|
||||||
|
|
13
lib/github_changelog_generator/array.rb
Normal file
13
lib/github_changelog_generator/array.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
class Array
|
||||||
|
def stringify_keys_deep!
|
||||||
|
new_ar = []
|
||||||
|
self.each do |value|
|
||||||
|
new_value = value
|
||||||
|
if value.is_a? Hash or value.is_a? Array
|
||||||
|
new_value = value.stringify_keys_deep!
|
||||||
|
end
|
||||||
|
new_ar << new_value
|
||||||
|
end
|
||||||
|
new_ar
|
||||||
|
end
|
||||||
|
end
|
|
@ -107,13 +107,13 @@ module GitHubChangelogGenerator
|
||||||
|
|
||||||
issues.each do |dict|
|
issues.each do |dict|
|
||||||
added = false
|
added = false
|
||||||
dict.labels.each do |label|
|
dict['labels'].each do |label|
|
||||||
if @options[:bug_labels].include? label.name
|
if @options[:bug_labels].include? label['name']
|
||||||
bugs_a.push dict
|
bugs_a.push dict
|
||||||
added = true
|
added = true
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
if @options[:enhancement_labels].include? label.name
|
if @options[:enhancement_labels].include? label['name']
|
||||||
enhancement_a.push dict
|
enhancement_a.push dict
|
||||||
added = true
|
added = true
|
||||||
next
|
next
|
||||||
|
@ -123,16 +123,16 @@ module GitHubChangelogGenerator
|
||||||
end
|
end
|
||||||
|
|
||||||
added_pull_requests = []
|
added_pull_requests = []
|
||||||
pull_requests.each do |dict|
|
pull_requests.each do |pr|
|
||||||
dict.labels.each do |label|
|
pr['labels'].each do |label|
|
||||||
if @options[:bug_labels].include? label.name
|
if @options[:bug_labels].include? label['name']
|
||||||
bugs_a.push dict
|
bugs_a.push pr
|
||||||
added_pull_requests.push dict
|
added_pull_requests.push pr
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
if @options[:enhancement_labels].include? label.name
|
if @options[:enhancement_labels].include? label['name']
|
||||||
enhancement_a.push dict
|
enhancement_a.push pr
|
||||||
added_pull_requests.push dict
|
added_pull_requests.push pr
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -166,9 +166,9 @@ module GitHubChangelogGenerator
|
||||||
# @param [Hash] issue Fetched issue from GitHub
|
# @param [Hash] issue Fetched issue from GitHub
|
||||||
# @return [String] Markdown-formatted single issue
|
# @return [String] Markdown-formatted single issue
|
||||||
def get_string_for_issue(issue)
|
def get_string_for_issue(issue)
|
||||||
encapsulated_title = encapsulate_string issue[:title]
|
encapsulated_title = encapsulate_string issue['title']
|
||||||
|
|
||||||
title_with_number = "#{encapsulated_title} [\\##{issue[:number]}](#{issue.html_url})"
|
title_with_number = "#{encapsulated_title} [\\##{issue['number']}](#{issue['html_url']})"
|
||||||
issue_line_with_user(title_with_number, issue)
|
issue_line_with_user(title_with_number, issue)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -177,13 +177,13 @@ module GitHubChangelogGenerator
|
||||||
def issue_line_with_user(line, issue)
|
def issue_line_with_user(line, issue)
|
||||||
return line if !@options[:author] || issue.pull_request.nil?
|
return line if !@options[:author] || issue.pull_request.nil?
|
||||||
|
|
||||||
user = issue.user
|
user = issue['user']
|
||||||
return "#{line} ({Null user})" unless user
|
return "#{line} ({Null user})" unless user
|
||||||
|
|
||||||
if @options[:usernames_as_github_logins]
|
if @options[:usernames_as_github_logins]
|
||||||
"#{line} (@#{user.login})"
|
"#{line} (@#{user['login']})"
|
||||||
else
|
else
|
||||||
"#{line} ([#{user.login}](#{user.html_url}))"
|
"#{line} ([#{user['login']}](#{user['html_url']}))"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,7 +8,7 @@ module GitHubChangelogGenerator
|
||||||
return issues if !@options[:exclude_labels] || @options[:exclude_labels].empty?
|
return issues if !@options[:exclude_labels] || @options[:exclude_labels].empty?
|
||||||
|
|
||||||
issues.reject do |issue|
|
issues.reject do |issue|
|
||||||
labels = issue.labels.map(&:name)
|
labels = issue['labels'].map{|l| l['name'] }
|
||||||
(labels & @options[:exclude_labels]).any?
|
(labels & @options[:exclude_labels]).any?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -123,7 +123,7 @@ module GitHubChangelogGenerator
|
||||||
def filter_wo_labels(issues)
|
def filter_wo_labels(issues)
|
||||||
if @options[:add_issues_wo_labels]
|
if @options[:add_issues_wo_labels]
|
||||||
issues_wo_labels = issues.select do |issue|
|
issues_wo_labels = issues.select do |issue|
|
||||||
!issue.labels.map(&:name).any?
|
!issue['labels'].map{|l| l['name'] }.any?
|
||||||
end
|
end
|
||||||
return issues_wo_labels
|
return issues_wo_labels
|
||||||
end
|
end
|
||||||
|
@ -135,7 +135,7 @@ module GitHubChangelogGenerator
|
||||||
issues
|
issues
|
||||||
else
|
else
|
||||||
issues.select do |issue|
|
issues.select do |issue|
|
||||||
labels = issue.labels.map(&:name) & @options[:include_labels]
|
labels = issue['labels'].map { |l| l['name'] } & @options[:include_labels]
|
||||||
labels.any?
|
labels.any?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -179,16 +179,16 @@ module GitHubChangelogGenerator
|
||||||
|
|
||||||
pull_requests.each do |pr|
|
pull_requests.each do |pr|
|
||||||
fetched_pr = closed_pull_requests.find do |fpr|
|
fetched_pr = closed_pull_requests.find do |fpr|
|
||||||
fpr.number == pr.number
|
fpr['number'] == pr['number']
|
||||||
end
|
end
|
||||||
if fetched_pr
|
if fetched_pr
|
||||||
pr[:merged_at] = fetched_pr[:merged_at]
|
pr['merged_at'] = fetched_pr['merged_at']
|
||||||
closed_pull_requests.delete(fetched_pr)
|
closed_pull_requests.delete(fetched_pr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
pull_requests.select! do |pr|
|
pull_requests.select! do |pr|
|
||||||
!pr[:merged_at].nil?
|
!pr['merged_at'].nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
pull_requests
|
pull_requests
|
||||||
|
|
15
lib/github_changelog_generator/hash.rb
Normal file
15
lib/github_changelog_generator/hash.rb
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
class Hash
|
||||||
|
def stringify_keys_deep!
|
||||||
|
new_hash = {}
|
||||||
|
keys.each do |k|
|
||||||
|
ks = k.respond_to?(:to_s) ? k.to_s : k
|
||||||
|
if values_at(k).first.kind_of? Hash or values_at(k).first.kind_of? Array
|
||||||
|
new_hash[ks] = values_at(k).first.send(:stringify_keys_deep!)
|
||||||
|
else
|
||||||
|
new_hash[ks] = values_at(k).first
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
new_hash
|
||||||
|
end
|
||||||
|
end
|
|
@ -50,7 +50,7 @@ module GitHubChangelogGenerator
|
||||||
|
|
||||||
# Fetch all tags from repo
|
# Fetch all tags from repo
|
||||||
#
|
#
|
||||||
# @return [Array] array of tags
|
# @return [Array <Hash>] array of tags
|
||||||
def get_all_tags
|
def get_all_tags
|
||||||
print "Fetching tags...\r" if @options[:verbose]
|
print "Fetching tags...\r" if @options[:verbose]
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ module GitHubChangelogGenerator
|
||||||
|
|
||||||
# Fill input array with tags
|
# Fill input array with tags
|
||||||
#
|
#
|
||||||
# @return [Array] array of tags in repo
|
# @return [Array <Hash>] array of tags in repo
|
||||||
def github_fetch_tags
|
def github_fetch_tags
|
||||||
tags = []
|
tags = []
|
||||||
page_i = 0
|
page_i = 0
|
||||||
|
@ -98,13 +98,15 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
|
||||||
else
|
else
|
||||||
Helper.log.info "Found #{tags.count} tags"
|
Helper.log.info "Found #{tags.count} tags"
|
||||||
end
|
end
|
||||||
|
# tags are a Sawyer::Resource. Convert to hash
|
||||||
|
tags = tags.map{|h| h.to_hash.stringify_keys_deep! }
|
||||||
tags
|
tags
|
||||||
end
|
end
|
||||||
|
|
||||||
# This method fetch all closed issues and separate them to pull requests and pure issues
|
# This method fetch all closed issues and separate them to pull requests and pure issues
|
||||||
# (pull request is kind of issue in term of GitHub)
|
# (pull request is kind of issue in term of GitHub)
|
||||||
#
|
#
|
||||||
# @return [Tuple] with (issues, pull-requests)
|
# @return [Tuple] with (issues [Array <Hash>], pull-requests [Array <Hash>])
|
||||||
def fetch_closed_issues_and_pr
|
def fetch_closed_issues_and_pr
|
||||||
print "Fetching closed issues...\r" if @options[:verbose]
|
print "Fetching closed issues...\r" if @options[:verbose]
|
||||||
issues = []
|
issues = []
|
||||||
|
@ -127,15 +129,17 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
|
||||||
print_empty_line
|
print_empty_line
|
||||||
Helper.log.info "Received issues: #{issues.count}"
|
Helper.log.info "Received issues: #{issues.count}"
|
||||||
|
|
||||||
|
issues = issues.map{|h| h.to_hash.stringify_keys_deep! }
|
||||||
|
|
||||||
# separate arrays of issues and pull requests:
|
# separate arrays of issues and pull requests:
|
||||||
issues.partition do |x|
|
issues.partition do |x|
|
||||||
x[:pull_request].nil?
|
x['pull_request'].nil?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Fetch all pull requests. We need them to detect :merged_at parameter
|
# Fetch all pull requests. We need them to detect :merged_at parameter
|
||||||
#
|
#
|
||||||
# @return [Array] all pull requests
|
# @return [Array <Hash>] all pull requests
|
||||||
def fetch_closed_pull_requests
|
def fetch_closed_pull_requests
|
||||||
pull_requests = []
|
pull_requests = []
|
||||||
options = { :state => 'closed' }
|
options = { :state => 'closed' }
|
||||||
|
@ -156,6 +160,7 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
|
||||||
print_empty_line
|
print_empty_line
|
||||||
|
|
||||||
Helper.log.info "Pull Request count: #{pull_requests.count}"
|
Helper.log.info "Pull Request count: #{pull_requests.count}"
|
||||||
|
pull_requests = pull_requests.map{|h| h.to_hash.stringify_keys_deep! }
|
||||||
pull_requests
|
pull_requests
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -174,6 +179,7 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
|
||||||
iterate_pages(@client, 'issue_events', issue['number'], {}) do |new_event|
|
iterate_pages(@client, 'issue_events', issue['number'], {}) do |new_event|
|
||||||
issue[:events].concat(new_event)
|
issue[:events].concat(new_event)
|
||||||
end
|
end
|
||||||
|
issue[:events] = issue[:events].map{|h| h.to_hash.stringify_keys_deep! }
|
||||||
print_in_same_line("Fetching events for issues and PR: #{i + 1}/#{issues.count}")
|
print_in_same_line("Fetching events for issues and PR: #{i + 1}/#{issues.count}")
|
||||||
i += 1
|
i += 1
|
||||||
end
|
end
|
||||||
|
@ -203,7 +209,8 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
|
||||||
# @return [Hash]
|
# @return [Hash]
|
||||||
def fetch_commit(event)
|
def fetch_commit(event)
|
||||||
check_github_response do
|
check_github_response do
|
||||||
@client.commit(user_project, event[:commit_id])
|
commit = @client.commit(user_project, event['commit_id'])
|
||||||
|
commit = commit.to_hash.stringify_keys_deep!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -250,10 +257,10 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
|
||||||
begin
|
begin
|
||||||
value = yield
|
value = yield
|
||||||
rescue Octokit::Unauthorized => e
|
rescue Octokit::Unauthorized => e
|
||||||
Helper.log.error e.body.red
|
Helper.log.error e.message.red
|
||||||
abort "Error: wrong GitHub token"
|
abort "Error: wrong GitHub token"
|
||||||
rescue Octokit::Forbidden => e
|
rescue Octokit::Forbidden => e
|
||||||
Helper.log.warn e.body.red
|
Helper.log.warn e.message.red
|
||||||
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
|
Helper.log.warn GH_RATE_LIMIT_EXCEEDED_MSG.yellow
|
||||||
end
|
end
|
||||||
value
|
value
|
||||||
|
|
|
@ -20,6 +20,7 @@ require "codeclimate-test-reporter"
|
||||||
require "simplecov"
|
require "simplecov"
|
||||||
require "coveralls"
|
require "coveralls"
|
||||||
require "vcr"
|
require "vcr"
|
||||||
|
require "webmock/rspec"
|
||||||
|
|
||||||
# This module is only used to check the environment is currently a testing env
|
# This module is only used to check the environment is currently a testing env
|
||||||
module SpecHelper
|
module SpecHelper
|
||||||
|
@ -40,8 +41,14 @@ VCR.configure do |c|
|
||||||
c.allow_http_connections_when_no_cassette = true
|
c.allow_http_connections_when_no_cassette = true
|
||||||
c.cassette_library_dir = 'spec/vcr'
|
c.cassette_library_dir = 'spec/vcr'
|
||||||
c.ignore_localhost = true
|
c.ignore_localhost = true
|
||||||
c.default_cassette_options = { :record => :new_episodes }
|
c.default_cassette_options = {
|
||||||
c.hook_into :faraday
|
:record => :new_episodes,
|
||||||
|
:serialize_with => :json,
|
||||||
|
:preserve_exact_body_bytes => true,
|
||||||
|
:decode_compressed_response => true,
|
||||||
|
}
|
||||||
|
|
||||||
|
c.hook_into :webmock, :faraday
|
||||||
end
|
end
|
||||||
|
|
||||||
RSpec.configure do |config|
|
RSpec.configure do |config|
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
module GitHubChangelogGenerator
|
module GitHubChangelogGenerator
|
||||||
describe Generator do
|
describe Generator do
|
||||||
context "#exclude_issues_by_labels" do
|
context "#exclude_issues_by_labels" do
|
||||||
let(:label) { double("the-bad-label", name: "BAD") }
|
let(:label) { { 'name' => "BAD" } }
|
||||||
let(:issue) { double("the-issue-to-be-excluded", labels: [label]) }
|
let(:issue) { { 'labels' => [label] } }
|
||||||
let(:good_label) { double("a-good-label", name: "GOOD") }
|
let(:good_label) { { 'name' => "GOOD" } }
|
||||||
let(:good_issue) { double("an-issue-to-be-kept", labels: [good_label]) }
|
let(:good_issue) { { 'labels' => [good_label] } }
|
||||||
let(:issues) { [issue, good_issue] }
|
let(:issues) { [issue, good_issue] }
|
||||||
subject(:generator) { described_class.new(exclude_labels: %w(BAD BOO)) }
|
subject(:generator) { described_class.new(exclude_labels: %w(BAD BOO)) }
|
||||||
|
|
||||||
|
|
250
spec/unit/octo_fetcher_spec.rb
Normal file
250
spec/unit/octo_fetcher_spec.rb
Normal file
|
@ -0,0 +1,250 @@
|
||||||
|
VALID_TOKEN = "0123456789abcdef"
|
||||||
|
INVALID_TOKEN = "0000000000000000"
|
||||||
|
|
||||||
|
describe GitHubChangelogGenerator::OctoFetcher do
|
||||||
|
let(:options) do
|
||||||
|
{
|
||||||
|
:user => "skywinder",
|
||||||
|
:project => "changelog_test",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:fetcher) { GitHubChangelogGenerator::OctoFetcher.new(options) }
|
||||||
|
|
||||||
|
|
||||||
|
describe "#fetch_github_token" do
|
||||||
|
token = GitHubChangelogGenerator::OctoFetcher::CHANGELOG_GITHUB_TOKEN
|
||||||
|
context "when token in ENV exist" do
|
||||||
|
before { stub_const("ENV", ENV.to_hash.merge(token => VALID_TOKEN)) }
|
||||||
|
subject { fetcher.send(:fetch_github_token) }
|
||||||
|
it { is_expected.to eq(VALID_TOKEN) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when token in ENV is nil" do
|
||||||
|
before { stub_const("ENV", ENV.to_hash.merge(token => nil)) }
|
||||||
|
subject { fetcher.send(:fetch_github_token) }
|
||||||
|
it { is_expected.to be_nil }
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when token in options and ENV is nil" do
|
||||||
|
let(:options) { { :token => VALID_TOKEN } }
|
||||||
|
|
||||||
|
before do
|
||||||
|
stub_const("ENV", ENV.to_hash.merge(token => nil))
|
||||||
|
end
|
||||||
|
|
||||||
|
subject { fetcher.send(:fetch_github_token) }
|
||||||
|
it { is_expected.to eq(VALID_TOKEN) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when token in options and ENV specified" do
|
||||||
|
let(:options) { { :token => VALID_TOKEN } }
|
||||||
|
|
||||||
|
before do
|
||||||
|
stub_const("ENV", ENV.to_hash.merge(token => "no_matter_what"))
|
||||||
|
end
|
||||||
|
|
||||||
|
subject { fetcher.send(:fetch_github_token) }
|
||||||
|
it { is_expected.to eq(VALID_TOKEN) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#get_all_tags" do
|
||||||
|
context "when github_fetch_tags returns tags" do
|
||||||
|
it "returns tags" do
|
||||||
|
mock_tags = ['tag']
|
||||||
|
allow(fetcher).to receive(:github_fetch_tags).and_return(mock_tags)
|
||||||
|
expect(fetcher.get_all_tags).to eq(mock_tags)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#github_fetch_tags" do
|
||||||
|
context "when wrong token provided" do
|
||||||
|
use_vcr_cassette
|
||||||
|
|
||||||
|
let(:options) do
|
||||||
|
{
|
||||||
|
:user => "skywinder",
|
||||||
|
:project => "changelog_test",
|
||||||
|
:token => INVALID_TOKEN
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should raise Unauthorized error" do
|
||||||
|
expect { fetcher.github_fetch_tags }.to raise_error SystemExit, "Error: wrong GitHub token"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when API call is valid" do
|
||||||
|
use_vcr_cassette
|
||||||
|
|
||||||
|
it "should return tags" do
|
||||||
|
expected_tags = [{"name"=>"v0.0.3", "zipball_url"=>"https://api.github.com/repos/skywinder/changelog_test/zipball/v0.0.3", "tarball_url"=>"https://api.github.com/repos/skywinder/changelog_test/tarball/v0.0.3", "commit"=>{"sha"=>"a0cba2b1a1ea9011ab07ee1ac140ba5a5eb8bd90", "url"=>"https://api.github.com/repos/skywinder/changelog_test/commits/a0cba2b1a1ea9011ab07ee1ac140ba5a5eb8bd90"}}, {"name"=>"v0.0.2", "zipball_url"=>"https://api.github.com/repos/skywinder/changelog_test/zipball/v0.0.2", "tarball_url"=>"https://api.github.com/repos/skywinder/changelog_test/tarball/v0.0.2", "commit"=>{"sha"=>"9b35bb13dcd15b68e7bcbf10cde5eb937a54f710", "url"=>"https://api.github.com/repos/skywinder/changelog_test/commits/9b35bb13dcd15b68e7bcbf10cde5eb937a54f710"}}, {"name"=>"v0.0.1", "zipball_url"=>"https://api.github.com/repos/skywinder/changelog_test/zipball/v0.0.1", "tarball_url"=>"https://api.github.com/repos/skywinder/changelog_test/tarball/v0.0.1", "commit"=>{"sha"=>"4c2d6d1ed58bdb24b870dcb5d9f2ceed0283d69d", "url"=>"https://api.github.com/repos/skywinder/changelog_test/commits/4c2d6d1ed58bdb24b870dcb5d9f2ceed0283d69d"}}, {"name"=>"0.0.4", "zipball_url"=>"https://api.github.com/repos/skywinder/changelog_test/zipball/0.0.4", "tarball_url"=>"https://api.github.com/repos/skywinder/changelog_test/tarball/0.0.4", "commit"=>{"sha"=>"ece0c3ab7142b21064b885061c55ede00ef6ce94", "url"=>"https://api.github.com/repos/skywinder/changelog_test/commits/ece0c3ab7142b21064b885061c55ede00ef6ce94"}}]
|
||||||
|
|
||||||
|
expect(fetcher.github_fetch_tags).to eq(expected_tags)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should return tags count" do
|
||||||
|
tags = fetcher.github_fetch_tags
|
||||||
|
expect(tags.size).to eq(4)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe "#fetch_closed_issues_and_pr" do
|
||||||
|
context "when API call is valid" do
|
||||||
|
use_vcr_cassette
|
||||||
|
|
||||||
|
|
||||||
|
it "returns issues" do
|
||||||
|
issues, pull_requests = fetcher.fetch_closed_issues_and_pr
|
||||||
|
expect(issues.size).to eq(7)
|
||||||
|
expect(pull_requests.size).to eq(14)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns issue with proper key/values" do
|
||||||
|
issues, pull_requests = fetcher.fetch_closed_issues_and_pr
|
||||||
|
expected_issue = {"url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/14", "repository_url"=>"https://api.github.com/repos/skywinder/changelog_test", "labels_url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/14/labels{/name}", "comments_url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/14/comments", "events_url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/14/events", "html_url"=>"https://github.com/skywinder/changelog_test/issues/14", "id"=>95419412, "number"=>14, "title"=>"Issue closed from commit from PR", "user"=>{"login"=>"skywinder", "id"=>3356474, "avatar_url"=>"https://avatars.githubusercontent.com/u/3356474?v=3", "gravatar_id"=>"", "url"=>"https://api.github.com/users/skywinder", "html_url"=>"https://github.com/skywinder", "followers_url"=>"https://api.github.com/users/skywinder/followers", "following_url"=>"https://api.github.com/users/skywinder/following{/other_user}", "gists_url"=>"https://api.github.com/users/skywinder/gists{/gist_id}", "starred_url"=>"https://api.github.com/users/skywinder/starred{/owner}{/repo}", "subscriptions_url"=>"https://api.github.com/users/skywinder/subscriptions", "organizations_url"=>"https://api.github.com/users/skywinder/orgs", "repos_url"=>"https://api.github.com/users/skywinder/repos", "events_url"=>"https://api.github.com/users/skywinder/events{/privacy}", "received_events_url"=>"https://api.github.com/users/skywinder/received_events", "type"=>"User", "site_admin"=>false}, "labels"=>[], "state"=>"closed", "locked"=>false, "assignee"=>nil, "milestone"=>nil, "comments"=>0, "created_at"=>"2015-07-16T12:06:08Z", "updated_at"=>"2015-07-16T12:21:42Z", "closed_at"=>"2015-07-16T12:21:42Z", "body"=>""}
|
||||||
|
# Convert times to Time
|
||||||
|
expected_issue.each_pair do |k,v|
|
||||||
|
if v =~ /^2015-/
|
||||||
|
expected_issue[k] = Time.parse(v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(issues.first).to eq(expected_issue)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns pull request with proper key/values" do
|
||||||
|
issues, pull_requests = fetcher.fetch_closed_issues_and_pr
|
||||||
|
expected_pr = {"url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/21", "repository_url"=>"https://api.github.com/repos/skywinder/changelog_test", "labels_url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/21/labels{/name}", "comments_url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/21/comments", "events_url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/21/events", "html_url"=>"https://github.com/skywinder/changelog_test/pull/21", "id"=>124925759, "number"=>21, "title"=>"Merged br (should appear in change log with #20)", "user"=>{"login"=>"skywinder", "id"=>3356474, "avatar_url"=>"https://avatars.githubusercontent.com/u/3356474?v=3", "gravatar_id"=>"", "url"=>"https://api.github.com/users/skywinder", "html_url"=>"https://github.com/skywinder", "followers_url"=>"https://api.github.com/users/skywinder/followers", "following_url"=>"https://api.github.com/users/skywinder/following{/other_user}", "gists_url"=>"https://api.github.com/users/skywinder/gists{/gist_id}", "starred_url"=>"https://api.github.com/users/skywinder/starred{/owner}{/repo}", "subscriptions_url"=>"https://api.github.com/users/skywinder/subscriptions", "organizations_url"=>"https://api.github.com/users/skywinder/orgs", "repos_url"=>"https://api.github.com/users/skywinder/repos", "events_url"=>"https://api.github.com/users/skywinder/events{/privacy}", "received_events_url"=>"https://api.github.com/users/skywinder/received_events", "type"=>"User", "site_admin"=>false}, "labels"=>[], "state"=>"closed", "locked"=>false, "assignee"=>nil, "milestone"=>nil, "comments"=>0, "created_at"=>"2016-01-05T09:24:08Z", "updated_at"=>"2016-01-05T09:26:53Z", "closed_at"=>"2016-01-05T09:24:27Z", "pull_request"=>{"url"=>"https://api.github.com/repos/skywinder/changelog_test/pulls/21", "html_url"=>"https://github.com/skywinder/changelog_test/pull/21", "diff_url"=>"https://github.com/skywinder/changelog_test/pull/21.diff", "patch_url"=>"https://github.com/skywinder/changelog_test/pull/21.patch"}, "body"=>"to test https://github.com/skywinder/github-changelog-generator/pull/305\r\nshould appear in change log with #20"}
|
||||||
|
# Convert times to Time
|
||||||
|
expected_pr.each_pair do |k,v|
|
||||||
|
if v =~ /^2016-01/
|
||||||
|
expected_pr[k] = Time.parse(v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(pull_requests.first).to eq(expected_pr)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
it "returns issues with labels" do
|
||||||
|
issues, pull_requests = fetcher.fetch_closed_issues_and_pr
|
||||||
|
expected = [[], [], ["Bug"], [], ["enhancement"], ["some label"], []]
|
||||||
|
expect(issues.map{|i| i['labels'].map{|l| l['name']} }).to eq(expected)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns pull_requests with labels" do
|
||||||
|
issues, pull_requests = fetcher.fetch_closed_issues_and_pr
|
||||||
|
expected = [[], [], [], [], [], ["enhancement"], [], [], ["invalid"], [], [], [], [], ["invalid"]]
|
||||||
|
expect(pull_requests.map{|i| i['labels'].map{|l| l['name']} }).to eq(expected)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#fetch_closed_pull_requests" do
|
||||||
|
context "when API call is valid" do
|
||||||
|
use_vcr_cassette
|
||||||
|
|
||||||
|
it "returns pull requests" do
|
||||||
|
pull_requests = fetcher.fetch_closed_pull_requests
|
||||||
|
expect(pull_requests.size).to eq(14)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns correct pull request keys" do
|
||||||
|
pull_requests = fetcher.fetch_closed_pull_requests
|
||||||
|
|
||||||
|
pr = pull_requests.first
|
||||||
|
expect(pr.keys).to eq(["url", "id", "html_url", "diff_url", "patch_url", "issue_url", "number", "state", "locked", "title", "user", "body", "created_at", "updated_at", "closed_at", "merged_at", "merge_commit_sha", "assignee", "milestone", "commits_url", "review_comments_url", "review_comment_url", "comments_url", "statuses_url", "head", "base", "_links"])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe "#fetch_events_async" do
|
||||||
|
context "when API call is valid" do
|
||||||
|
use_vcr_cassette
|
||||||
|
|
||||||
|
it "populates issues" do
|
||||||
|
issues = [{"url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/14", "repository_url"=>"https://api.github.com/repos/skywinder/changelog_test", "labels_url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/14/labels{/name}", "comments_url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/14/comments", "events_url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/14/events", "html_url"=>"https://github.com/skywinder/changelog_test/issues/14", "id"=>95419412, "number"=>14, "title"=>"Issue closed from commit from PR", "user"=>{"login"=>"skywinder", "id"=>3356474, "avatar_url"=>"https://avatars.githubusercontent.com/u/3356474?v=3", "gravatar_id"=>"", "url"=>"https://api.github.com/users/skywinder", "html_url"=>"https://github.com/skywinder", "followers_url"=>"https://api.github.com/users/skywinder/followers", "following_url"=>"https://api.github.com/users/skywinder/following{/other_user}", "gists_url"=>"https://api.github.com/users/skywinder/gists{/gist_id}", "starred_url"=>"https://api.github.com/users/skywinder/starred{/owner}{/repo}", "subscriptions_url"=>"https://api.github.com/users/skywinder/subscriptions", "organizations_url"=>"https://api.github.com/users/skywinder/orgs", "repos_url"=>"https://api.github.com/users/skywinder/repos", "events_url"=>"https://api.github.com/users/skywinder/events{/privacy}", "received_events_url"=>"https://api.github.com/users/skywinder/received_events", "type"=>"User", "site_admin"=>false}, "labels"=>[], "state"=>"closed", "locked"=>false, "assignee"=>nil, "milestone"=>nil, "comments"=>0, "created_at"=>"2015-07-16T12:06:08Z", "updated_at"=>"2015-07-16T12:21:42Z", "closed_at"=>"2015-07-16T12:21:42Z", "body"=>""}]
|
||||||
|
|
||||||
|
# Check that they are blank to begin with
|
||||||
|
expect(issues.first[:events]).to be_nil
|
||||||
|
|
||||||
|
fetcher.fetch_events_async(issues)
|
||||||
|
issue_events = issues.first[:events]
|
||||||
|
|
||||||
|
expected_events = [{"id"=>357462189, "url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/events/357462189", "actor"=>{"login"=>"skywinder", "id"=>3356474, "avatar_url"=>"https://avatars.githubusercontent.com/u/3356474?v=3", "gravatar_id"=>"", "url"=>"https://api.github.com/users/skywinder", "html_url"=>"https://github.com/skywinder", "followers_url"=>"https://api.github.com/users/skywinder/followers", "following_url"=>"https://api.github.com/users/skywinder/following{/other_user}", "gists_url"=>"https://api.github.com/users/skywinder/gists{/gist_id}", "starred_url"=>"https://api.github.com/users/skywinder/starred{/owner}{/repo}", "subscriptions_url"=>"https://api.github.com/users/skywinder/subscriptions", "organizations_url"=>"https://api.github.com/users/skywinder/orgs", "repos_url"=>"https://api.github.com/users/skywinder/repos", "events_url"=>"https://api.github.com/users/skywinder/events{/privacy}", "received_events_url"=>"https://api.github.com/users/skywinder/received_events", "type"=>"User", "site_admin"=>false}, "event"=>"referenced", "commit_id"=>"decfe840d1a1b86e0c28700de5362d3365a29555", "commit_url"=>"https://api.github.com/repos/skywinder/changelog_test/commits/decfe840d1a1b86e0c28700de5362d3365a29555", "created_at"=>"2015-07-16T12:21:16Z"}, {"id"=>357462542, "url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/events/357462542", "actor"=>{"login"=>"skywinder", "id"=>3356474, "avatar_url"=>"https://avatars.githubusercontent.com/u/3356474?v=3", "gravatar_id"=>"", "url"=>"https://api.github.com/users/skywinder", "html_url"=>"https://github.com/skywinder", "followers_url"=>"https://api.github.com/users/skywinder/followers", "following_url"=>"https://api.github.com/users/skywinder/following{/other_user}", "gists_url"=>"https://api.github.com/users/skywinder/gists{/gist_id}", "starred_url"=>"https://api.github.com/users/skywinder/starred{/owner}{/repo}", "subscriptions_url"=>"https://api.github.com/users/skywinder/subscriptions", "organizations_url"=>"https://api.github.com/users/skywinder/orgs", "repos_url"=>"https://api.github.com/users/skywinder/repos", "events_url"=>"https://api.github.com/users/skywinder/events{/privacy}", "received_events_url"=>"https://api.github.com/users/skywinder/received_events", "type"=>"User", "site_admin"=>false}, "event"=>"closed", "commit_id"=>"decfe840d1a1b86e0c28700de5362d3365a29555", "commit_url"=>"https://api.github.com/repos/skywinder/changelog_test/commits/decfe840d1a1b86e0c28700de5362d3365a29555", "created_at"=>"2015-07-16T12:21:42Z"}]
|
||||||
|
|
||||||
|
# Convert times to Time
|
||||||
|
expected_events.map! do |event|
|
||||||
|
event.each_pair do |k, v|
|
||||||
|
if v =~ /^201[56]-/
|
||||||
|
event[k] = Time.parse(v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(issue_events).to eq(expected_events)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe "#fetch_date_of_tag" do
|
||||||
|
context "when API call is valid" do
|
||||||
|
use_vcr_cassette
|
||||||
|
|
||||||
|
it "returns date" do
|
||||||
|
tag = {"name"=>"v0.0.3", "zipball_url"=>"https://api.github.com/repos/skywinder/changelog_test/zipball/v0.0.3", "tarball_url"=>"https://api.github.com/repos/skywinder/changelog_test/tarball/v0.0.3", "commit"=>{"sha"=>"a0cba2b1a1ea9011ab07ee1ac140ba5a5eb8bd90", "url"=>"https://api.github.com/repos/skywinder/changelog_test/commits/a0cba2b1a1ea9011ab07ee1ac140ba5a5eb8bd90"}}
|
||||||
|
dt = fetcher.fetch_date_of_tag(tag)
|
||||||
|
expect(dt).to eq(Time.parse("2015-03-04 19:01:48 UTC"))
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe "#fetch_commit" do
|
||||||
|
context "when API call is valid" do
|
||||||
|
use_vcr_cassette
|
||||||
|
|
||||||
|
it "returns commit" do
|
||||||
|
event = {"id"=>357462189, "url"=>"https://api.github.com/repos/skywinder/changelog_test/issues/events/357462189", "actor"=>{"login"=>"skywinder", "id"=>3356474, "avatar_url"=>"https://avatars.githubusercontent.com/u/3356474?v=3", "gravatar_id"=>"", "url"=>"https://api.github.com/users/skywinder", "html_url"=>"https://github.com/skywinder", "followers_url"=>"https://api.github.com/users/skywinder/followers", "following_url"=>"https://api.github.com/users/skywinder/following{/other_user}", "gists_url"=>"https://api.github.com/users/skywinder/gists{/gist_id}", "starred_url"=>"https://api.github.com/users/skywinder/starred{/owner}{/repo}", "subscriptions_url"=>"https://api.github.com/users/skywinder/subscriptions", "organizations_url"=>"https://api.github.com/users/skywinder/orgs", "repos_url"=>"https://api.github.com/users/skywinder/repos", "events_url"=>"https://api.github.com/users/skywinder/events{/privacy}", "received_events_url"=>"https://api.github.com/users/skywinder/received_events", "type"=>"User", "site_admin"=>false}, "event"=>"referenced", "commit_id"=>"decfe840d1a1b86e0c28700de5362d3365a29555", "commit_url"=>"https://api.github.com/repos/skywinder/changelog_test/commits/decfe840d1a1b86e0c28700de5362d3365a29555", "created_at"=>"2015-07-16T12:21:16Z"}
|
||||||
|
commit = fetcher.fetch_commit(event)
|
||||||
|
|
||||||
|
expectations = [
|
||||||
|
["sha", "decfe840d1a1b86e0c28700de5362d3365a29555"],
|
||||||
|
["url",
|
||||||
|
"https://api.github.com/repos/skywinder/changelog_test/commits/decfe840d1a1b86e0c28700de5362d3365a29555"],
|
||||||
|
# OLD API: "https://api.github.com/repos/skywinder/changelog_test/git/commits/decfe840d1a1b86e0c28700de5362d3365a29555"],
|
||||||
|
["html_url",
|
||||||
|
"https://github.com/skywinder/changelog_test/commit/decfe840d1a1b86e0c28700de5362d3365a29555"],
|
||||||
|
["author",
|
||||||
|
{"login"=>"skywinder", "id"=>3356474, "avatar_url"=>"https://avatars.githubusercontent.com/u/3356474?v=3", "gravatar_id"=>"", "url"=>"https://api.github.com/users/skywinder", "html_url"=>"https://github.com/skywinder", "followers_url"=>"https://api.github.com/users/skywinder/followers", "following_url"=>"https://api.github.com/users/skywinder/following{/other_user}", "gists_url"=>"https://api.github.com/users/skywinder/gists{/gist_id}", "starred_url"=>"https://api.github.com/users/skywinder/starred{/owner}{/repo}", "subscriptions_url"=>"https://api.github.com/users/skywinder/subscriptions", "organizations_url"=>"https://api.github.com/users/skywinder/orgs", "repos_url"=>"https://api.github.com/users/skywinder/repos", "events_url"=>"https://api.github.com/users/skywinder/events{/privacy}", "received_events_url"=>"https://api.github.com/users/skywinder/received_events", "type"=>"User", "site_admin"=>false}],
|
||||||
|
["committer",
|
||||||
|
{"login"=>"skywinder", "id"=>3356474, "avatar_url"=>"https://avatars.githubusercontent.com/u/3356474?v=3", "gravatar_id"=>"", "url"=>"https://api.github.com/users/skywinder", "html_url"=>"https://github.com/skywinder", "followers_url"=>"https://api.github.com/users/skywinder/followers", "following_url"=>"https://api.github.com/users/skywinder/following{/other_user}", "gists_url"=>"https://api.github.com/users/skywinder/gists{/gist_id}", "starred_url"=>"https://api.github.com/users/skywinder/starred{/owner}{/repo}", "subscriptions_url"=>"https://api.github.com/users/skywinder/subscriptions", "organizations_url"=>"https://api.github.com/users/skywinder/orgs", "repos_url"=>"https://api.github.com/users/skywinder/repos", "events_url"=>"https://api.github.com/users/skywinder/events{/privacy}", "received_events_url"=>"https://api.github.com/users/skywinder/received_events", "type"=>"User", "site_admin"=>false}],
|
||||||
|
["parents",
|
||||||
|
[{"sha"=>"7ec095e5e3caceacedabf44d0b9b10da17c92e51",
|
||||||
|
"url"=>
|
||||||
|
"https://api.github.com/repos/skywinder/changelog_test/commits/7ec095e5e3caceacedabf44d0b9b10da17c92e51",
|
||||||
|
# OLD API: "https://api.github.com/repos/skywinder/changelog_test/git/commits/7ec095e5e3caceacedabf44d0b9b10da17c92e51",
|
||||||
|
"html_url"=>
|
||||||
|
"https://github.com/skywinder/changelog_test/commit/7ec095e5e3caceacedabf44d0b9b10da17c92e51"}]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
expectations.each do |property, val|
|
||||||
|
expect(commit[property]).to eq(val)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
{"http_interactions":[{"request":{"method":"get","uri":"https://api.github.com/repos/skywinder/changelog_test/git/commits/decfe840d1a1b86e0c28700de5362d3365a29555","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept":["application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1"],"Accept-Charset":["utf-8"],"User-Agent":["Github API Ruby Gem 0.13.1"]}},"response":{"status":{"code":200,"message":null},"headers":{"server":["GitHub.com"],"date":["Fri, 20 May 2016 06:39:17 GMT"],"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"status":["200 OK"],"x-ratelimit-limit":["60"],"x-ratelimit-remaining":["53"],"x-ratelimit-reset":["1463728508"],"cache-control":["public, max-age=60, s-maxage=60"],"vary":["Accept, Accept-Encoding"],"etag":["W/\"391047306d50dcb964a83bc94e45c33d\""],"last-modified":["Thu, 16 Jul 2015 12:11:01 GMT"],"x-github-media-type":["github.v3; format=json"],"access-control-expose-headers":["ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"],"access-control-allow-origin":["*"],"content-security-policy":["default-src 'none'"],"strict-transport-security":["max-age=31536000; includeSubdomains; preload"],"x-content-type-options":["nosniff"],"x-frame-options":["deny"],"x-xss-protection":["1; mode=block"],"x-served-by":["5aeb3f30c9e3ef6ef7bcbcddfd9a68f7"],"x-github-request-id":["6C2F0F69:1C0C4:9CDAEAF:573EB115"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJzaGEiOiJkZWNmZTg0MGQxYTFiODZlMGMyODcwMGRlNTM2MmQzMzY1YTI5\nNTU1IiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9za3l3\naW5kZXIvY2hhbmdlbG9nX3Rlc3QvZ2l0L2NvbW1pdHMvZGVjZmU4NDBkMWEx\nYjg2ZTBjMjg3MDBkZTUzNjJkMzM2NWEyOTU1NSIsImh0bWxfdXJsIjoiaHR0\ncHM6Ly9naXRodWIuY29tL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC9jb21t\naXQvZGVjZmU4NDBkMWExYjg2ZTBjMjg3MDBkZTUzNjJkMzM2NWEyOTU1NSIs\nImF1dGhvciI6eyJuYW1lIjoiUGV0ciBLb3JvbGV2IiwiZW1haWwiOiJza3k0\nd2luZGVyQGdtYWlsLmNvbSIsImRhdGUiOiIyMDE1LTA3LTE2VDEyOjExOjAx\nWiJ9LCJjb21taXR0ZXIiOnsibmFtZSI6IlBldHIgS29yb2xldiIsImVtYWls\nIjoic2t5NHdpbmRlckBnbWFpbC5jb20iLCJkYXRlIjoiMjAxNS0wNy0xNlQx\nMjoxMTowMVoifSwidHJlZSI6eyJzaGEiOiIwNjk5YzE1MjU4YTdjMmIyZTE1\nNzA1MWZlMTk4NTFkNGY3MDVjYWM4IiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0\naHViLmNvbS9yZXBvcy9za3l3aW5kZXIvY2hhbmdlbG9nX3Rlc3QvZ2l0L3Ry\nZWVzLzA2OTljMTUyNThhN2MyYjJlMTU3MDUxZmUxOTg1MWQ0ZjcwNWNhYzgi\nfSwibWVzc2FnZSI6ImZpeCAjMTQiLCJwYXJlbnRzIjpbeyJzaGEiOiI3ZWMw\nOTVlNWUzY2FjZWFjZWRhYmY0NGQwYjliMTBkYTE3YzkyZTUxIiwidXJsIjoi\naHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9za3l3aW5kZXIvY2hhbmdl\nbG9nX3Rlc3QvZ2l0L2NvbW1pdHMvN2VjMDk1ZTVlM2NhY2VhY2VkYWJmNDRk\nMGI5YjEwZGExN2M5MmU1MSIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIu\nY29tL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC9jb21taXQvN2VjMDk1ZTVl\nM2NhY2VhY2VkYWJmNDRkMGI5YjEwZGExN2M5MmU1MSJ9XX0=\n"},"http_version":null},"recorded_at":"Fri, 20 May 2016 06:39:21 GMT"}],"recorded_with":"VCR 3.0.1"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"http_interactions":[{"request":{"method":"get","uri":"https://api.github.com/repos/skywinder/changelog_test/git/commits/a0cba2b1a1ea9011ab07ee1ac140ba5a5eb8bd90","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept":["application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1"],"Accept-Charset":["utf-8"],"User-Agent":["Github API Ruby Gem 0.13.1"]}},"response":{"status":{"code":200,"message":null},"headers":{"server":["GitHub.com"],"date":["Fri, 20 May 2016 06:39:16 GMT"],"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"status":["200 OK"],"x-ratelimit-limit":["60"],"x-ratelimit-remaining":["56"],"x-ratelimit-reset":["1463728508"],"cache-control":["public, max-age=60, s-maxage=60"],"vary":["Accept, Accept-Encoding"],"etag":["W/\"70e24649f6eca2e822b32129a2e73312\""],"last-modified":["Wed, 04 Mar 2015 19:01:48 GMT"],"x-github-media-type":["github.v3; format=json"],"access-control-expose-headers":["ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"],"access-control-allow-origin":["*"],"content-security-policy":["default-src 'none'"],"strict-transport-security":["max-age=31536000; includeSubdomains; preload"],"x-content-type-options":["nosniff"],"x-frame-options":["deny"],"x-xss-protection":["1; mode=block"],"x-served-by":["a7f8a126c9ed3f1c4715a34c0ddc7290"],"x-github-request-id":["6C2F0F69:1C0C6:A88FCCF:573EB114"]},"body":{"encoding":"ASCII-8BIT","base64_string":"eyJzaGEiOiJhMGNiYTJiMWExZWE5MDExYWIwN2VlMWFjMTQwYmE1YTVlYjhi\nZDkwIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9za3l3\naW5kZXIvY2hhbmdlbG9nX3Rlc3QvZ2l0L2NvbW1pdHMvYTBjYmEyYjFhMWVh\nOTAxMWFiMDdlZTFhYzE0MGJhNWE1ZWI4YmQ5MCIsImh0bWxfdXJsIjoiaHR0\ncHM6Ly9naXRodWIuY29tL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC9jb21t\naXQvYTBjYmEyYjFhMWVhOTAxMWFiMDdlZTFhYzE0MGJhNWE1ZWI4YmQ5MCIs\nImF1dGhvciI6eyJuYW1lIjoiUGV0ciBLb3JvbGV2IiwiZW1haWwiOiJza3k0\nd2luZGVyQGdtYWlsLmNvbSIsImRhdGUiOiIyMDE1LTAzLTA0VDE5OjAxOjQ4\nWiJ9LCJjb21taXR0ZXIiOnsibmFtZSI6IlBldHIgS29yb2xldiIsImVtYWls\nIjoic2t5NHdpbmRlckBnbWFpbC5jb20iLCJkYXRlIjoiMjAxNS0wMy0wNFQx\nOTowMTo0OFoifSwidHJlZSI6eyJzaGEiOiIxZmYyNzZkZjJkY2Q1OGQ5MGEx\nMjY3ZmYyMTljZWQ5MjNhY2MzZGE4IiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0\naHViLmNvbS9yZXBvcy9za3l3aW5kZXIvY2hhbmdlbG9nX3Rlc3QvZ2l0L3Ry\nZWVzLzFmZjI3NmRmMmRjZDU4ZDkwYTEyNjdmZjIxOWNlZDkyM2FjYzNkYTgi\nfSwibWVzc2FnZSI6Ik1lcmdlIGJyYW5jaCAnaG90Zml4L2ZpeC0zJyIsInBh\ncmVudHMiOlt7InNoYSI6IjZhMjhmNjRiYmU3ODNkN2FjMTcxYzM4Y2VmY2Ix\nMDllMWI4ZTA5MTEiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3Jl\ncG9zL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC9naXQvY29tbWl0cy82YTI4\nZjY0YmJlNzgzZDdhYzE3MWMzOGNlZmNiMTA5ZTFiOGUwOTExIiwiaHRtbF91\ncmwiOiJodHRwczovL2dpdGh1Yi5jb20vc2t5d2luZGVyL2NoYW5nZWxvZ190\nZXN0L2NvbW1pdC82YTI4ZjY0YmJlNzgzZDdhYzE3MWMzOGNlZmNiMTA5ZTFi\nOGUwOTExIn0seyJzaGEiOiI2ODQ0NWY1ZDJiZDhkZjYxMmUyNWIzNzA1OGFl\nYTdmMTIzNDM5ZmExIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9y\nZXBvcy9za3l3aW5kZXIvY2hhbmdlbG9nX3Rlc3QvZ2l0L2NvbW1pdHMvNjg0\nNDVmNWQyYmQ4ZGY2MTJlMjViMzcwNThhZWE3ZjEyMzQzOWZhMSIsImh0bWxf\ndXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3NreXdpbmRlci9jaGFuZ2Vsb2df\ndGVzdC9jb21taXQvNjg0NDVmNWQyYmQ4ZGY2MTJlMjViMzcwNThhZWE3ZjEy\nMzQzOWZhMSJ9XX0=\n"},"http_version":null},"recorded_at":"Fri, 20 May 2016 06:39:20 GMT"}],"recorded_with":"VCR 3.0.1"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"http_interactions":[{"request":{"method":"get","uri":"https://api.github.com/repos/skywinder/changelog_test/issues/14/events","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept":["application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1"],"Accept-Charset":["utf-8"],"User-Agent":["Github API Ruby Gem 0.13.1"]}},"response":{"status":{"code":200,"message":null},"headers":{"server":["GitHub.com"],"date":["Fri, 20 May 2016 06:39:18 GMT"],"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"status":["200 OK"],"x-ratelimit-limit":["60"],"x-ratelimit-remaining":["51"],"x-ratelimit-reset":["1463728508"],"cache-control":["public, max-age=60, s-maxage=60"],"vary":["Accept, Accept-Encoding"],"etag":["W/\"9e001bcf4bf22abb6602f57d114ce205\""],"x-github-media-type":["github.v3; format=json"],"access-control-expose-headers":["ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"],"access-control-allow-origin":["*"],"content-security-policy":["default-src 'none'"],"strict-transport-security":["max-age=31536000; includeSubdomains; preload"],"x-content-type-options":["nosniff"],"x-frame-options":["deny"],"x-xss-protection":["1; mode=block"],"x-served-by":["bd82876e9bf04990f289ba22f246ee9b"],"x-github-request-id":["6C2F0F69:1C0C6:A88FE6B:573EB116"]},"body":{"encoding":"ASCII-8BIT","base64_string":"W3siaWQiOjM1NzQ2MjE4OSwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNv\nbS9yZXBvcy9za3l3aW5kZXIvY2hhbmdlbG9nX3Rlc3QvaXNzdWVzL2V2ZW50\ncy8zNTc0NjIxODkiLCJhY3RvciI6eyJsb2dpbiI6InNreXdpbmRlciIsImlk\nIjozMzU2NDc0LCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1\nYnVzZXJjb250ZW50LmNvbS91LzMzNTY0NzQ/dj0zIiwiZ3JhdmF0YXJfaWQi\nOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3NreXdp\nbmRlciIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3NreXdpbmRl\nciIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3Vz\nZXJzL3NreXdpbmRlci9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0\ncHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3aW5kZXIvZm9sbG93aW5n\ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1\nYi5jb20vdXNlcnMvc2t5d2luZGVyL2dpc3Rzey9naXN0X2lkfSIsInN0YXJy\nZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3aW5k\nZXIvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJs\nIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3aW5kZXIvc3Vi\nc2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGku\nZ2l0aHViLmNvbS91c2Vycy9za3l3aW5kZXIvb3JncyIsInJlcG9zX3VybCI6\nImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvc2t5d2luZGVyL3JlcG9z\nIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMv\nc2t5d2luZGVyL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNf\ndXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3aW5kZXIv\ncmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJzaXRlX2FkbWluIjpm\nYWxzZX0sImV2ZW50IjoicmVmZXJlbmNlZCIsImNvbW1pdF9pZCI6ImRlY2Zl\nODQwZDFhMWI4NmUwYzI4NzAwZGU1MzYyZDMzNjVhMjk1NTUiLCJjb21taXRf\ndXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9za3l3aW5kZXIv\nY2hhbmdlbG9nX3Rlc3QvY29tbWl0cy9kZWNmZTg0MGQxYTFiODZlMGMyODcw\nMGRlNTM2MmQzMzY1YTI5NTU1IiwiY3JlYXRlZF9hdCI6IjIwMTUtMDctMTZU\nMTI6MjE6MTZaIn0seyJpZCI6MzU3NDYyNTQyLCJ1cmwiOiJodHRwczovL2Fw\naS5naXRodWIuY29tL3JlcG9zL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC9p\nc3N1ZXMvZXZlbnRzLzM1NzQ2MjU0MiIsImFjdG9yIjp7ImxvZ2luIjoic2t5\nd2luZGVyIiwiaWQiOjMzNTY0NzQsImF2YXRhcl91cmwiOiJodHRwczovL2F2\nYXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzM1NjQ3ND92PTMiLCJn\ncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20v\ndXNlcnMvc2t5d2luZGVyIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5j\nb20vc2t5d2luZGVyIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdp\ndGh1Yi5jb20vdXNlcnMvc2t5d2luZGVyL2ZvbGxvd2VycyIsImZvbGxvd2lu\nZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3NreXdpbmRl\nci9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6\nLy9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3aW5kZXIvZ2lzdHN7L2dpc3Rf\naWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3Vz\nZXJzL3NreXdpbmRlci9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2Ny\naXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3Nr\neXdpbmRlci9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJo\ndHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3NreXdpbmRlci9vcmdzIiwi\ncmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3\naW5kZXIvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHVi\nLmNvbS91c2Vycy9za3l3aW5kZXIvZXZlbnRzey9wcml2YWN5fSIsInJlY2Vp\ndmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJz\nL3NreXdpbmRlci9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInNp\ndGVfYWRtaW4iOmZhbHNlfSwiZXZlbnQiOiJjbG9zZWQiLCJjb21taXRfaWQi\nOiJkZWNmZTg0MGQxYTFiODZlMGMyODcwMGRlNTM2MmQzMzY1YTI5NTU1Iiwi\nY29tbWl0X3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2t5\nd2luZGVyL2NoYW5nZWxvZ190ZXN0L2NvbW1pdHMvZGVjZmU4NDBkMWExYjg2\nZTBjMjg3MDBkZTUzNjJkMzM2NWEyOTU1NSIsImNyZWF0ZWRfYXQiOiIyMDE1\nLTA3LTE2VDEyOjIxOjQyWiJ9XQ==\n"},"http_version":null},"recorded_at":"Fri, 20 May 2016 06:39:22 GMT"}],"recorded_with":"VCR 3.0.1"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"http_interactions":[{"request":{"method":"get","uri":"https://api.github.com/repos/skywinder/changelog_test/tags","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept":["application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1"],"Accept-Charset":["utf-8"],"User-Agent":["Github API Ruby Gem 0.13.1"]}},"response":{"status":{"code":200,"message":null},"headers":{"server":["GitHub.com"],"date":["Fri, 20 May 2016 06:39:17 GMT"],"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"status":["200 OK"],"x-ratelimit-limit":["60"],"x-ratelimit-remaining":["54"],"x-ratelimit-reset":["1463728508"],"cache-control":["public, max-age=60, s-maxage=60"],"vary":["Accept, Accept-Encoding"],"etag":["W/\"012a78339961d33825609e388f651a3e\""],"last-modified":["Thu, 05 Mar 2015 10:27:55 GMT"],"x-github-media-type":["github.v3; format=json"],"access-control-expose-headers":["ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"],"access-control-allow-origin":["*"],"content-security-policy":["default-src 'none'"],"strict-transport-security":["max-age=31536000; includeSubdomains; preload"],"x-content-type-options":["nosniff"],"x-frame-options":["deny"],"x-xss-protection":["1; mode=block"],"x-served-by":["065b43cd9674091fec48a221b420fbb3"],"x-github-request-id":["6C2F0F69:1C0C5:BA21B36:573EB114"]},"body":{"encoding":"ASCII-8BIT","base64_string":"W3sibmFtZSI6InYwLjAuMyIsInppcGJhbGxfdXJsIjoiaHR0cHM6Ly9hcGku\nZ2l0aHViLmNvbS9yZXBvcy9za3l3aW5kZXIvY2hhbmdlbG9nX3Rlc3Qvemlw\nYmFsbC92MC4wLjMiLCJ0YXJiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1\nYi5jb20vcmVwb3Mvc2t5d2luZGVyL2NoYW5nZWxvZ190ZXN0L3RhcmJhbGwv\ndjAuMC4zIiwiY29tbWl0Ijp7InNoYSI6ImEwY2JhMmIxYTFlYTkwMTFhYjA3\nZWUxYWMxNDBiYTVhNWViOGJkOTAiLCJ1cmwiOiJodHRwczovL2FwaS5naXRo\ndWIuY29tL3JlcG9zL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC9jb21taXRz\nL2EwY2JhMmIxYTFlYTkwMTFhYjA3ZWUxYWMxNDBiYTVhNWViOGJkOTAifX0s\neyJuYW1lIjoidjAuMC4yIiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5n\naXRodWIuY29tL3JlcG9zL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC96aXBi\nYWxsL3YwLjAuMiIsInRhcmJhbGxfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHVi\nLmNvbS9yZXBvcy9za3l3aW5kZXIvY2hhbmdlbG9nX3Rlc3QvdGFyYmFsbC92\nMC4wLjIiLCJjb21taXQiOnsic2hhIjoiOWIzNWJiMTNkY2QxNWI2OGU3YmNi\nZjEwY2RlNWViOTM3YTU0ZjcxMCIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1\nYi5jb20vcmVwb3Mvc2t5d2luZGVyL2NoYW5nZWxvZ190ZXN0L2NvbW1pdHMv\nOWIzNWJiMTNkY2QxNWI2OGU3YmNiZjEwY2RlNWViOTM3YTU0ZjcxMCJ9fSx7\nIm5hbWUiOiJ2MC4wLjEiLCJ6aXBiYWxsX3VybCI6Imh0dHBzOi8vYXBpLmdp\ndGh1Yi5jb20vcmVwb3Mvc2t5d2luZGVyL2NoYW5nZWxvZ190ZXN0L3ppcGJh\nbGwvdjAuMC4xIiwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIu\nY29tL3JlcG9zL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC90YXJiYWxsL3Yw\nLjAuMSIsImNvbW1pdCI6eyJzaGEiOiI0YzJkNmQxZWQ1OGJkYjI0Yjg3MGRj\nYjVkOWYyY2VlZDAyODNkNjlkIiwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHVi\nLmNvbS9yZXBvcy9za3l3aW5kZXIvY2hhbmdlbG9nX3Rlc3QvY29tbWl0cy80\nYzJkNmQxZWQ1OGJkYjI0Yjg3MGRjYjVkOWYyY2VlZDAyODNkNjlkIn19LHsi\nbmFtZSI6IjAuMC40IiwiemlwYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRo\ndWIuY29tL3JlcG9zL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC96aXBiYWxs\nLzAuMC40IiwidGFyYmFsbF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29t\nL3JlcG9zL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC90YXJiYWxsLzAuMC40\nIiwiY29tbWl0Ijp7InNoYSI6ImVjZTBjM2FiNzE0MmIyMTA2NGI4ODUwNjFj\nNTVlZGUwMGVmNmNlOTQiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29t\nL3JlcG9zL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC9jb21taXRzL2VjZTBj\nM2FiNzE0MmIyMTA2NGI4ODUwNjFjNTVlZGUwMGVmNmNlOTQifX1d\n"},"http_version":null},"recorded_at":"Fri, 20 May 2016 06:39:21 GMT"}],"recorded_with":"VCR 3.0.1"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"http_interactions":[{"request":{"method":"get","uri":"https://api.github.com/repos/skywinder/changelog_test/tags?access_token=0000000000000000","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept":["application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1"],"Accept-Charset":["utf-8"],"User-Agent":["Github API Ruby Gem 0.13.1"],"Authorization":["token 0000000000000000"]}},"response":{"status":{"code":401,"message":null},"headers":{"server":["GitHub.com"],"date":["Fri, 20 May 2016 06:39:16 GMT"],"content-type":["application/json; charset=utf-8"],"content-length":["83"],"status":["401 Unauthorized"],"x-github-media-type":["github.v3; format=json"],"x-ratelimit-limit":["60"],"x-ratelimit-remaining":["55"],"x-ratelimit-reset":["1463728508"],"access-control-expose-headers":["ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"],"access-control-allow-origin":["*"],"content-security-policy":["default-src 'none'"],"strict-transport-security":["max-age=31536000; includeSubdomains; preload"],"x-content-type-options":["nosniff"],"x-frame-options":["deny"],"x-xss-protection":["1; mode=block"],"x-github-request-id":["6C2F0F69:1C0C5:BA21AA0:573EB114"]},"body":{"encoding":"UTF-8","base64_string":"eyJtZXNzYWdlIjoiQmFkIGNyZWRlbnRpYWxzIiwiZG9jdW1lbnRhdGlvbl91\ncmwiOiJodHRwczovL2RldmVsb3Blci5naXRodWIuY29tL3YzIn0=\n"},"http_version":null},"recorded_at":"Fri, 20 May 2016 06:39:20 GMT"}],"recorded_with":"VCR 3.0.1"}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
{"http_interactions":[{"request":{"method":"get","uri":"https://api.github.com/repos/skywinder/changelog_test/issues/14/events?per_page=100","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept":["application/vnd.github.v3+json"],"User-Agent":["Octokit Ruby Gem 4.3.0"],"Content-Type":["application/json"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Server":["GitHub.com"],"Date":["Fri, 20 May 2016 06:13:06 GMT"],"Content-Type":["application/json; charset=utf-8"],"Transfer-Encoding":["chunked"],"Status":["200 OK"],"X-Ratelimit-Limit":["60"],"X-Ratelimit-Remaining":["37"],"X-Ratelimit-Reset":["1463724861"],"Cache-Control":["public, max-age=60, s-maxage=60"],"Vary":["Accept","Accept-Encoding"],"Etag":["W/\"4d408c4e8053c706d7255563141ccb80\""],"X-Github-Media-Type":["github.v3; format=json"],"Access-Control-Expose-Headers":["ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"],"Access-Control-Allow-Origin":["*"],"Content-Security-Policy":["default-src 'none'"],"Strict-Transport-Security":["max-age=31536000; includeSubdomains; preload"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["deny"],"X-Xss-Protection":["1; mode=block"],"X-Served-By":["2d7a5e35115884240089368322196939"],"X-Github-Request-Id":["6C2F0F69:7F8B:2084B01:573EAAF2"]},"body":{"encoding":"ASCII-8BIT","base64_string":"W3siaWQiOjM1NzQ2MjE4OSwidXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNv\nbS9yZXBvcy9za3l3aW5kZXIvY2hhbmdlbG9nX3Rlc3QvaXNzdWVzL2V2ZW50\ncy8zNTc0NjIxODkiLCJhY3RvciI6eyJsb2dpbiI6InNreXdpbmRlciIsImlk\nIjozMzU2NDc0LCJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1\nYnVzZXJjb250ZW50LmNvbS91LzMzNTY0NzQ/dj0zIiwiZ3JhdmF0YXJfaWQi\nOiIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3NreXdp\nbmRlciIsImh0bWxfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL3NreXdpbmRl\nciIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3Vz\nZXJzL3NreXdpbmRlci9mb2xsb3dlcnMiLCJmb2xsb3dpbmdfdXJsIjoiaHR0\ncHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3aW5kZXIvZm9sbG93aW5n\ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1\nYi5jb20vdXNlcnMvc2t5d2luZGVyL2dpc3Rzey9naXN0X2lkfSIsInN0YXJy\nZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3aW5k\nZXIvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJs\nIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3aW5kZXIvc3Vi\nc2NyaXB0aW9ucyIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGku\nZ2l0aHViLmNvbS91c2Vycy9za3l3aW5kZXIvb3JncyIsInJlcG9zX3VybCI6\nImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvc2t5d2luZGVyL3JlcG9z\nIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMv\nc2t5d2luZGVyL2V2ZW50c3svcHJpdmFjeX0iLCJyZWNlaXZlZF9ldmVudHNf\ndXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3aW5kZXIv\ncmVjZWl2ZWRfZXZlbnRzIiwidHlwZSI6IlVzZXIiLCJzaXRlX2FkbWluIjpm\nYWxzZX0sImV2ZW50IjoicmVmZXJlbmNlZCIsImNvbW1pdF9pZCI6ImRlY2Zl\nODQwZDFhMWI4NmUwYzI4NzAwZGU1MzYyZDMzNjVhMjk1NTUiLCJjb21taXRf\ndXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9za3l3aW5kZXIv\nY2hhbmdlbG9nX3Rlc3QvY29tbWl0cy9kZWNmZTg0MGQxYTFiODZlMGMyODcw\nMGRlNTM2MmQzMzY1YTI5NTU1IiwiY3JlYXRlZF9hdCI6IjIwMTUtMDctMTZU\nMTI6MjE6MTZaIn0seyJpZCI6MzU3NDYyNTQyLCJ1cmwiOiJodHRwczovL2Fw\naS5naXRodWIuY29tL3JlcG9zL3NreXdpbmRlci9jaGFuZ2Vsb2dfdGVzdC9p\nc3N1ZXMvZXZlbnRzLzM1NzQ2MjU0MiIsImFjdG9yIjp7ImxvZ2luIjoic2t5\nd2luZGVyIiwiaWQiOjMzNTY0NzQsImF2YXRhcl91cmwiOiJodHRwczovL2F2\nYXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzM1NjQ3ND92PTMiLCJn\ncmF2YXRhcl9pZCI6IiIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20v\ndXNlcnMvc2t5d2luZGVyIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5j\nb20vc2t5d2luZGVyIiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdp\ndGh1Yi5jb20vdXNlcnMvc2t5d2luZGVyL2ZvbGxvd2VycyIsImZvbGxvd2lu\nZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3NreXdpbmRl\nci9mb2xsb3dpbmd7L290aGVyX3VzZXJ9IiwiZ2lzdHNfdXJsIjoiaHR0cHM6\nLy9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3aW5kZXIvZ2lzdHN7L2dpc3Rf\naWR9Iiwic3RhcnJlZF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3Vz\nZXJzL3NreXdpbmRlci9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2Ny\naXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3Nr\neXdpbmRlci9zdWJzY3JpcHRpb25zIiwib3JnYW5pemF0aW9uc191cmwiOiJo\ndHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL3NreXdpbmRlci9vcmdzIiwi\ncmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9za3l3\naW5kZXIvcmVwb3MiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHVi\nLmNvbS91c2Vycy9za3l3aW5kZXIvZXZlbnRzey9wcml2YWN5fSIsInJlY2Vp\ndmVkX2V2ZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJz\nL3NreXdpbmRlci9yZWNlaXZlZF9ldmVudHMiLCJ0eXBlIjoiVXNlciIsInNp\ndGVfYWRtaW4iOmZhbHNlfSwiZXZlbnQiOiJjbG9zZWQiLCJjb21taXRfaWQi\nOiJkZWNmZTg0MGQxYTFiODZlMGMyODcwMGRlNTM2MmQzMzY1YTI5NTU1Iiwi\nY29tbWl0X3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2t5\nd2luZGVyL2NoYW5nZWxvZ190ZXN0L2NvbW1pdHMvZGVjZmU4NDBkMWExYjg2\nZTBjMjg3MDBkZTUzNjJkMzM2NWEyOTU1NSIsImNyZWF0ZWRfYXQiOiIyMDE1\nLTA3LTE2VDEyOjIxOjQyWiJ9XQ==\n"},"http_version":null},"recorded_at":"Fri, 20 May 2016 06:13:10 GMT"}],"recorded_with":"VCR 3.0.1"}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
{"http_interactions":[{"request":{"method":"get","uri":"https://api.github.com/repos/skywinder/changelog_test/tags?per_page=100","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept":["application/vnd.github.v3+json"],"User-Agent":["Octokit Ruby Gem 4.3.0"],"Content-Type":["application/json"],"Authorization":["token 0000000000000000"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"]}},"response":{"status":{"code":401,"message":"Unauthorized"},"headers":{"Server":["GitHub.com"],"Date":["Fri, 20 May 2016 05:47:03 GMT"],"Content-Type":["application/json; charset=utf-8"],"Content-Length":["83"],"Status":["401 Unauthorized"],"X-Github-Media-Type":["github.v3; format=json"],"X-Ratelimit-Limit":["60"],"X-Ratelimit-Remaining":["42"],"X-Ratelimit-Reset":["1463724861"],"Access-Control-Expose-Headers":["ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"],"Access-Control-Allow-Origin":["*"],"Content-Security-Policy":["default-src 'none'"],"Strict-Transport-Security":["max-age=31536000; includeSubdomains; preload"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["deny"],"X-Xss-Protection":["1; mode=block"],"X-Github-Request-Id":["6C2F0F69:1271A:B8980B7:573EA4D6"]},"body":{"encoding":"UTF-8","base64_string":"eyJtZXNzYWdlIjoiQmFkIGNyZWRlbnRpYWxzIiwiZG9jdW1lbnRhdGlvbl91\ncmwiOiJodHRwczovL2RldmVsb3Blci5naXRodWIuY29tL3YzIn0=\n"},"http_version":null},"recorded_at":"Fri, 20 May 2016 05:47:07 GMT"}],"recorded_with":"VCR 3.0.1"}
|
Loading…
Reference in New Issue
Block a user