octopi 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. data/.gitignore +5 -0
  2. data/Rakefile +2 -84
  3. data/examples/authenticated.rb +20 -0
  4. data/examples/github.yml.example +14 -0
  5. data/examples/issues.rb +18 -0
  6. data/examples/overall.rb +50 -0
  7. data/lib/octopi/version.rb +3 -0
  8. data/octopi.gemspec +20 -93
  9. data/real_world_test/commit_test.rb +20 -0
  10. data/real_world_test/repository_test.rb +19 -0
  11. data/real_world_test/test_helper.rb +11 -0
  12. data/test/.gitconfig +3 -0
  13. data/test/api_test.rb +58 -0
  14. data/test/authenticated_test.rb +39 -0
  15. data/test/base_test.rb +20 -0
  16. data/test/blob_test.rb +23 -0
  17. data/test/branch_test.rb +20 -0
  18. data/test/commit_test.rb +89 -0
  19. data/test/file_object_test.rb +39 -0
  20. data/test/gist_test.rb +16 -0
  21. data/test/issue_comment.rb +19 -0
  22. data/test/issue_set_test.rb +33 -0
  23. data/test/issue_test.rb +136 -0
  24. data/test/key_set_test.rb +29 -0
  25. data/test/key_test.rb +35 -0
  26. data/test/repository_set_test.rb +23 -0
  27. data/test/repository_test.rb +164 -0
  28. data/test/stubs/account +691 -0
  29. data/test/stubs/blob/fcoury/octopi/plain/f6609209c3ac0badd004512d318bfaa508ea10ae +20 -0
  30. data/test/stubs/comments/fcoury/octopi/comments +30 -0
  31. data/test/stubs/comments/fcoury/octopi/comments.atom +48 -0
  32. data/test/stubs/commits/fcoury/octopi/f6609209c3ac0badd004512d318bfaa508ea10ae +94 -0
  33. data/test/stubs/commits/fcoury/octopi/lazy +491 -0
  34. data/test/stubs/commits/fcoury/octopi/master +477 -0
  35. data/test/stubs/commits/fcoury/octopi/octopi.rb +818 -0
  36. data/test/stubs/commits/fcoury/rboard/master +437 -0
  37. data/test/stubs/dashboard +231 -0
  38. data/test/stubs/errors/repository/not_found +16 -0
  39. data/test/stubs/gists/159579 +18 -0
  40. data/test/stubs/issues/fcoury/octopi/27 +42 -0
  41. data/test/stubs/issues/fcoury/octopi/27-reopened +27 -0
  42. data/test/stubs/issues/fcoury/octopi/28 +27 -0
  43. data/test/stubs/issues/fcoury/octopi/28-closed +27 -0
  44. data/test/stubs/issues/fcoury/octopi/28-edited +27 -0
  45. data/test/stubs/issues/fcoury/octopi/closed +175 -0
  46. data/test/stubs/issues/fcoury/octopi/comment/28-comment +15 -0
  47. data/test/stubs/issues/fcoury/octopi/labels/28-maybe-two-point-oh +16 -0
  48. data/test/stubs/issues/fcoury/octopi/labels/28-one-point-oh +16 -0
  49. data/test/stubs/issues/fcoury/octopi/labels/28-remove-maybe-two-point-oh +14 -0
  50. data/test/stubs/issues/fcoury/octopi/labels/28-remove-one-point-oh +15 -0
  51. data/test/stubs/issues/fcoury/octopi/new +27 -0
  52. data/test/stubs/issues/fcoury/octopi/open +329 -0
  53. data/test/stubs/issues/fcoury/octopi/search +139 -0
  54. data/test/stubs/login +157 -0
  55. data/test/stubs/repos/fcoury/octopi/branches +18 -0
  56. data/test/stubs/repos/fcoury/octopi/collaborators +16 -0
  57. data/test/stubs/repos/fcoury/octopi/delete-token +13 -0
  58. data/test/stubs/repos/fcoury/octopi/languages +16 -0
  59. data/test/stubs/repos/fcoury/octopi/main +12 -0
  60. data/test/stubs/repos/fcoury/octopi/master +24 -0
  61. data/test/stubs/repos/fcoury/octopi/tags +23 -0
  62. data/test/stubs/repos/fcoury/octopus/main +24 -0
  63. data/test/stubs/repos/fcoury/rboard/main +12 -0
  64. data/test/stubs/repos/fcoury/rboard/master +24 -0
  65. data/test/stubs/repos/search +238 -0
  66. data/test/stubs/repos/show/fcoury +463 -0
  67. data/test/stubs/repos/show/fcoury-private +454 -0
  68. data/test/stubs/tree/fcoury/octopi/f6609209c3ac0badd004512d318bfaa508ea10ae +54 -0
  69. data/test/stubs/users/Caged +26 -0
  70. data/test/stubs/users/FooBarWidget +26 -0
  71. data/test/stubs/users/aslakhellesoy +26 -0
  72. data/test/stubs/users/augustl +26 -0
  73. data/test/stubs/users/bcalloway +26 -0
  74. data/test/stubs/users/benaskins +26 -0
  75. data/test/stubs/users/benhoskings +26 -0
  76. data/test/stubs/users/bjeanes +27 -0
  77. data/test/stubs/users/cldwalker +26 -0
  78. data/test/stubs/users/danlucraft +26 -0
  79. data/test/stubs/users/dchelimsky +26 -0
  80. data/test/stubs/users/dcrec1 +26 -0
  81. data/test/stubs/users/defunkt +26 -0
  82. data/test/stubs/users/derencius +26 -0
  83. data/test/stubs/users/diy +21 -0
  84. data/test/stubs/users/documentcloud +26 -0
  85. data/test/stubs/users/drnic +26 -0
  86. data/test/stubs/users/dustin +26 -0
  87. data/test/stubs/users/eladmeidar +26 -0
  88. data/test/stubs/users/elliottcable +26 -0
  89. data/test/stubs/users/entp +26 -0
  90. data/test/stubs/users/fcoury +26 -0
  91. data/test/stubs/users/fcoury-private +36 -0
  92. data/test/stubs/users/follow +15 -0
  93. data/test/stubs/users/follow-rails +15 -0
  94. data/test/stubs/users/followers +24 -0
  95. data/test/stubs/users/following +28 -0
  96. data/test/stubs/users/giraffesoft +26 -0
  97. data/test/stubs/users/gwoliveira +26 -0
  98. data/test/stubs/users/hashrocket +26 -0
  99. data/test/stubs/users/hcatlin +26 -0
  100. data/test/stubs/users/jamis +26 -0
  101. data/test/stubs/users/jnicklas +26 -0
  102. data/test/stubs/users/jnunemaker +26 -0
  103. data/test/stubs/users/jruby +21 -0
  104. data/test/stubs/users/kballard +26 -0
  105. data/test/stubs/users/kchris +26 -0
  106. data/test/stubs/users/key-added +20 -0
  107. data/test/stubs/users/key-removed +17 -0
  108. data/test/stubs/users/keys +21 -0
  109. data/test/stubs/users/knewter +26 -0
  110. data/test/stubs/users/lachie +26 -0
  111. data/test/stubs/users/lachlanhardy +26 -0
  112. data/test/stubs/users/lenary +26 -0
  113. data/test/stubs/users/lifo +26 -0
  114. data/test/stubs/users/maccman +26 -0
  115. data/test/stubs/users/markgandolfo +26 -0
  116. data/test/stubs/users/mbleigh +26 -0
  117. data/test/stubs/users/mhodgson +26 -0
  118. data/test/stubs/users/mocra +26 -0
  119. data/test/stubs/users/mojombo +26 -0
  120. data/test/stubs/users/newbamboo +26 -0
  121. data/test/stubs/users/notahat +26 -0
  122. data/test/stubs/users/opscode +26 -0
  123. data/test/stubs/users/paulorv +26 -0
  124. data/test/stubs/users/pvande +21 -0
  125. data/test/stubs/users/rack +26 -0
  126. data/test/stubs/users/radar +26 -0
  127. data/test/stubs/users/rails +26 -0
  128. data/test/stubs/users/railscampau +21 -0
  129. data/test/stubs/users/redinger +26 -0
  130. data/test/stubs/users/remi +26 -0
  131. data/test/stubs/users/search-radar +27 -0
  132. data/test/stubs/users/shanesveller +26 -0
  133. data/test/stubs/users/shuber +26 -0
  134. data/test/stubs/users/softprops +26 -0
  135. data/test/stubs/users/superfeedr +26 -0
  136. data/test/stubs/users/svenfuchs +26 -0
  137. data/test/stubs/users/taylorrf +26 -0
  138. data/test/stubs/users/technoweenie +26 -0
  139. data/test/stubs/users/tgraham +26 -0
  140. data/test/stubs/users/thoughtbot +26 -0
  141. data/test/stubs/users/tmm1 +26 -0
  142. data/test/stubs/users/tobi +26 -0
  143. data/test/stubs/users/tpope +26 -0
  144. data/test/stubs/users/unfollow-rails +14 -0
  145. data/test/stubs/users/watched-repos +1668 -0
  146. data/test/stubs/users/webbynode +26 -0
  147. data/test/stubs/users/wvanbergen +26 -0
  148. data/test/stubs/users/wycats +26 -0
  149. data/test/tag_test.rb +20 -0
  150. data/test/test_helper.rb +251 -0
  151. data/test/user_test.rb +97 -0
  152. data/test_auth.rb +5 -0
  153. metadata +359 -73
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ examples/github.yml
2
+ doc/
3
+ pkg/
4
+ contrib/nothingspecial.rb
5
+ **/*.swp
data/Rakefile CHANGED
@@ -1,60 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
- require 'yaml'
3
+ require 'bundler'
4
4
 
5
- begin
6
- require 'jeweler'
7
- Jeweler::Tasks.new do |gem|
8
- gem.name = "octopi"
9
- gem.summary = %Q{A Ruby interface to GitHub API v2}
10
- gem.email = "felipe.coury@gmail.com"
11
- gem.homepage = "http://github.com/fcoury/octopi"
12
- gem.authors = ["Felipe Coury"]
13
- gem.rubyforge_project = "octopi"
14
- gem.add_dependency('nokogiri', '>= 1.3.1')
15
- gem.add_dependency('httparty', '>= 0.4.5')
16
- gem.add_dependency('mechanize', '>= 0.9.3')
17
- gem.add_dependency('api_cache', '>= 0')
18
- gem.add_development_dependency 'shoulda'
19
- gem.add_development_dependency 'fakeweb'
20
- gem.files.exclude 'test/**/*'
21
- gem.files.exclude 'test*'
22
- gem.files.exclude 'doc/**/*'
23
- gem.files.exclude 'examples/**/*'
24
-
25
-
26
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
27
- end
28
- Jeweler::GemcutterTasks.new
29
- rescue LoadError
30
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
31
- end
32
-
33
- begin
34
- require 'rake/contrib/sshpublisher'
35
- namespace :rubyforge do
36
-
37
- desc "Release gem and RDoc documentation to RubyForge"
38
- task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
39
-
40
- namespace :release do
41
- desc "Publish RDoc to RubyForge."
42
- task :docs => [:rdoc] do
43
- config = YAML.load(
44
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
45
- )
46
-
47
- host = "#{config['username']}@rubyforge.org"
48
- remote_dir = "/var/www/gforge-projects/octopi/"
49
- local_dir = 'rdoc'
50
-
51
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
52
- end
53
- end
54
- end
55
- rescue LoadError
56
- puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
57
- end
5
+ Bundler::GemHelper.install_tasks
58
6
 
