Skip to content

Commit 105a070

Browse files
authored
Issue 333 don't allow sites starting with beacon (#385)
* feat: Check if it is valid name Signed-off-by: Eduardo Borsa <borsa.dado@gmail.com> * feat: raises if name is invalid Signed-off-by: Eduardo Borsa <borsa.dado@gmail.com> --------- Signed-off-by: Eduardo Borsa <borsa.dado@gmail.com>
1 parent b44661d commit 105a070

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

lib/beacon/types/site.ex

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ defmodule Beacon.Types.Site do
3636

3737
def valid?(_site), do: false
3838

39+
def valid_name?(site) when is_atom(site) do
40+
valid_name?(Atom.to_string(site))
41+
end
42+
43+
def valid_name?(site) when is_binary(site) do
44+
not String.starts_with?(site, "beacon_")
45+
end
46+
3947
@doc false
4048
def safe_to_atom(site) when is_atom(site), do: site
4149
def safe_to_atom(site) when is_binary(site), do: String.to_existing_atom(site)

lib/mix/tasks/install.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ defmodule Mix.Tasks.Beacon.Install do
338338

339339
cond do
340340
!Beacon.Types.Site.valid?(site) -> raise_with_help!("Invalid site name. It should not contain special characters.")
341+
!Beacon.Types.Site.valid_name?(site) -> raise_with_help!("Invalid site name. The site name can't start with \"beacon_\".")
341342
:default -> options
342343
end
343344
end

test/beacon/types/site_test.exs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,14 @@ defmodule Beacon.Types.SiteTest do
2424
assert Site.load("site") == {:ok, :site}
2525
assert Site.load(0) == :error
2626
end
27+
28+
describe "valid_name?/1" do
29+
test "SUCCESS: Return TRUE if it is a valid name" do
30+
assert Site.valid_name?("some_name")
31+
end
32+
33+
test "SUCCESS: Return FALSE if it is an invalid name" do
34+
refute Site.valid_name?("beacon_some_name")
35+
end
36+
end
2737
end

test/mix/tasks/install_test.exs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,11 @@ defmodule Mix.Tasks.Beacon.InstallTest do
443443
Install.run(["--site", "my@site!"])
444444
end
445445

446+
# Invalid site name
447+
assert_raise Mix.Error, fn ->
448+
Install.run(["--site", "beacon_"])
449+
end
450+
446451
# Invalid option
447452
assert_raise OptionParser.ParseError, ~r/1 error found!\n--invalid-argument : Unknown option/, fn ->
448453
Install.run(["--invalid-argument", "invalid"])

0 commit comments

Comments
 (0)