summaryrefslogtreecommitdiff
path: root/app/models/concerns
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2019-02-26 14:03:42 +0000
committerKamil Trzciński <ayufan@ayufan.eu>2019-02-26 14:03:42 +0000
commitc9125c4786970fc3c3745c7ea7bff45ef7a62e7d (patch)
tree38bd564113590665646b974dcbdf91f51b3a4b88 /app/models/concerns
parentc1d8f8a41042ac7abb2916206e8a411e82af442e (diff)
downloadgitlab-ce-c9125c4786970fc3c3745c7ea7bff45ef7a62e7d.tar.gz
Add Maskable concern for CI variables
This adds a concern that abstracts the concept of masking a variable, including the RegEx for validation.
Diffstat (limited to 'app/models/concerns')
-rw-r--r--app/models/concerns/has_variable.rb6
-rw-r--r--app/models/concerns/maskable.rb22
2 files changed, 25 insertions, 3 deletions
diff --git a/app/models/concerns/has_variable.rb b/app/models/concerns/has_variable.rb
index dfbe413a878..2ec42a1029b 100644
--- a/app/models/concerns/has_variable.rb
+++ b/app/models/concerns/has_variable.rb
@@ -21,9 +21,9 @@ module HasVariable
def key=(new_key)
super(new_key.to_s.strip)
end
+ end
- def to_runner_variable
- { key: key, value: value, public: false }
- end
+ def to_runner_variable
+ { key: key, value: value, public: false }
end
end
diff --git a/app/models/concerns/maskable.rb b/app/models/concerns/maskable.rb
new file mode 100644
index 00000000000..8793f0ec965
--- /dev/null
+++ b/app/models/concerns/maskable.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module Maskable
+ extend ActiveSupport::Concern
+
+ # * Single line
+ # * No escape characters
+ # * No variables
+ # * No spaces
+ # * Minimal length of 8 characters
+ # * Absolutely no fun is allowed
+ REGEX = /\A\w{8,}\z/
+
+ included do
+ validates :masked, inclusion: { in: [true, false] }
+ validates :value, format: { with: REGEX }, if: :masked?
+ end
+
+ def to_runner_variable
+ super.merge(masked: masked?)
+ end
+end