59
7
  require 'rake/testtask'
60
8
  Rake::TestTask.new(:test) do |test|
@@ -64,34 +12,4 @@ Rake::TestTask.new(:test) do |test|
64
12
  test.verbose = false
65
13
  end
66
14
 
67
- begin
68
- require 'rcov/rcovtask'
69
- Rcov::RcovTask.new do |test|
70
- test.libs << 'test'
71
- test.pattern = 'test/**/*_test.rb'
72
- test.verbose = true
73
- end
74
- rescue LoadError
75
- task :rcov do
76
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
77
- end
78
- end
79
-
80
-
81
15
  task :default => :test
82
-
83
- require 'rake/rdoctask'
84
- Rake::RDocTask.new do |rdoc|
85
- if File.exist?('VERSION.yml')
86
- config = YAML.load(File.read('VERSION.yml'))
87
- version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
88
- else
89
- version = ""
90
- end
91
-
92
- rdoc.rdoc_dir = 'rdoc'
93
- rdoc.title = "octopi #{version}"
94
- rdoc.rdoc_files.include('README*')
95
- rdoc.rdoc_files.include('lib/**/*.rb')
96
- end
97
-
@@ -0,0 +1,20 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'octopi')
2
+
3
+ include Octopi
4
+
5
+ authenticated :trace => "curl" do |g|
6
+ repo = g.repository("api-labrat")
7
+
8
+ issue = repo.open_issue :title => "Sample issue",
9
+ :body => "This issue was opened using GitHub API and Octopi"
10
+ puts "Successfully opened issue \##{issue.number}"
11
+
12
+ # # labels = issue.add_label "Working", "Todo"
13
+ # # puts "Labels: #{labels.inspect}"
14
+
15
+ issue.close
16
+ puts "Successfully closed issue \##{issue.number}"
17
+
18
+ # labels = issue.remove_label "Todo"
19
+ # puts "Successfully removed label Todo. Current labels: #{labels.inspect}"
20
+ end
@@ -0,0 +1,14 @@
1
+ #
2
+ # Octopi GitHub API configuration file
3
+ #
4
+
5
+ # GitHub user login and token
6
+ login: github-username
7
+ token: github-token
8
+
9
+ # Trace level
10
+ # Possible values:
11
+ # false - no tracing, same as if the param is ommited
12
+ # true - will output each POST or GET operation to the stdout
13
+ # curl - same as true, but in addition will output the curl equivalent of each command (for debugging)
14
+ trace: curl
@@ -0,0 +1,18 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'octopi')
2
+
3
+ include Octopi
4
+
5
+ user = User.find("fcoury")
6
+ puts user.name
7
+
8
+ repo = user.repository("octopi")
9
+ puts repo.description
10
+
11
+ issue = Issue.find_all(user.login, repo.name).first
12
+ puts "First open issue: #{issue.number} - #{issue.title} - Created at: #{issue.created_at}"
13
+
14
+ issue2 = repo.issues.first
15
+ puts "First open issue: #{issue.number} - #{issue.title} - Created at: #{issue.created_at}"
16
+
17
+ issue3 = repo.issue(issue2.number)
18
+ puts "First open issue: #{issue.number} - #{issue.title} - Created at: #{issue.created_at}"
@@ -0,0 +1,50 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'octopi')
2
+
3
+ include Octopi
4
+
5
+ # user information
6
+ user = User.find("fcoury")
7
+ puts "#{user.name} is being followed by #{user.followers.join(", ")} and following #{user.following.join(", ")}"
8
+
9
+ # the bang version of followers and following
10
+ # fetches user object for each user, but is
11
+ # a lot more expensive
12
+ user.followers!.each do |u|
13
+ puts " - #{u.name} (#{u.login}) has #{u.public_repo_count} repo(s)"
14
+ end
15
+
16
+ # search user
17
+ users = User.find_all("silva")
18
+ puts "#{users.size} users found for 'silva':"
19
+ users.each do |u|
20
+ puts " - #{u.name}"
21
+ end
22
+
23
+ # repository information
24
+ # to get all repos for user: user.repositories
25
+ repo = user.repository("octopi") # same as: Repository.find("fcoury", "octopi")
26
+ puts "Repository: #{repo.name} - #{repo.description} (by #{repo.owner}) - #{repo.url}"
27
+ puts " Tags: #{repo.tags and repo.tags.map {|t| t.name}.join(", ")}"
28
+
29
+ issue = repo.issues.first
30
+ puts "Sample open issue: #{issue.number} - #{issue.title} - Created at: #{issue.created_at}"
31
+
32
+ # commits of a the repository
33
+ commit = repo.commits.first
34
+ puts "Commit: #{commit.id} - #{commit.message} - by #{commit.author['name']}"
35
+
36
+ # single commit information
37
+ # details is the same as: Commit.find(commit)
38
+ puts "Diff:"
39
+ commit.modified.each {|m| puts "#{m['filename']} DIFF: #{m['diff']}" }
40
+
41
+ # repository search
42
+ repos = Repository.find_all("ruby", "git")
43
+ puts "#{repos.size} repository(ies) with 'ruby' and 'git':"
44
+ repos.each do |r|
45
+ puts " - #{r.name}"
46
+ end
47
+
48
+ # connect "user", "<< token >>" do |github|
49
+ # puts github.user.name
50
+ # end
@@ -0,0 +1,3 @@
1
+ module Octopi
2
+ VERSION = "0.4.4"
3
+ end
data/octopi.gemspec CHANGED
@@ -1,99 +1,26 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "octopi/version"
5
4
 
