1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
require 'rubygems/test_case'
require 'rubygems/commands/owner_command'
class TestGemCommandsOwnerCommand < Gem::TestCase
def setup
super
@fetcher = Gem::FakeFetcher.new
Gem::RemoteFetcher.fetcher = @fetcher
Gem.configuration.rubygems_api_key = "ed244fbf2b1a52e012da8616c512fa47f9aa5250"
@cmd = Gem::Commands::OwnerCommand.new
end
def test_show_owners
response = <<EOF
---
- email: [email protected]
- email: [email protected]
EOF
@fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners.yaml"] = [response, 200, 'OK']
use_ui @ui do
@cmd.show_owners("freewill")
end
assert_equal Net::HTTP::Get, @fetcher.last_request.class
assert_equal Gem.configuration.rubygems_api_key, @fetcher.last_request["Authorization"]
assert_match %r{Owners for gem: freewill}, @ui.output
assert_match %r{- [email protected]}, @ui.output
assert_match %r{- [email protected]}, @ui.output
end
def test_show_owners_denied
response = "You don't have permission to push to this gem"
@fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners.yaml"] = [response, 403, 'Forbidden']
assert_raises Gem::MockGemUi::TermError do
use_ui @ui do
@cmd.show_owners("freewill")
end
end
assert_match response, @ui.output
end
def test_show_owners_key
response = "- email: [email protected]\n"
@fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners.yaml"] = [response, 200, 'OK']
File.open Gem.configuration.credentials_path, 'a' do |f|
f.write ':other: 701229f217cdf23b1344c7b4b54ca97'
end
Gem.configuration.load_api_keys
@cmd.handle_options %w(-k other)
@cmd.show_owners('freewill')
assert_equal '701229f217cdf23b1344c7b4b54ca97', @fetcher.last_request['Authorization']
end
def test_add_owners
response = "Owner added successfully."
@fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 200, 'OK']
use_ui @ui do
@cmd.add_owners("freewill", ["[email protected]"])
end
assert_equal Net::HTTP::Post, @fetcher.last_request.class
assert_equal Gem.configuration.rubygems_api_key, @fetcher.last_request["Authorization"]
assert_equal "email=user-new1%40example.com", @fetcher.last_request.body
assert_match response, @ui.output
end
def test_add_owners_denied
response = "You don't have permission to push to this gem"
@fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 403, 'Forbidden']
assert_raises Gem::MockGemUi::TermError do
use_ui @ui do
@cmd.add_owners("freewill", ["[email protected]"])
end
end
assert_match response, @ui.output
end
def test_add_owners_key
response = "Owner added successfully."
@fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 200, 'OK']
File.open Gem.configuration.credentials_path, 'a' do |f|
f.write ':other: 701229f217cdf23b1344c7b4b54ca97'
end
Gem.configuration.load_api_keys
@cmd.handle_options %w(-k other)
@cmd.add_owners('freewill', ['[email protected]'])
assert_equal '701229f217cdf23b1344c7b4b54ca97', @fetcher.last_request['Authorization']
end
def test_remove_owners
response = "Owner removed successfully."
@fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 200, 'OK']
use_ui @ui do
@cmd.remove_owners("freewill", ["[email protected]"])
end
assert_equal Net::HTTP::Delete, @fetcher.last_request.class
assert_equal Gem.configuration.rubygems_api_key, @fetcher.last_request["Authorization"]
assert_equal "email=user-remove1%40example.com", @fetcher.last_request.body
assert_match response, @ui.output
end
def test_remove_owners_denied
response = "You don't have permission to push to this gem"
@fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 403, 'Forbidden']
assert_raises Gem::MockGemUi::TermError do
use_ui @ui do
@cmd.remove_owners("freewill", ["[email protected]"])
end
end
assert_match response, @ui.output
end
def test_remove_owners_key
response = "Owner removed successfully."
@fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [response, 200, 'OK']
File.open Gem.configuration.credentials_path, 'a' do |f|
f.write ':other: 701229f217cdf23b1344c7b4b54ca97'
end
Gem.configuration.load_api_keys
@cmd.handle_options %w(-k other)
@cmd.remove_owners('freewill', ['[email protected]'])
assert_equal '701229f217cdf23b1344c7b4b54ca97', @fetcher.last_request['Authorization']
end
end
|