discourse_api 0.37.0 → 0.38.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/discourse_api/api/groups.rb +7 -1
- data/lib/discourse_api/client.rb +1 -1
- data/lib/discourse_api/single_sign_on.rb +3 -2
- data/lib/discourse_api/version.rb +1 -1
- data/spec/discourse_api/api/api_key_spec.rb +10 -10
- data/spec/discourse_api/api/backups_spec.rb +3 -3
- data/spec/discourse_api/api/badges_spec.rb +5 -5
- data/spec/discourse_api/api/categories_spec.rb +8 -8
- data/spec/discourse_api/api/email_spec.rb +5 -5
- data/spec/discourse_api/api/groups_spec.rb +31 -23
- data/spec/discourse_api/api/notifications_spec.rb +3 -3
- data/spec/discourse_api/api/polls_spec.rb +7 -7
- data/spec/discourse_api/api/posts_spec.rb +7 -7
- data/spec/discourse_api/api/private_messages_spec.rb +7 -7
- data/spec/discourse_api/api/search_spec.rb +3 -3
- data/spec/discourse_api/api/site_settings_spec.rb +3 -3
- data/spec/discourse_api/api/sso_spec.rb +1 -1
- data/spec/discourse_api/api/topics_spec.rb +14 -14
- data/spec/discourse_api/api/uploads_spec.rb +2 -2
- data/spec/discourse_api/api/user_actions_spec.rb +5 -5
- data/spec/discourse_api/api/users_spec.rb +42 -42
- data/spec/discourse_api/client_spec.rb +20 -20
- data/spec/fixtures/members_2.json +437 -0
- data/spec/spec_helper.rb +4 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 359440c0d7810ba745d422cb97b7465e55cb65d3abb145c7597f511d13e77609
|
4
|
+
data.tar.gz: 7be49a42e09f7d16c5e4ad564b57305c2f8eb17c78ed8781a1b19bf1645564b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07ae95153a40f0b84fa64d439608a403e47ad46d75bb1f201364f621101158048345160725733d21540288c0588ed4fdbf3a43a7af3b2df969b1347fa2c9a91f
|
7
|
+
data.tar.gz: 0e58fa5071debb6d6d62035c48c9494ee0c811ed8097dd147745a6aeba85fe06a6c8b699ed943c56d8a88af9c33c51d2a59563355c81324b41cd4aec5533fca5
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
|
+
## [0.38.0] - 2019-10-18
|
6
|
+
### Added
|
7
|
+
- Allow setting locale in SingleSignOn
|
8
|
+
- Optional param to group memebrs to include owners as well as members
|
9
|
+
|
5
10
|
## [0.37.0] - 2019-09-23
|
6
11
|
### Added
|
7
12
|
- user-badges endpoint for full badges list
|
@@ -107,12 +107,18 @@ module DiscourseApi
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def group_members(group_name, params = {})
|
110
|
+
options = params
|
110
111
|
params = API.params(params)
|
111
112
|
.optional(:offset, :limit)
|
112
113
|
.default(offset: 0, limit: 100)
|
113
114
|
.to_h
|
114
115
|
response = get("/groups/#{group_name}/members.json", params)
|
115
|
-
|
116
|
+
|
117
|
+
if options[:all] == true
|
118
|
+
response.body
|
119
|
+
else
|
120
|
+
response.body['members']
|
121
|
+
end
|
116
122
|
end
|
117
123
|
|
118
124
|
def group_set_user_notification_level(group, user_id, notification_level)
|
data/lib/discourse_api/client.rb
CHANGED
@@ -140,7 +140,7 @@ module DiscourseApi
|
|
140
140
|
response = connection.send(method.to_sym, path, params)
|
141
141
|
handle_error(response)
|
142
142
|
response.env
|
143
|
-
rescue Faraday::
|
143
|
+
rescue Faraday::ClientError, JSON::ParserError
|
144
144
|
raise DiscourseApi::Error
|
145
145
|
end
|
146
146
|
|
@@ -7,9 +7,10 @@ module DiscourseApi
|
|
7
7
|
class SingleSignOn
|
8
8
|
ACCESSORS = [:nonce, :name, :username, :email, :avatar_url, :avatar_force_update, :require_activation,
|
9
9
|
:bio, :external_id, :return_sso_url, :admin, :moderator, :suppress_welcome_message, :title,
|
10
|
-
:add_groups, :remove_groups, :groups]
|
10
|
+
:add_groups, :remove_groups, :groups, :locale, :locale_force_update]
|
11
11
|
FIXNUMS = []
|
12
|
-
BOOLS = [:avatar_force_update, :admin, :moderator, :require_activation, :suppress_welcome_message
|
12
|
+
BOOLS = [:avatar_force_update, :admin, :moderator, :require_activation, :suppress_welcome_message,
|
13
|
+
:locale_force_update]
|
13
14
|
ARRAYS = [:groups]
|
14
15
|
#NONCE_EXPIRY_TIME = 10.minutes # minutes is a rails method and is causing an error. Is this needed in the api?
|
15
16
|
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe DiscourseApi::API::ApiKey do
|
4
4
|
subject {
|
5
5
|
DiscourseApi::Client.new(
|
6
|
-
"
|
6
|
+
"#{host}",
|
7
7
|
"test_d7fd0429940",
|
8
8
|
"test_user"
|
9
9
|
)
|
@@ -11,14 +11,14 @@ describe DiscourseApi::API::ApiKey do
|
|
11
11
|
|
12
12
|
describe "#api" do
|
13
13
|
before do
|
14
|
-
url = "
|
14
|
+
url = "#{host}/admin/api.json"
|
15
15
|
stub_get(url).to_return(body: fixture("api.json"),
|
16
16
|
headers: { content_type: "application/json" })
|
17
17
|
end
|
18
18
|
|
19
19
|
it "requests the correct resource" do
|
20
20
|
subject.api
|
21
|
-
url = "
|
21
|
+
url = "#{host}/admin/api.json"
|
22
22
|
expect(a_get(url)).to have_been_made
|
23
23
|
end
|
24
24
|
|
@@ -32,7 +32,7 @@ describe DiscourseApi::API::ApiKey do
|
|
32
32
|
|
33
33
|
describe "#generate_user_api_key" do
|
34
34
|
before do
|
35
|
-
url = "
|
35
|
+
url = "#{host}/admin/users/2/generate_api_key.json"
|
36
36
|
stub_post(url).to_return(body: fixture("generate_api_key.json"),
|
37
37
|
headers: { content_type: "application/json" })
|
38
38
|
end
|
@@ -46,7 +46,7 @@ describe DiscourseApi::API::ApiKey do
|
|
46
46
|
|
47
47
|
describe "#revoke_user_api_key" do
|
48
48
|
before do
|
49
|
-
url = "
|
49
|
+
url = "#{host}/admin/users/2/revoke_api_key.json"
|
50
50
|
stub_delete(url).to_return(body: "",
|
51
51
|
headers: { content_type: "application/json" })
|
52
52
|
end
|
@@ -59,7 +59,7 @@ describe DiscourseApi::API::ApiKey do
|
|
59
59
|
|
60
60
|
describe "#generate_master_key" do
|
61
61
|
before do
|
62
|
-
url = "
|
62
|
+
url = "#{host}/admin/api/key"
|
63
63
|
stub_post(url).to_return(body: fixture("generate_master_key.json"),
|
64
64
|
headers: { content_type: "application/json" })
|
65
65
|
end
|
@@ -74,14 +74,14 @@ describe DiscourseApi::API::ApiKey do
|
|
74
74
|
|
75
75
|
describe "#revoke_api_key" do
|
76
76
|
before do
|
77
|
-
url = "
|
77
|
+
url = "#{host}/admin/api/key?id=10"
|
78
78
|
stub_delete(url).to_return(body: "",
|
79
79
|
headers: { content_type: "application/json" })
|
80
80
|
end
|
81
81
|
|
82
82
|
it "requests the correct resource" do
|
83
83
|
subject.revoke_api_key(10)
|
84
|
-
url = "
|
84
|
+
url = "#{host}/admin/api/key?id=10"
|
85
85
|
expect(a_delete(url)).to have_been_made
|
86
86
|
end
|
87
87
|
|
@@ -93,14 +93,14 @@ describe DiscourseApi::API::ApiKey do
|
|
93
93
|
|
94
94
|
describe "#regenerate_api_key" do
|
95
95
|
before do
|
96
|
-
url = "
|
96
|
+
url = "#{host}/admin/api/key"
|
97
97
|
stub_put(url).to_return(body: fixture("regenerate_api_key.json"),
|
98
98
|
headers: { content_type: "application/json" })
|
99
99
|
end
|
100
100
|
|
101
101
|
it "requests the correct resource" do
|
102
102
|
subject.regenerate_api_key(10)
|
103
|
-
url = "
|
103
|
+
url = "#{host}/admin/api/key"
|
104
104
|
expect(a_put(url)).to have_been_made
|
105
105
|
end
|
106
106
|
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DiscourseApi::API::Backups do
|
4
|
-
subject { DiscourseApi::Client.new("
|
4
|
+
subject { DiscourseApi::Client.new("#{host}", "test_d7fd0429940", "test_user" )}
|
5
5
|
|
6
6
|
describe "#backups" do
|
7
7
|
before do
|
8
|
-
stub_get("
|
8
|
+
stub_get("#{host}/admin/backups.json").to_return(body: fixture("backups.json"), headers: { content_type: "application/json" })
|
9
9
|
end
|
10
10
|
|
11
11
|
it "requests the correct resource" do
|
12
12
|
subject.backups
|
13
|
-
expect(a_get("
|
13
|
+
expect(a_get("#{host}/admin/backups.json")).to have_been_made
|
14
14
|
end
|
15
15
|
|
16
16
|
it "returns the requested backups" do
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DiscourseApi::API::Badges do
|
4
|
-
subject { DiscourseApi::Client.new("
|
4
|
+
subject { DiscourseApi::Client.new("#{host}", "test_d7fd0429940", "test_user" )}
|
5
5
|
|
6
6
|
describe "#badges" do
|
7
7
|
before do
|
8
|
-
stub_get("
|
8
|
+
stub_get("#{host}/admin/badges.json").to_return(body: fixture("badges.json"), headers: { content_type: "application/json" })
|
9
9
|
end
|
10
10
|
|
11
11
|
it "requests the correct resource" do
|
12
12
|
subject.badges
|
13
|
-
expect(a_get("
|
13
|
+
expect(a_get("#{host}/admin/badges.json")).to have_been_made
|
14
14
|
end
|
15
15
|
|
16
16
|
it "returns the requested badges" do
|
@@ -22,12 +22,12 @@ describe DiscourseApi::API::Badges do
|
|
22
22
|
|
23
23
|
describe "#user-badges" do
|
24
24
|
before do
|
25
|
-
stub_get("
|
25
|
+
stub_get("#{host}/user-badges/test_user.json").to_return(body: fixture("user_badges.json"), headers: { content_type: "application/json" })
|
26
26
|
end
|
27
27
|
|
28
28
|
it "requests the correct resource" do
|
29
29
|
subject.user_badges('test_user')
|
30
|
-
expect(a_get("
|
30
|
+
expect(a_get("#{host}/user-badges/test_user.json")).to have_been_made
|
31
31
|
end
|
32
32
|
|
33
33
|
it "returns the requested user badges" do
|
@@ -1,17 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DiscourseApi::API::Categories do
|
4
|
-
subject { DiscourseApi::Client.new("
|
4
|
+
subject { DiscourseApi::Client.new("#{host}", "test_d7fd0429940", "test_user" )}
|
5
5
|
|
6
6
|
describe "#categories" do
|
7
7
|
before do
|
8
|
-
stub_get("
|
8
|
+
stub_get("#{host}/categories.json")
|
9
9
|
.to_return(body: fixture("categories.json"), headers: { content_type: "application/json" })
|
10
10
|
end
|
11
11
|
|
12
12
|
it "requests the correct resource" do
|
13
13
|
subject.categories
|
14
|
-
expect(a_get("
|
14
|
+
expect(a_get("#{host}/categories.json")).to have_been_made
|
15
15
|
end
|
16
16
|
|
17
17
|
it "returns the requested categories" do
|
@@ -29,7 +29,7 @@ describe DiscourseApi::API::Categories do
|
|
29
29
|
|
30
30
|
describe '#category_latest_topics' do
|
31
31
|
before do
|
32
|
-
stub_get("
|
32
|
+
stub_get("#{host}/c/category-slug/l/latest.json")
|
33
33
|
.to_return(body: fixture("category_latest_topics.json"), headers: { content_type: "application/json" })
|
34
34
|
end
|
35
35
|
|
@@ -41,7 +41,7 @@ describe DiscourseApi::API::Categories do
|
|
41
41
|
|
42
42
|
describe '#category_top_topics' do
|
43
43
|
before do
|
44
|
-
stub_get("
|
44
|
+
stub_get("#{host}/c/category-slug/l/top.json")
|
45
45
|
.to_return(
|
46
46
|
body: fixture("category_topics.json"),
|
47
47
|
headers: { content_type: "application/json" }
|
@@ -56,7 +56,7 @@ describe DiscourseApi::API::Categories do
|
|
56
56
|
|
57
57
|
describe '#category_new_topics' do
|
58
58
|
before do
|
59
|
-
stub_get("
|
59
|
+
stub_get("#{host}/c/category-slug/l/new.json")
|
60
60
|
.to_return(
|
61
61
|
body: fixture("category_topics.json"),
|
62
62
|
headers: { content_type: "application/json" }
|
@@ -71,14 +71,14 @@ describe DiscourseApi::API::Categories do
|
|
71
71
|
|
72
72
|
describe '#category_new_category' do
|
73
73
|
before do
|
74
|
-
stub_post("
|
74
|
+
stub_post("#{host}/categories")
|
75
75
|
subject.create_category(name: "test_category", color: "283890", text_color: "FFFFFF",
|
76
76
|
description: "This is a description",
|
77
77
|
permissions: {"group_1" => 1, "admins" => 1})
|
78
78
|
end
|
79
79
|
|
80
80
|
it "makes a create category request" do
|
81
|
-
expect(a_post("
|
81
|
+
expect(a_post("#{host}/categories").with(body:
|
82
82
|
"color=283890&description=This+is+a+description&name=test_category&parent_category_id&permissions%5Badmins%5D=1&permissions%5Bgroup_1%5D=1&text_color=FFFFFF")
|
83
83
|
).to have_been_made
|
84
84
|
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DiscourseApi::API::Email do
|
4
|
-
subject { DiscourseApi::Client.new("
|
4
|
+
subject { DiscourseApi::Client.new("#{host}", "test_d7fd0429940", "test_user" )}
|
5
5
|
|
6
6
|
describe "#email_settings" do
|
7
7
|
before do
|
8
|
-
stub_get("
|
8
|
+
stub_get("#{host}/admin/email.json").to_return(body: fixture("email_settings.json"), headers: { content_type: "application/json" })
|
9
9
|
end
|
10
10
|
|
11
11
|
it "requests the correct resource" do
|
12
12
|
subject.email_settings
|
13
|
-
expect(a_get("
|
13
|
+
expect(a_get("#{host}/admin/email.json")).to have_been_made
|
14
14
|
end
|
15
15
|
|
16
16
|
it "returns the requested settings" do
|
@@ -23,12 +23,12 @@ describe DiscourseApi::API::Email do
|
|
23
23
|
|
24
24
|
describe "#list_email_all" do
|
25
25
|
before do
|
26
|
-
stub_get("
|
26
|
+
stub_get("#{host}/admin/email/all.json").to_return(body: fixture("email_list_all.json"), headers: { content_type: "application/json" })
|
27
27
|
end
|
28
28
|
|
29
29
|
it "requests the correct resource" do
|
30
30
|
subject.list_email('all')
|
31
|
-
expect(a_get("
|
31
|
+
expect(a_get("#{host}/admin/email/all.json")).to have_been_made
|
32
32
|
end
|
33
33
|
|
34
34
|
it "returns all email" do
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DiscourseApi::API::Groups do
|
4
|
-
subject { DiscourseApi::Client.new("
|
4
|
+
subject { DiscourseApi::Client.new("#{host}", "test_d7fd0429940", "test_user" )}
|
5
5
|
|
6
6
|
describe "#groups" do
|
7
7
|
before do
|
8
|
-
stub_get("
|
8
|
+
stub_get("#{host}/groups.json").to_return(body: fixture("groups.json"), headers: { content_type: "application/json" })
|
9
9
|
end
|
10
10
|
|
11
11
|
it "requests the correct resource" do
|
12
12
|
subject.groups
|
13
|
-
expect(a_get("
|
13
|
+
expect(a_get("#{host}/groups.json")).to have_been_made
|
14
14
|
end
|
15
15
|
|
16
16
|
it "returns the requested groups" do
|
@@ -20,65 +20,65 @@ describe DiscourseApi::API::Groups do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "returns a single group" do
|
23
|
-
stub_get("
|
23
|
+
stub_get("#{host}/groups/some-group.json").to_return(body: fixture("group.json"), headers: { content_type: "application/json" })
|
24
24
|
group = subject.group('some-group')
|
25
25
|
expect(group['basic_group']).to be_a Hash
|
26
26
|
end
|
27
27
|
|
28
28
|
it "create new groups" do
|
29
|
-
stub_post("
|
29
|
+
stub_post("#{host}/admin/groups")
|
30
30
|
subject.create_group(name: "test_group")
|
31
31
|
params = escape_params("group[name]" => "test_group", "group[visibility_level]" => 0)
|
32
|
-
expect(a_post("
|
32
|
+
expect(a_post("#{host}/admin/groups").
|
33
33
|
with(body: params)
|
34
34
|
).to have_been_made
|
35
35
|
end
|
36
36
|
|
37
37
|
it "update an existing group" do
|
38
|
-
stub_put("
|
38
|
+
stub_put("#{host}/groups/42")
|
39
39
|
subject.update_group(42, name: "test_group")
|
40
40
|
params = escape_params("group[name]" => "test_group", "group[visibility_level]" => 0)
|
41
|
-
expect(a_put("
|
41
|
+
expect(a_put("#{host}/groups/42").
|
42
42
|
with(body: params)
|
43
43
|
).to have_been_made
|
44
44
|
end
|
45
45
|
|
46
46
|
describe "add members" do
|
47
47
|
before do
|
48
|
-
stub_request(:put, "
|
48
|
+
stub_request(:put, "#{host}/admin/groups/123/members.json")
|
49
49
|
end
|
50
50
|
|
51
51
|
it "adds a single member by username" do
|
52
52
|
subject.group_add(123, username: "sam")
|
53
|
-
expect(a_request(:put, "
|
53
|
+
expect(a_request(:put, "#{host}/admin/groups/123/members.json").
|
54
54
|
with(body: {usernames: "sam"})
|
55
55
|
).to have_been_made
|
56
56
|
end
|
57
57
|
|
58
58
|
it "adds an array of members by username" do
|
59
59
|
subject.group_add(123, usernames: ["sam", "jeff"])
|
60
|
-
expect(a_request(:put, "
|
60
|
+
expect(a_request(:put, "#{host}/admin/groups/123/members.json").
|
61
61
|
with(body: {usernames: "sam,jeff"})
|
62
62
|
).to have_been_made
|
63
63
|
end
|
64
64
|
|
65
65
|
it "adds a single member by user_id" do
|
66
66
|
subject.group_add(123, user_id: 456)
|
67
|
-
expect(a_request(:put, "
|
67
|
+
expect(a_request(:put, "#{host}/admin/groups/123/members.json").
|
68
68
|
with(body: {user_ids: "456"})
|
69
69
|
).to have_been_made
|
70
70
|
end
|
71
71
|
|
72
72
|
it "adds an array of members by user_id" do
|
73
73
|
subject.group_add(123, user_id: [123, 456])
|
74
|
-
expect(a_request(:put, "
|
74
|
+
expect(a_request(:put, "#{host}/admin/groups/123/members.json").
|
75
75
|
with(body: {user_ids: "123,456"})
|
76
76
|
).to have_been_made
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
80
|
describe "remove members" do
|
81
|
-
let(:url) { "
|
81
|
+
let(:url) { "#{host}/admin/groups/123/members.json?usernames=sam" }
|
82
82
|
|
83
83
|
before do
|
84
84
|
stub_delete(url)
|
@@ -91,29 +91,37 @@ describe DiscourseApi::API::Groups do
|
|
91
91
|
end
|
92
92
|
|
93
93
|
describe "group members" do
|
94
|
-
before do
|
95
|
-
stub_get("http://localhost:3000/groups/mygroup/members.json?limit=100&offset=0").to_return(body: fixture("members_0.json"), headers: { content_type: "application/json" })
|
96
|
-
stub_get("http://localhost:3000/groups/mygroup/members.json?limit=100&offset=100").to_return(body: fixture("members_1.json"), headers: { content_type: "application/json" })
|
97
|
-
end
|
98
|
-
|
99
94
|
it "list members" do
|
95
|
+
stub_get("#{host}/groups/mygroup/members.json?limit=100&offset=0").to_return(body: fixture("members_0.json"), headers: { content_type: "application/json" })
|
96
|
+
stub_get("#{host}/groups/mygroup/members.json?limit=100&offset=100").to_return(body: fixture("members_1.json"), headers: { content_type: "application/json" })
|
100
97
|
members = subject.group_members('mygroup')
|
101
|
-
expect(a_get("
|
98
|
+
expect(a_get("#{host}/groups/mygroup/members.json?limit=100&offset=0")).to have_been_made
|
102
99
|
expect(members.length).to eq(100)
|
103
100
|
members = subject.group_members('mygroup', offset: 100)
|
104
|
-
expect(a_get("
|
101
|
+
expect(a_get("#{host}/groups/mygroup/members.json?limit=100&offset=100")).to have_been_made
|
105
102
|
expect(members.length).to eq(90)
|
106
103
|
end
|
104
|
+
|
105
|
+
context "with :all params" do
|
106
|
+
it "lists members and owners" do
|
107
|
+
stub_get("#{host}/groups/mygroup/members.json?limit=100&offset=0").to_return(body: fixture("members_2.json"), headers: { content_type: "application/json" })
|
108
|
+
member_data = subject.group_members('mygroup', all: true)
|
109
|
+
expect(a_get("#{host}/groups/mygroup/members.json?limit=100&offset=0")).to have_been_made
|
110
|
+
expect(member_data["members"].length).to eq(100)
|
111
|
+
expect(member_data["owners"].length).to eq(7)
|
112
|
+
expect(member_data.keys.sort).to eq(["members", "meta", "owners"])
|
113
|
+
end
|
114
|
+
end
|
107
115
|
end
|
108
116
|
|
109
117
|
describe "group user notification level" do
|
110
118
|
before do
|
111
|
-
stub_post("
|
119
|
+
stub_post("#{host}/groups/mygroup/notifications?user_id=77¬ification_level=3")
|
112
120
|
end
|
113
121
|
|
114
122
|
it "updates user's notification level for group" do
|
115
123
|
subject.group_set_user_notification_level("mygroup", 77, 3)
|
116
|
-
expect(a_post("
|
124
|
+
expect(a_post("#{host}/groups/mygroup/notifications?user_id=77¬ification_level=3"))
|
117
125
|
.to have_been_made
|
118
126
|
end
|
119
127
|
end
|