6
5
  Gem::Specification.new do |s|
7
- s.name = %q{octopi}
8
- s.version = "0.4.3"
6
+ s.name = "octopi"
7
+ s.version = Octopi::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Felipe Coury", "Ryan Bigg"]
10
+ s.email = ["felipe.coury@gmail.com", "radarlistener@gmail.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{A Ruby interface to GitHub API v2}
13
+ s.description = %q{A Ruby interface to GitHub API v2}
9
14
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Felipe Coury"]
12
- s.date = %q{2011-05-12}
13
- s.email = %q{felipe.coury@gmail.com}
14
- s.extra_rdoc_files = [
15
- "LICENSE",
16
- "README.markdown"
17
- ]
18
- s.files = [
19
- ".yardoc",
20
- "CHANGELOG.md",
21
- "Gemfile",
22
- "Gemfile.lock",
23
- "LICENSE",
24
- "README.markdown",
25
- "Rakefile",
26
- "VERSION.yml",
27
- "contrib/backup.rb",
28
- "lib/ext/string_ext.rb",
29
- "lib/octopi.rb",
30
- "lib/octopi/api.rb",
31
- "lib/octopi/base.rb",
32
- "lib/octopi/blob.rb",
33
- "lib/octopi/branch.rb",
34
- "lib/octopi/branch_set.rb",
35
- "lib/octopi/comment.rb",
36
- "lib/octopi/commit.rb",
37
- "lib/octopi/error.rb",
38
- "lib/octopi/file_object.rb",
39
- "lib/octopi/gist.rb",
40
- "lib/octopi/issue.rb",
41
- "lib/octopi/issue_comment.rb",
42
- "lib/octopi/issue_set.rb",
43
- "lib/octopi/key.rb",
44
- "lib/octopi/key_set.rb",
45
- "lib/octopi/plan.rb",
46
- "lib/octopi/repository.rb",
47
- "lib/octopi/repository_set.rb",
48
- "lib/octopi/resource.rb",
49
- "lib/octopi/self.rb",
50
- "lib/octopi/tag.rb",
51
- "lib/octopi/user.rb",
52
- "octopi.gemspec"
53
- ]
54
- s.homepage = %q{http://github.com/fcoury/octopi}
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
55
18
  s.require_paths = ["lib"]
56
- s.rubyforge_project = %q{octopi}
57
- s.rubygems_version = %q{1.6.2}
58
- s.summary = %q{A Ruby interface to GitHub API v2}
59
-
60
- if s.respond_to? :specification_version then
61
- s.specification_version = 3
62
-
63
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
64
- s.add_runtime_dependency(%q<octopi>, [">= 0"])
65
- s.add_runtime_dependency(%q<jeweler>, [">= 0"])
66
- s.add_development_dependency(%q<shoulda>, [">= 0"])
67
- s.add_development_dependency(%q<fakeweb>, [">= 0"])
68
- s.add_runtime_dependency(%q<nokogiri>, [">= 1.3.1"])
69
- s.add_runtime_dependency(%q<httparty>, [">= 0.4.5"])
70
- s.add_runtime_dependency(%q<mechanize>, [">= 0.9.3"])
71
- s.add_runtime_dependency(%q<api_cache>, [">= 0"])
72
- s.add_development_dependency(%q<shoulda>, [">= 0"])
73
- s.add_development_dependency(%q<fakeweb>, [">= 0"])
74
- else
75
- s.add_dependency(%q<octopi>, [">= 0"])
76
- s.add_dependency(%q<jeweler>, [">= 0"])
77
- s.add_dependency(%q<shoulda>, [">= 0"])
78
- s.add_dependency(%q<fakeweb>, [">= 0"])
79
- s.add_dependency(%q<nokogiri>, [">= 1.3.1"])
80
- s.add_dependency(%q<httparty>, [">= 0.4.5"])
81
- s.add_dependency(%q<mechanize>, [">= 0.9.3"])
82
- s.add_dependency(%q<api_cache>, [">= 0"])
83
- s.add_dependency(%q<shoulda>, [">= 0"])
84
- s.add_dependency(%q<fakeweb>, [">= 0"])
85
- end
86
- else
87
- s.add_dependency(%q<octopi>, [">= 0"])
88
- s.add_dependency(%q<jeweler>, [">= 0"])
89
- s.add_dependency(%q<shoulda>, [">= 0"])
90
- s.add_dependency(%q<fakeweb>, [">= 0"])
91
- s.add_dependency(%q<nokogiri>, [">= 1.3.1"])
92
- s.add_dependency(%q<httparty>, [">= 0.4.5"])
93
- s.add_dependency(%q<mechanize>, [">= 0.9.3"])
94
- s.add_dependency(%q<api_cache>, [">= 0"])
95
- s.add_dependency(%q<shoulda>, [">= 0"])
96
- s.add_dependency(%q<fakeweb>, [">= 0"])
97
- end
19
+
20
+ s.add_dependency(%q<nokogiri>, [">= 1.3.1"])
21
+ s.add_dependency(%q<httparty>, [">= 0.4.5"])
22
+ s.add_dependency(%q<mechanize>, [">= 0.9.3"])
23
+ s.add_dependency(%q<api_cache>, [">= 0"])
24
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
25
+ s.add_development_dependency(%q<fakeweb>, [">= 0"])
98
26
  end
99
-
@@ -0,0 +1,20 @@
1
+ # IF TEST FAILS PLEASE SEE TEST_HELPER FOR REASON
2
+ require File.join(File.dirname(__FILE__), 'test_helper')
3
+
4
+ class CommitTest < Test::Unit::TestCase
5
+ include Octopi
6
+
7
+ def setup
8
+ @user = User.find("radar")
9
+ end
10
+
11
+
12
+ context Commit do
13
+ should "return a commit for a private repository when authed" do
14
+ authenticated do
15
+ repository = @user.repository(:name => "select-copiers")
16
+ assert_not_nil repository.commits
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ # IF TEST FAILS PLEASE SEE TEST_HELPER FOR REASON
2
+ require File.join(File.dirname(__FILE__), 'test_helper')
3
+
4
+ class RepositoryTest < Test::Unit::TestCase
5
+ include Octopi
6
+
7
+ def setup
8
+ @user = User.find("radar")
9
+ end
10
+
11
+
12
+ context Repository do
13
+ should "return a private repository when authed" do
14
+ authenticated do
15
+ assert_not_nil @user.repository(:name => "select-copiers")
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ # These are the real world tests using real world data.
2
+ # Whilst the tests are good for ensuring Nothing Goes Wrong,
3
+ # It isn't good to always use fake data because you're fooling yourself.
4
+ # This test data uses my own personal ~/.gitconfig and will probably not work for you.
5
+ require 'rubygems'
6
+ require 'test/unit'
7
+ require 'shoulda'
8
+
9
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
10
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
11
+ require 'octopi'
data/test/.gitconfig ADDED
@@ -0,0 +1,3 @@
1
+ [github]
2
+ user = fcoury
3
+ token = 8f700e0d7747826f3e56ee13651414bd
data/test/api_test.rb ADDED
@@ -0,0 +1,58 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ class AuthenticatedTest < Test::Unit::TestCase
4
+ include Octopi
5
+
6
+ def setup
7
+ fake_everything
8
+ @user = User.find("fcoury")
9
+ end
10
+
11
+ context "following" do
12
+
13
+ should "not be able to follow anyone if not authenticated" do
14
+ exception = assert_raise AuthenticationRequired do
15
+ Api.me.follow!("rails")
16
+ end
17
+ end
18
+
19
+ should "be able to follow a user" do
20
+ auth do
21
+ assert_not_nil Api.me.follow!("rails")
22
+ end
23
+ end
24
+ end
25
+
26
+ context "unfollowing" do
27
+
28
+ should "not be able to follow anyone if not authenticated" do
29
+ exception = assert_raise AuthenticationRequired do
30
+ Api.me.unfollow!("rails")
31
+ end
32
+ end
33
+
34
+ should "be able to follow a user" do
35
+ auth do
36
+ assert_not_nil Api.me.unfollow!("rails")
37
+ end
38
+ end
39
+ end
40
+
41
+ context "keys" do
42
+ should "not be able to see keys if not authenticated" do
43
+ exception = assert_raise AuthenticationRequired do
44
+ Api.me.keys
45
+ end
46
+
47
+ assert_equal "To view keys, you must be authenticated", exception.message
48
+ end
49
+
50
+ should "have some keys" do
51
+ auth do
52
+ keys = Api.me.keys
53
+ assert keys.is_a?(KeySet)
54
+ assert_equal 2, keys.size
55
+ end
56
+ end
57
+ end
58
+ end