Skip to content

Commit 1ee8cc3

Browse files
committed
a bunch more tests and a bug fix
had to clear path_prefix from api scope. It needs a unique combination with host, so we can't just duplicate them verbatim.
1 parent 3d65eb8 commit 1ee8cc3

7 files changed

Lines changed: 156 additions & 0 deletions

File tree

src/api-umbrella/admin-ui/app/models/api-scope.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class ApiScope extends Model.extend(Validations) {
3535
static urlRoot = '/api-umbrella/v1/api_scopes';
3636
static singlePayloadKey = 'api_scope';
3737
static arrayPayloadKey = 'data';
38+
static duplicateExclude = ['pathPrefix'];
3839

3940
@attr()
4041
name;

test/admin_ui/test_admin_groups.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,11 @@ def test_duplicate_creates_new_record_with_copied_data
104104
assert_equal("Source Group For Duplicate", source.name, "source name unchanged")
105105
assert_equal(source_api_scope_ids, source.api_scope_ids.sort, "source scopes unchanged")
106106
end
107+
108+
def test_duplicate_link_hidden_on_new_form
109+
admin_login
110+
visit "/admin/#/admin_groups/new"
111+
assert_field("Group Name")
112+
refute_selector("a.duplicate-action")
113+
end
107114
end

test/admin_ui/test_admins.rb

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,45 @@ def test_non_admin_manager_views_own_profile
9999
assert_text(admin.authentication_token)
100100
refute_button("Save")
101101
end
102+
103+
def test_duplicate_creates_new_record_with_email_cleared
104+
group = FactoryBot.create(:admin_group, :name => "Group For Duplicate")
105+
source = FactoryBot.create(:limited_admin, :username => "source.admin@example.com", :groups => [group])
106+
source_id = source.id
107+
source_username = source.username
108+
source_email = source.email
109+
source_group_ids = source.group_ids.sort
110+
111+
admin_login
112+
visit "/admin/#/admins/#{source.id}/edit"
113+
assert_field("Email", :with => "source.admin@example.com")
114+
115+
find("a.duplicate-action", :text => /Duplicate Admin/).click
116+
117+
assert_current_path %r{/admin/#/admins/new\?duplicate_id=#{source.id}}, :url => true
118+
assert_text("Duplicated from")
119+
assert_field("Email", :with => "")
120+
121+
fill_in("Email", :with => "duplicate.admin@example.com")
122+
click_button("Save")
123+
assert_text("Successfully saved the admin")
124+
125+
duplicate = Admin.where(:username => "duplicate.admin@example.com").order(:created_at => :desc).first
126+
refute_nil(duplicate, "duplicate admin was created")
127+
refute_equal(source_id, duplicate.id, "duplicate has fresh id")
128+
refute_equal(source_username, duplicate.username, "duplicate has fresh username")
129+
refute_equal(source_email, duplicate.email, "duplicate has fresh email")
130+
assert_equal(source_group_ids, duplicate.group_ids.sort, "duplicate references same groups as source")
131+
132+
source.reload
133+
assert_equal(source_username, source.username, "source username unchanged")
134+
assert_equal(source_email, source.email, "source email unchanged")
135+
end
136+
137+
def test_duplicate_link_hidden_on_new_form
138+
admin_login
139+
visit "/admin/#/admins/new"
140+
assert_text("Email")
141+
refute_selector("a.duplicate-action")
142+
end
102143
end

test/admin_ui/test_api_scopes.rb

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,45 @@ def test_update
4949
assert_equal("2.example.com", api_scope.host)
5050
assert_equal("/2/", api_scope.path_prefix)
5151
end
52+
53+
def test_duplicate_creates_new_record_with_path_prefix_cleared
54+
source = FactoryBot.create(:api_scope, :name => "Source Scope For Duplicate", :host => "source.example.com", :path_prefix => "/source/")
55+
source_id = source.id
56+
source_host = source.host
57+
source_path_prefix = source.path_prefix
58+
59+
admin_login
60+
visit "/admin/#/api_scopes/#{source.id}/edit"
61+
assert_field("Name", :with => "Source Scope For Duplicate")
62+
63+
find("a.duplicate-action", :text => /Duplicate API Scope/).click
64+
65+
assert_current_path %r{/admin/#/api_scopes/new\?duplicate_id=#{source.id}}, :url => true
66+
assert_text("Duplicated from Source Scope For Duplicate")
67+
assert_field("Name", :with => "Source Scope For Duplicate")
68+
assert_field("Host", :with => "source.example.com")
69+
assert_field("Path Prefix", :with => "")
70+
71+
fill_in("Name", :with => "Duplicate Scope For Duplicate")
72+
fill_in("Path Prefix", :with => "/duplicate/")
73+
click_button("Save")
74+
assert_text("Successfully saved")
75+
76+
duplicate = ApiScope.where(:name => "Duplicate Scope For Duplicate").order(:created_at => :desc).first
77+
refute_nil(duplicate, "duplicate scope was created")
78+
refute_equal(source_id, duplicate.id, "duplicate has fresh id")
79+
assert_equal(source_host, duplicate.host, "host preserved")
80+
assert_equal("/duplicate/", duplicate.path_prefix, "duplicate has new path_prefix")
81+
82+
source.reload
83+
assert_equal("Source Scope For Duplicate", source.name, "source name unchanged")
84+
assert_equal(source_path_prefix, source.path_prefix, "source path_prefix unchanged")
85+
end
86+
87+
def test_duplicate_link_hidden_on_new_form
88+
admin_login
89+
visit "/admin/#/api_scopes/new"
90+
assert_field("Name")
91+
refute_selector("a.duplicate-action")
92+
end
5293
end

test/admin_ui/test_api_users.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,11 @@ def test_duplicate_creates_new_record_with_email_cleared
127127
assert_equal(source_email, source.email, "source email unchanged")
128128
assert_equal(source_api_key, source.api_key, "source api_key unchanged")
129129
end
130+
131+
def test_duplicate_link_hidden_on_new_form
132+
admin_login
133+
visit "/admin/#/api_users/new"
134+
assert_field("E-mail")
135+
refute_selector("a.duplicate-action")
136+
end
130137
end

test/admin_ui/test_apis.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,4 +499,11 @@ def test_duplicate_creates_new_record_with_copied_data
499499
assert_equal("Source Backend Test", source.name, "source name unchanged")
500500
assert_equal(source_server_ids.sort, source.servers.map(&:id).sort, "source servers unchanged")
501501
end
502+
503+
def test_duplicate_link_hidden_on_new_form
504+
admin_login
505+
visit "/admin/#/apis/new"
506+
assert_field("Name")
507+
refute_selector("a.duplicate-action")
508+
end
502509
end
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
require_relative "../test_helper"
2+
3+
class Test::AdminUi::TestWebsiteBackends < Minitest::Capybara::Test
4+
include Capybara::Screenshot::MiniTestPlugin
5+
include ApiUmbrellaTestHelpers::AdminAuth
6+
include ApiUmbrellaTestHelpers::Setup
7+
8+
def setup
9+
super
10+
setup_server
11+
end
12+
13+
def test_duplicate_creates_new_record_with_copied_data
14+
source = FactoryBot.create(:website_backend, :frontend_host => "source.example.com", :server_host => "backend.example.com", :server_port => 8080)
15+
source_id = source.id
16+
source_frontend_host = source.frontend_host
17+
source_server_host = source.server_host
18+
source_server_port = source.server_port
19+
20+
admin_login
21+
visit "/admin/#/website_backends/#{source.id}/edit"
22+
assert_field("Frontend Host", :with => "source.example.com")
23+
24+
find("a.duplicate-action", :text => /Duplicate Website Backend/).click
25+
26+
assert_current_path %r{/admin/#/website_backends/new\?duplicate_id=#{source.id}}, :url => true
27+
assert_text("Duplicated from")
28+
assert_field("Frontend Host", :with => "source.example.com")
29+
assert_field("Backend Server", :with => "backend.example.com")
30+
assert_field("Backend Port", :with => "8080")
31+
32+
fill_in("Frontend Host", :with => "duplicate.example.com")
33+
click_button("Save")
34+
assert_text("Successfully saved")
35+
36+
duplicate = WebsiteBackend.where(:frontend_host => "duplicate.example.com").order(:created_at => :desc).first
37+
refute_nil(duplicate, "duplicate website-backend was created")
38+
refute_equal(source_id, duplicate.id, "duplicate has fresh id")
39+
assert_equal(source_server_host, duplicate.server_host, "server_host preserved")
40+
assert_equal(source_server_port, duplicate.server_port, "server_port preserved")
41+
42+
source.reload
43+
assert_equal(source_frontend_host, source.frontend_host, "source frontend_host unchanged")
44+
end
45+
46+
def test_duplicate_link_hidden_on_new_form
47+
admin_login
48+
visit "/admin/#/website_backends/new"
49+
assert_field("Frontend Host")
50+
refute_selector("a.duplicate-action")
51+
end
52+
end

0 commit comments

Comments
 (0)