ribose-cli 0.1.0 → 0.2.0
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.
- checksums.yaml +5 -5
- data/.rubocop.yml +539 -970
- data/Gemfile +3 -0
- data/README.md +316 -7
- data/bin/ribose +22 -0
- data/lib/ribose/cli/auth.rb +9 -0
- data/lib/ribose/cli/command.rb +55 -0
- data/lib/ribose/cli/commands/base.rb +80 -0
- data/lib/ribose/cli/commands/conversation.rb +114 -0
- data/lib/ribose/cli/commands/file.rb +96 -0
- data/lib/ribose/cli/commands/invitation.rb +81 -0
- data/lib/ribose/cli/commands/join_space.rb +78 -0
- data/lib/ribose/cli/commands/member.rb +81 -0
- data/lib/ribose/cli/commands/message.rb +98 -0
- data/lib/ribose/cli/commands/note.rb +98 -0
- data/lib/ribose/cli/commands/space.rb +86 -0
- data/lib/ribose/cli/rcfile.rb +57 -0
- data/lib/ribose/cli/util.rb +22 -0
- data/lib/ribose/cli/version.rb +2 -2
- data/lib/ribose/cli.rb +21 -2
- data/ribose-cli.gemspec +7 -1
- data/spec/acceptance/config_spec.rb +17 -0
- data/spec/acceptance/conversation_spec.rb +90 -0
- data/spec/acceptance/file_spec.rb +80 -0
- data/spec/acceptance/invitation_spec.rb +109 -0
- data/spec/acceptance/join_space_spec.rb +73 -0
- data/spec/acceptance/member_spec.rb +87 -0
- data/spec/acceptance/message_spec.rb +67 -0
- data/spec/acceptance/note_spec.rb +61 -0
- data/spec/acceptance/space_spec.rb +112 -0
- data/spec/fixtures/.riboserc +3 -0
- data/spec/ribose/cli/rcfile_spec.rb +21 -0
- data/spec/spec_helper.rb +12 -1
- data/spec/support/console_helper.rb +29 -0
- metadata +87 -5
- data/spec/ribose/cli_spec.rb +0 -4
@@ -0,0 +1,22 @@
|
|
1
|
+
require "terminal-table"
|
2
|
+
|
3
|
+
module Ribose
|
4
|
+
module CLI
|
5
|
+
module Util
|
6
|
+
def self.list(headings:, rows:)
|
7
|
+
Terminal::Table.new do |table|
|
8
|
+
table.headings = headings
|
9
|
+
table.rows = rows
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.truncate(content, length = 50)
|
14
|
+
if content && content.length > length
|
15
|
+
content = content[0..length] + "..."
|
16
|
+
end
|
17
|
+
|
18
|
+
content
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/ribose/cli/version.rb
CHANGED
data/lib/ribose/cli.rb
CHANGED
@@ -1,7 +1,26 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "ribose"
|
3
|
+
|
4
|
+
require "ribose/cli/auth"
|
5
|
+
require "ribose/cli/util"
|
1
6
|
require "ribose/cli/version"
|
7
|
+
require "ribose/cli/command"
|
2
8
|
|
3
9
|
module Ribose
|
4
|
-
module
|
5
|
-
|
10
|
+
module CLI
|
11
|
+
def self.start(arguments)
|
12
|
+
Ribose::CLI::Command.start(arguments)
|
13
|
+
rescue Ribose::Errors::Forbidden
|
14
|
+
Thor::Shell::Basic.new.say(
|
15
|
+
"Invalid: Missing API Configuration\n\n" \
|
16
|
+
"Ribose API Token & Email are required for any of the CLI operation\n" \
|
17
|
+
"You can set your API Key using `ribose config --token "" --email "" `",
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Temporary: The API Client will implement it
|
23
|
+
module Errors
|
24
|
+
class Forbidden < StandardError; end
|
6
25
|
end
|
7
26
|
end
|
data/ribose-cli.gemspec
CHANGED
@@ -6,7 +6,7 @@ require "ribose/cli/version"
|
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
8
|
spec.name = "ribose-cli"
|
9
|
-
spec.version = Ribose::
|
9
|
+
spec.version = Ribose::CLI::VERSION
|
10
10
|
spec.authors = ["Ribose Inc."]
|
11
11
|
spec.email = ["operations@ribose.com"]
|
12
12
|
|
@@ -20,8 +20,14 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
spec.bindir = "bin"
|
23
|
+
spec.executables = "ribose"
|
24
|
+
|
25
|
+
spec.add_dependency "thor", "~> 0.19.4"
|
26
|
+
spec.add_dependency "ribose", "~> 0.2.0"
|
27
|
+
spec.add_dependency "terminal-table"
|
23
28
|
|
24
29
|
spec.add_development_dependency "bundler", "~> 1.14"
|
25
30
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
31
|
spec.add_development_dependency "rspec", "~> 3.0"
|
32
|
+
spec.add_development_dependency "webmock", "~> 2.0"
|
27
33
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "Config" do
|
4
|
+
it "allows us to set token and user email" do
|
5
|
+
allow(File).to receive(:expand_path).and_return(fixtures_path)
|
6
|
+
command = %w(config --token SECRET_TOKEN --email user-one@example.com)
|
7
|
+
|
8
|
+
Ribose::CLI.start(command)
|
9
|
+
|
10
|
+
expect(Ribose::CLI::RCFile.api_token).to eq("SECRET_TOKEN")
|
11
|
+
expect(Ribose::CLI::RCFile.user_email).to eq("user-one@example.com")
|
12
|
+
end
|
13
|
+
|
14
|
+
def fixtures_path
|
15
|
+
File.expand_path("../../fixtures", __FILE__)
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "Space Conversation" do
|
4
|
+
describe "Listing conversations" do
|
5
|
+
it "retrieves the list of conversations" do
|
6
|
+
command = %w(conversation list --space-id 123456789 --format json)
|
7
|
+
|
8
|
+
stub_ribose_space_conversation_list(123456789)
|
9
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
10
|
+
|
11
|
+
expect(output).to match(/"name":"Sample conversation"/)
|
12
|
+
expect(output).to match(/"id":"741ebd0f-0959-42c5-b7d3-7749666d2f5f"/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "Retrieving a conversation" do
|
17
|
+
it "retrieves the details for a conversation" do
|
18
|
+
command = %w(conversation show --space-id 12345 --conversation-id 6789)
|
19
|
+
|
20
|
+
stub_ribose_space_conversation_fetch_api(12345, 6789)
|
21
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
22
|
+
|
23
|
+
expect(output).to match(/number_of_messages | 1/)
|
24
|
+
expect(output).to match(/name | Trips to the Mars!/)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "Adding a new conversations" do
|
29
|
+
it "creates a new conversation into a user space" do
|
30
|
+
command = %W(
|
31
|
+
conversation add
|
32
|
+
--title #{conversation.title}
|
33
|
+
--space-id #{conversation.space_id}
|
34
|
+
--tags #{conversation.tags}
|
35
|
+
)
|
36
|
+
|
37
|
+
stub__conversation_creation(conversation)
|
38
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
39
|
+
|
40
|
+
expect(output).to match(/New Conversation created!/)
|
41
|
+
expect(output).to match(/Id: ee50bb3c-ed79-4efc-821a-64926f645bfb/)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "Update an existing conversation" do
|
46
|
+
it "updates details for an existing conversation" do
|
47
|
+
command = %W(
|
48
|
+
conversation update
|
49
|
+
--conversation-id 123456789
|
50
|
+
--space-id #{conversation.space_id}
|
51
|
+
--title #{conversation.title}
|
52
|
+
--tags #{conversation.tags}
|
53
|
+
)
|
54
|
+
|
55
|
+
stub_ribose_space_conversation_update_api(
|
56
|
+
123_456_789, 123_456_789, conversation.to_h
|
57
|
+
)
|
58
|
+
|
59
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
60
|
+
|
61
|
+
expect(output).to match(/Your conversation has been updated!/)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "Remove a conversation" do
|
66
|
+
it "removes a conversation from a speace" do
|
67
|
+
command = %w(conversation remove -s 9876 --conversation-id 12345)
|
68
|
+
|
69
|
+
stub_ribose_space_conversation_remove(9876, 12345)
|
70
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
71
|
+
|
72
|
+
expect(output).to match(/The Conversation has been removed!/)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def conversation
|
77
|
+
@conversation ||= OpenStruct.new(
|
78
|
+
space_id: 123_456_789, title: "The Special Conversation", tags: "sample",
|
79
|
+
)
|
80
|
+
end
|
81
|
+
|
82
|
+
def stub__conversation_creation(conversation)
|
83
|
+
stub_ribose_space_conversation_create(
|
84
|
+
conversation.space_id,
|
85
|
+
name: conversation.title,
|
86
|
+
tag_list: conversation.tags,
|
87
|
+
space_id: conversation.space_id.to_s,
|
88
|
+
)
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "File Interface" do
|
4
|
+
describe "listing files" do
|
5
|
+
it "retrieves the list of files" do
|
6
|
+
command = %w(file list --space-id 123456 --format json)
|
7
|
+
|
8
|
+
stub_ribose_space_file_list(123456)
|
9
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
10
|
+
|
11
|
+
expect(output).to match(/"id":9896/)
|
12
|
+
expect(output).to match(/"name":"sample-file.png"/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "show" do
|
17
|
+
it "retrieves the details for a file" do
|
18
|
+
command = %w(file show --file-id 5678 --space-id 1234)
|
19
|
+
|
20
|
+
stub_ribose_space_file_fetch_api(1234, 5678)
|
21
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
22
|
+
|
23
|
+
expect(output).to match(/id | 9896/)
|
24
|
+
expect(output).to match(/name | sample-file.png/)
|
25
|
+
expect(output).to match(/content_type | image\/png/)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "adding new file" do
|
30
|
+
it "uploads the new file to user space" do
|
31
|
+
command = %W(file add --space-id 123456 #{file_attributes[:file]})
|
32
|
+
|
33
|
+
stub_ribose_space_file_upload_api(123456, file_attributes)
|
34
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
35
|
+
|
36
|
+
expect(output).to match(/sample.png added to your space!/)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "update" do
|
41
|
+
it "updates details for a space file" do
|
42
|
+
command = %W(
|
43
|
+
file update
|
44
|
+
--file-id 5678
|
45
|
+
--space-id 1234
|
46
|
+
--tags #{update_attributes[:tags]}
|
47
|
+
--file-name #{update_attributes[:file_name]}
|
48
|
+
--description #{update_attributes[:description]}
|
49
|
+
)
|
50
|
+
|
51
|
+
stub_ribose_space_file_update_api(1234, 5678, update_attributes)
|
52
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
53
|
+
|
54
|
+
expect(output).to match(/The file has been updated with new attributes/)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "remove" do
|
59
|
+
it "removes a file from a user space" do
|
60
|
+
command = %w(file remove --file-id 5678 --space-id 1234)
|
61
|
+
|
62
|
+
stub_ribose_space_file_delete_api(1234, 5678)
|
63
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
64
|
+
|
65
|
+
expect(output).to match(/The file has been removed from your space!/)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def file_attributes
|
70
|
+
{ file: sample_fixture, description: "", tag_list: "" }
|
71
|
+
end
|
72
|
+
|
73
|
+
def update_attributes
|
74
|
+
{ tags: "one, two", file_name: "new name", description: "New description" }
|
75
|
+
end
|
76
|
+
|
77
|
+
def sample_fixture
|
78
|
+
@sample_fixture ||= File.join(Ribose.root, "spec/fixtures/sample.png")
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "Space Invitation" do
|
4
|
+
describe "list" do
|
5
|
+
it "retrieves the list of space invitations" do
|
6
|
+
command = %w(invitation list)
|
7
|
+
|
8
|
+
stub_ribose_space_invitation_lis_api
|
9
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
10
|
+
|
11
|
+
expect(output).to match(/ID | Inviter | Type/)
|
12
|
+
expect(output).to match(/Doe | Invitation::ToSpace | The CLI Space/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "add" do
|
17
|
+
it "sends a space invitation to a member" do
|
18
|
+
command = %W(
|
19
|
+
invitation add
|
20
|
+
--space-id #{invitation.space_id}
|
21
|
+
--user-id #{invitation.id1}:#{invitation.role}
|
22
|
+
--email #{invitation.email1}:0 #{invitation.email2}:1
|
23
|
+
--message #{invitation.message}
|
24
|
+
)
|
25
|
+
|
26
|
+
stub_ribose_space_invitation_mass_create(
|
27
|
+
invitation.space_id, build_attr_in_stub_format(invitation)
|
28
|
+
)
|
29
|
+
|
30
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
31
|
+
|
32
|
+
expect(output).to match(/Invitation has been sent successfully!/)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "update" do
|
37
|
+
it "updates the details for an invitation" do
|
38
|
+
command = %w(invitation update --invitation-id 2468 --role-id 246)
|
39
|
+
stub_ribose_space_invitation_update_api(2468, role_id: "246")
|
40
|
+
|
41
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
42
|
+
|
43
|
+
expect(output).to match(/Space invitation has been updated!/)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "accept" do
|
48
|
+
it "allows us to accept a space invitation" do
|
49
|
+
command = %w(invitation accept --invitation-id 2468)
|
50
|
+
|
51
|
+
stub_ribose_space_invitation_update_api(2468, state: 1)
|
52
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
53
|
+
|
54
|
+
expect(output).to match(/Space invitation has been accepted!/)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "reject" do
|
59
|
+
it "allows us to reject a space invitation" do
|
60
|
+
command = %w(invitation reject --invitation-id 2468)
|
61
|
+
|
62
|
+
stub_ribose_space_invitation_update_api(2468, state: 2)
|
63
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
64
|
+
|
65
|
+
expect(output).to match(/Space invitation has been rejected!/)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "remove" do
|
70
|
+
it "removes a space invitation" do
|
71
|
+
command = %w(invitation remove --invitation-id 2468)
|
72
|
+
|
73
|
+
stub_ribose_space_invitation_cancel_api(2468)
|
74
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
75
|
+
|
76
|
+
expect(output).to match(/Space invitation has been removed!/)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def invitation
|
81
|
+
@invitation ||= OpenStruct.new(
|
82
|
+
id1: "123456",
|
83
|
+
id2: "567890",
|
84
|
+
role: "123456",
|
85
|
+
space_id: "123456789",
|
86
|
+
email1: "invitee-one@example.com",
|
87
|
+
email2: "invitee-two@example.com",
|
88
|
+
message: "Your invitation message",
|
89
|
+
)
|
90
|
+
end
|
91
|
+
|
92
|
+
# This might look compact, but the only purpose for this is to prepare
|
93
|
+
# the attributes / sequence with the one webmock would be epxecting to
|
94
|
+
# stub the api request successfully.
|
95
|
+
#
|
96
|
+
def build_attr_in_stub_format(invitation)
|
97
|
+
{
|
98
|
+
body: invitation.message,
|
99
|
+
emails: [invitation.email1, invitation.email2],
|
100
|
+
user_ids: [invitation.id1],
|
101
|
+
role_ids: {
|
102
|
+
"#{invitation.email1}": "0",
|
103
|
+
"#{invitation.email2}": "1",
|
104
|
+
"#{invitation.id1}": invitation.role,
|
105
|
+
},
|
106
|
+
space_id: invitation.space_id,
|
107
|
+
}
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "Join Space Request" do
|
4
|
+
describe "list" do
|
5
|
+
it "retrieves the list of join space requests" do
|
6
|
+
command = %w(join-space list)
|
7
|
+
|
8
|
+
stub_ribose_join_space_request_list_api
|
9
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
10
|
+
|
11
|
+
expect(output).to match(/| ID | Inviter | Type/)
|
12
|
+
expect(output).to match(/| 27743 | Jennie Doe | Invitation::ToSpace/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "show" do
|
17
|
+
it "retrieves the details for a join reqeust" do
|
18
|
+
command = %w(join-space show --request-id 2468)
|
19
|
+
|
20
|
+
stub_ribose_join_space_request_fetch_api(2468)
|
21
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
22
|
+
|
23
|
+
expect(output).to match(/state | 0/)
|
24
|
+
expect(output).to match(/id | 123456789/)
|
25
|
+
expect(output).to match(/type | Invitation::ToSpace/)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "add" do
|
30
|
+
it "creates a new join space request" do
|
31
|
+
command = %w(join-space add --space-id 1234)
|
32
|
+
|
33
|
+
stub_join_space_request_api_call(1234)
|
34
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
35
|
+
|
36
|
+
expect(output).to match(/Join space request has been sent successfully!/)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "accept" do
|
41
|
+
it "allows a user to accept a join space request" do
|
42
|
+
command = %w(join-space accept --request-id 2468)
|
43
|
+
|
44
|
+
stub_ribose_join_space_request_update(2468, state: 1)
|
45
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
46
|
+
|
47
|
+
expect(output).to match(/Join space request has been accepted!/)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "reject" do
|
52
|
+
it "allows a user to reject a join space request" do
|
53
|
+
command = %w(join-space reject --request-id 2468)
|
54
|
+
|
55
|
+
stub_ribose_join_space_request_update(2468, state: 2)
|
56
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
57
|
+
|
58
|
+
expect(output).to match(/Join space request has been rejected!/)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# This prepares the request body to match with wbmock's expected
|
63
|
+
# one to successfully stub `POST /invitations/join_space_request`
|
64
|
+
#
|
65
|
+
def stub_join_space_request_api_call(space_id, state: 0, body: "")
|
66
|
+
stub_ribose_join_space_request_create_api(
|
67
|
+
state: state,
|
68
|
+
body: body,
|
69
|
+
type: "Invitation::JoinSpaceRequest",
|
70
|
+
space_id: space_id.to_s,
|
71
|
+
)
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "Space Member" do
|
4
|
+
describe "list" do
|
5
|
+
it "retrieves the list of space members" do
|
6
|
+
command = %w(member list --space-id 123456)
|
7
|
+
|
8
|
+
stub_ribose_space_member_list(123456)
|
9
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
10
|
+
|
11
|
+
expect(output).to match(/| Name | Role Name/)
|
12
|
+
expect(output).to match(/8332-fcdaecb13e34 | John Doe | Administrator/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "add" do
|
17
|
+
it "adds a new member to a space" do
|
18
|
+
command = %W(
|
19
|
+
member add
|
20
|
+
--space-id #{invitation.space_id}
|
21
|
+
--user-id #{invitation.id1}:#{invitation.role}
|
22
|
+
--email #{invitation.email1}:0 #{invitation.email2}:1
|
23
|
+
--message #{invitation.message}
|
24
|
+
)
|
25
|
+
|
26
|
+
stub_ribose_space_invitation_mass_create(
|
27
|
+
invitation.space_id, build_attr_in_stub_format(invitation)
|
28
|
+
)
|
29
|
+
|
30
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
31
|
+
|
32
|
+
expect(output).to match(/Invitation has been sent successfully!/)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "update" do
|
37
|
+
it "updates an existing member details" do
|
38
|
+
command = %w(member update --role-id 135 --member-id 246 --space-id 1234)
|
39
|
+
|
40
|
+
stub_ribose_member_role_assign(1234, 246, "135")
|
41
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
42
|
+
|
43
|
+
expect(output).to match(/Member has been updated with new role!/)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "remove" do
|
48
|
+
it "removes an existing space member" do
|
49
|
+
command = %w(member remove --member-id 246 --space-id 1234)
|
50
|
+
|
51
|
+
stub_ribose_space_member_delete_api(1234, 246)
|
52
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
53
|
+
|
54
|
+
expect(output).to match(/The member has been removed from this space/)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def invitation
|
59
|
+
@invitation ||= OpenStruct.new(
|
60
|
+
id1: "123456",
|
61
|
+
id2: "567890",
|
62
|
+
role: "123456",
|
63
|
+
space_id: "123456789",
|
64
|
+
email1: "invitee-one@example.com",
|
65
|
+
email2: "invitee-two@example.com",
|
66
|
+
message: "Your invitation message",
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
# This might look compact, but the only purpose for this is to prepare
|
71
|
+
# the attributes / sequence with the one webmock would be epxecting to
|
72
|
+
# stub the api request successfully.
|
73
|
+
#
|
74
|
+
def build_attr_in_stub_format(invitation)
|
75
|
+
{
|
76
|
+
body: invitation.message,
|
77
|
+
emails: [invitation.email1, invitation.email2],
|
78
|
+
user_ids: [invitation.id1],
|
79
|
+
role_ids: {
|
80
|
+
"#{invitation.email1}": "0",
|
81
|
+
"#{invitation.email2}": "1",
|
82
|
+
"#{invitation.id1}": invitation.role,
|
83
|
+
},
|
84
|
+
space_id: invitation.space_id,
|
85
|
+
}
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "Conversation Messages" do
|
4
|
+
describe "listing messages" do
|
5
|
+
it "retrieves the list of messages" do
|
6
|
+
command = %w(message list -s 123456789 -c 123456789 --format json)
|
7
|
+
|
8
|
+
stub_ribose_message_list(123456789, 123456789)
|
9
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
10
|
+
|
11
|
+
expect(output).to match(/"contents":"Welcome to Ribose Space"/)
|
12
|
+
expect(output).to match(/"id":"eec38935-3070-4949-b217-878aa07db699"/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "Adding new message" do
|
17
|
+
it "allows us to add message to a conversation" do
|
18
|
+
command = %W(
|
19
|
+
message add
|
20
|
+
--space-id 123
|
21
|
+
--message-body #{message.contents}
|
22
|
+
--conversation-id #{message.conversation_id}
|
23
|
+
)
|
24
|
+
|
25
|
+
stub_ribose_message_create(123, message: message.to_h)
|
26
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
27
|
+
|
28
|
+
expect(output).to match(/Messge has been posted/)
|
29
|
+
expect(output).to match(/Id: 9af4df9f-2a30-4d66-a925-efaf45057ae4/)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "Updating a message" do
|
34
|
+
it "allows us to update a existing message" do
|
35
|
+
command = %W(
|
36
|
+
message update
|
37
|
+
--space-id 123
|
38
|
+
--message-id 456789
|
39
|
+
--message-body #{message.contents}
|
40
|
+
--conversation-id #{message.conversation_id}
|
41
|
+
)
|
42
|
+
|
43
|
+
stub_ribose_message_update(123, 456789, message: message.to_h)
|
44
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
45
|
+
|
46
|
+
expect(output).to match(/Messge has been updated!/)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "Remove a message" do
|
51
|
+
it "allows us to remove an existing message" do
|
52
|
+
command = %w(message remove -s 123 -c 456 --message-id 123456)
|
53
|
+
|
54
|
+
stub_ribose_message_remove(123, 123456, 456)
|
55
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
56
|
+
|
57
|
+
expect(output).to match(/The message has been removed!/)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def message
|
62
|
+
@message ||= OpenStruct.new(
|
63
|
+
contents: "Welcome to Ribose!",
|
64
|
+
conversation_id: "987654321",
|
65
|
+
)
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe "Space Note" do
|
4
|
+
describe "listing notes" do
|
5
|
+
it "retrieves the list of notes" do
|
6
|
+
command = %w(note list --space-id 123456789)
|
7
|
+
|
8
|
+
stub_ribose_wiki_list_api(123_456_789)
|
9
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
10
|
+
|
11
|
+
expect(output).to match(/Wiki Page One/)
|
12
|
+
expect(output).to match(/Wiki Page Two/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "retrieve a note" do
|
17
|
+
it "retrieves the details for a note" do
|
18
|
+
command = %w(note show --space-id 123456 --note-id 789012)
|
19
|
+
|
20
|
+
stub_ribose_wiki_fetch_api(123456, 789012)
|
21
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
22
|
+
|
23
|
+
expect(output).to match(/revision | 23/)
|
24
|
+
expect(output).to match(/name | Wiki Page One/)
|
25
|
+
expect(output).to match(/address | wiki-page-one/)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "adding a new note" do
|
30
|
+
it "adds a new note to a specific space" do
|
31
|
+
command = %w(note add -s 123456 --title Home --tag-list hello)
|
32
|
+
stub_ribose_wiki_create_api(123_456, tag_list: "hello", name: "Home")
|
33
|
+
|
34
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
35
|
+
|
36
|
+
expect(output).to match(/Note has been posted added! Id:/)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "update a note" do
|
41
|
+
it "updates the details for an existing note" do
|
42
|
+
command = %w(note update -s 1234 -n 5678 --title Sample)
|
43
|
+
stub_ribose_wiki_update_api(1234, 5678, name: "Sample", tag_list: "")
|
44
|
+
|
45
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
46
|
+
|
47
|
+
expect(output).to match(/Your space note has been updated!/)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "remove a note" do
|
52
|
+
it "removes a note from a specific space" do
|
53
|
+
command = %w(note remove -s 123456789 --note-id 789123456)
|
54
|
+
|
55
|
+
stub_ribose_wiki_delete_api(123456789, 789123456)
|
56
|
+
output = capture_stdout { Ribose::CLI.start(command) }
|
57
|
+
|
58
|
+
expect(output).to match(/The note has been removed!/)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|