Ajout de MetadataMapping
Base d'éléments de comparaison pour extraire des données à utiliser dans les Email (nom de serveur, nom de client…).
This commit is contained in:
parent
8b59ee3b91
commit
e4585b92e3
3
app/assets/stylesheets/metadata_mappings.scss
Normal file
3
app/assets/stylesheets/metadata_mappings.scss
Normal file
|
@ -0,0 +1,3 @@
|
|||
// Place all the styles related to the metadata_mappings controller here.
|
||||
// They will automatically be included in application.css.
|
||||
// You can use Sass (SCSS) here: https://sass-lang.com/
|
74
app/controllers/metadata_mappings_controller.rb
Normal file
74
app/controllers/metadata_mappings_controller.rb
Normal file
|
@ -0,0 +1,74 @@
|
|||
class MetadataMappingsController < ApplicationController
|
||||
before_action :set_metadata_mapping, only: [:show, :edit, :update, :destroy]
|
||||
|
||||
# GET /metadata_mappings
|
||||
# GET /metadata_mappings.json
|
||||
def index
|
||||
@metadata_mappings = MetadataMapping.all.order(entity: :asc, server: :asc, input: :asc)
|
||||
end
|
||||
|
||||
# GET /metadata_mappings/1
|
||||
# GET /metadata_mappings/1.json
|
||||
def show
|
||||
end
|
||||
|
||||
# GET /metadata_mappings/new
|
||||
def new
|
||||
@metadata_mapping = MetadataMapping.new
|
||||
end
|
||||
|
||||
# GET /metadata_mappings/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# POST /metadata_mappings
|
||||
# POST /metadata_mappings.json
|
||||
def create
|
||||
@metadata_mapping = MetadataMapping.new(metadata_mapping_params)
|
||||
|
||||
respond_to do |format|
|
||||
if @metadata_mapping.save
|
||||
format.html { redirect_to @metadata_mapping, notice: 'Metadata mapping was successfully created.' }
|
||||
format.json { render :show, status: :created, location: @metadata_mapping }
|
||||
else
|
||||
format.html { render :new }
|
||||
format.json { render json: @metadata_mapping.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PATCH/PUT /metadata_mappings/1
|
||||
# PATCH/PUT /metadata_mappings/1.json
|
||||
def update
|
||||
respond_to do |format|
|
||||
if @metadata_mapping.update(metadata_mapping_params)
|
||||
format.html { redirect_to @metadata_mapping, notice: 'Metadata mapping was successfully updated.' }
|
||||
format.json { render :show, status: :ok, location: @metadata_mapping }
|
||||
else
|
||||
format.html { render :edit }
|
||||
format.json { render json: @metadata_mapping.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /metadata_mappings/1
|
||||
# DELETE /metadata_mappings/1.json
|
||||
def destroy
|
||||
@metadata_mapping.destroy
|
||||
respond_to do |format|
|
||||
format.html { redirect_to metadata_mappings_url, notice: 'Metadata mapping was successfully destroyed.' }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_metadata_mapping
|
||||
@metadata_mapping = MetadataMapping.find(params[:id])
|
||||
end
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def metadata_mapping_params
|
||||
params.require(:metadata_mapping).permit(:input, :server, :entity)
|
||||
end
|
||||
end
|
2
app/helpers/metadata_mappings_helper.rb
Normal file
2
app/helpers/metadata_mappings_helper.rb
Normal file
|
@ -0,0 +1,2 @@
|
|||
module MetadataMappingsHelper
|
||||
end
|
2
app/models/metadata_mapping.rb
Normal file
2
app/models/metadata_mapping.rb
Normal file
|
@ -0,0 +1,2 @@
|
|||
class MetadataMapping < ApplicationRecord
|
||||
end
|
|
@ -1,12 +1,17 @@
|
|||
class EmailImporter
|
||||
attr_accessor :klass
|
||||
attr_accessor :email_class
|
||||
attr_accessor :metadata_mapping_class
|
||||
|
||||
def initialize(klass = Email)
|
||||
@klass = klass
|
||||
def initialize(
|
||||
email_class: Email,
|
||||
metadata_mapping_class: MetadataMapping,
|
||||
|
||||
@email_class = email_class
|
||||
@metadata_mapping_class = metadata_mapping_class
|
||||
end
|
||||
|
||||
def import(mail)
|
||||
email = klass.new(
|
||||
email = email_class.new(
|
||||
message_id: mail.message_id,
|
||||
subject: mail.subject,
|
||||
date: mail.date,
|
||||
|
@ -65,52 +70,72 @@ class EmailImporter
|
|||
(mail.subject.present? && mail.subject.match?(/cron/i)) \
|
||||
|| mail.header["X-Cron-Env"].present?
|
||||
end
|
||||
|
||||
def mailing_list?(mail)
|
||||
mail.header["List-Unsubscribe"].present?
|
||||
end
|
||||
|
||||
def clients(mail)
|
||||
header = mail.header["X-Client-Id"]
|
||||
if header.respond_to?(:map)
|
||||
header.map(&:value)
|
||||
elsif header.respond_to?(:value)
|
||||
header.value
|
||||
end
|
||||
metadata(mail).filter_map(&:entity).uniq
|
||||
end
|
||||
|
||||
def servers(mail)
|
||||
["To", "Delivered-To", "From", "Subject"].filter_map() { |header|
|
||||
mail.header[header]
|
||||
}.flatten.map(&:value).select { |text|
|
||||
if address_match_evolix_net?(text)
|
||||
extract_server_name_from_address(text)
|
||||
end
|
||||
}
|
||||
metadata(mail).filter_map(&:server).uniq
|
||||
end
|
||||
|
||||
def tickets(mail)
|
||||
header = mail.header["X-Ticket-Id"]
|
||||
values_from_header(header: mail.header["X-Ticket-Id"])
|
||||
end
|
||||
|
||||
def values_from_header(header:, default: [])
|
||||
if header.respond_to?(:map)
|
||||
header.map(&:value)
|
||||
elsif header.respond_to?(:value)
|
||||
header.value
|
||||
Array(header.value)
|
||||
elsif block_given?
|
||||
yield(header)
|
||||
else
|
||||
default
|
||||
end
|
||||
end
|
||||
|
||||
def address_match_evolix_net?(address)
|
||||
address.match?(/@(.+)\.evolix\.net/i)
|
||||
end
|
||||
def extract_server_name_from_address(address)
|
||||
address.match(/@(.+)\.evolix\.net/i)[1]
|
||||
def metadata(mail)
|
||||
@metadata ||= metadata_mapping_class.where(input: metadata_inputs(mail)).all
|
||||
end
|
||||
|
||||
def values_for_header(header)
|
||||
if header.present?
|
||||
if header.respond_to?(:map)
|
||||
header.map(&:value)
|
||||
def metadata_inputs(mail)
|
||||
inputs = []
|
||||
# add mail addresses and hostnames from headers
|
||||
inputs << ["To", "Delivered-To", "X-Original-To", "From", "Subject"].filter_map { |header_name|
|
||||
mail.header[header_name]
|
||||
}.flatten.map(&:value).filter_map() { |header_value|
|
||||
keep_email_and_hostnames(header_value)
|
||||
}.flatten.filter_map() { |value|
|
||||
clean_subdomains(value)
|
||||
}.flatten
|
||||
# add other values from headers
|
||||
inputs << mail.header["X-Client-Id"]
|
||||
|
||||
inputs.uniq
|
||||
end
|
||||
|
||||
def keep_email_and_hostnames(string)
|
||||
pattern = /\b((?:([-a-zA-Z0-9\._]+)@)?((?:[-a-zA-Z0-9\._]*)(?:\.[a-z]{2,})))\b/
|
||||
results = string.scan(pattern)
|
||||
if results.present?
|
||||
results.map(&:first)
|
||||
end
|
||||
end
|
||||
|
||||
def clean_subdomains(value)
|
||||
[
|
||||
[/[-a-zA-Z0-9\._]+@([-a-zA-Z0-9]+).evolix.net/, '@\1']
|
||||
].filter_map { |item|
|
||||
if value.match?(item[0])
|
||||
value.gsub!(item[0], item[1])
|
||||
else
|
||||
header.value
|
||||
value
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
32
app/views/metadata_mappings/_form.html.erb
Normal file
32
app/views/metadata_mappings/_form.html.erb
Normal file
|
@ -0,0 +1,32 @@
|
|||
<%= form_with(model: metadata_mapping) do |form| %>
|
||||
<% if metadata_mapping.errors.any? %>
|
||||
<div id="error_explanation">
|
||||
<h2><%= pluralize(metadata_mapping.errors.count, "error") %> prohibited this metadata_mapping from being saved:</h2>
|
||||
|
||||
<ul>
|
||||
<% metadata_mapping.errors.each do |error| %>
|
||||
<li><%= error.full_message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :input %>
|
||||
<%= form.text_field :input %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :server %>
|
||||
<%= form.text_field :server %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= form.label :entity %>
|
||||
<%= form.text_field :entity %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<%= form.submit %>
|
||||
</div>
|
||||
<% end %>
|
|
@ -0,0 +1,2 @@
|
|||
json.extract! metadata_mapping, :id, :input, :server, :entity, :created_at, :updated_at
|
||||
json.url metadata_mapping_url(metadata_mapping, format: :json)
|
6
app/views/metadata_mappings/edit.html.erb
Normal file
6
app/views/metadata_mappings/edit.html.erb
Normal file
|
@ -0,0 +1,6 @@
|
|||
<h1>Editing Metadata Mapping</h1>
|
||||
|
||||
<%= render 'form', metadata_mapping: @metadata_mapping %>
|
||||
|
||||
<%= link_to 'Show', @metadata_mapping %> |
|
||||
<%= link_to 'Back', metadata_mappings_path %>
|
31
app/views/metadata_mappings/index.html.erb
Normal file
31
app/views/metadata_mappings/index.html.erb
Normal file
|
@ -0,0 +1,31 @@
|
|||
<p id="notice"><%= notice %></p>
|
||||
|
||||
<h1>Metadata Mappings</h1>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Input</th>
|
||||
<th>Server</th>
|
||||
<th>Entity</th>
|
||||
<th colspan="3"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<% @metadata_mappings.each do |metadata_mapping| %>
|
||||
<tr>
|
||||
<td><%= metadata_mapping.input %></td>
|
||||
<td><%= metadata_mapping.server %></td>
|
||||
<td><%= metadata_mapping.entity %></td>
|
||||
<td><%= link_to 'Show', metadata_mapping %></td>
|
||||
<td><%= link_to 'Edit', edit_metadata_mapping_path(metadata_mapping) %></td>
|
||||
<td><%= link_to 'Destroy', metadata_mapping, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<%= link_to 'New Metadata Mapping', new_metadata_mapping_path %>
|
1
app/views/metadata_mappings/index.json.jbuilder
Normal file
1
app/views/metadata_mappings/index.json.jbuilder
Normal file
|
@ -0,0 +1 @@
|
|||
json.array! @metadata_mappings, partial: "metadata_mappings/metadata_mapping", as: :metadata_mapping
|
5
app/views/metadata_mappings/new.html.erb
Normal file
5
app/views/metadata_mappings/new.html.erb
Normal file
|
@ -0,0 +1,5 @@
|
|||
<h1>New Metadata Mapping</h1>
|
||||
|
||||
<%= render 'form', metadata_mapping: @metadata_mapping %>
|
||||
|
||||
<%= link_to 'Back', metadata_mappings_path %>
|
19
app/views/metadata_mappings/show.html.erb
Normal file
19
app/views/metadata_mappings/show.html.erb
Normal file
|
@ -0,0 +1,19 @@
|
|||
<p id="notice"><%= notice %></p>
|
||||
|
||||
<p>
|
||||
<strong>Input:</strong>
|
||||
<%= @metadata_mapping.input %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Server:</strong>
|
||||
<%= @metadata_mapping.server %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Entity:</strong>
|
||||
<%= @metadata_mapping.entity %>
|
||||
</p>
|
||||
|
||||
<%= link_to 'Edit', edit_metadata_mapping_path(@metadata_mapping) %> |
|
||||
<%= link_to 'Back', metadata_mappings_path %>
|
1
app/views/metadata_mappings/show.json.jbuilder
Normal file
1
app/views/metadata_mappings/show.json.jbuilder
Normal file
|
@ -0,0 +1 @@
|
|||
json.partial! "metadata_mappings/metadata_mapping", metadata_mapping: @metadata_mapping
|
|
@ -1,6 +1,7 @@
|
|||
require 'sidekiq/web'
|
||||
|
||||
Rails.application.routes.draw do
|
||||
resources :metadata_mappings
|
||||
resources :emails
|
||||
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
|
||||
mount Sidekiq::Web => '/sidekiq'
|
||||
|
|
12
db/migrate/20210103174702_create_metadata_mappings.rb
Normal file
12
db/migrate/20210103174702_create_metadata_mappings.rb
Normal file
|
@ -0,0 +1,12 @@
|
|||
class CreateMetadataMappings < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
create_table :metadata_mappings do |t|
|
||||
t.string :input
|
||||
t.string :server
|
||||
t.string :entity
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
add_index :metadata_mappings, :input
|
||||
end
|
||||
end
|
13
db/schema.rb
13
db/schema.rb
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2020_12_27_094508) do
|
||||
ActiveRecord::Schema.define(version: 2021_01_03_174702) do
|
||||
|
||||
create_table "action_mailbox_inbound_emails", force: :cascade do |t|
|
||||
t.integer "status", default: 0, null: false
|
||||
|
@ -44,7 +44,7 @@ ActiveRecord::Schema.define(version: 2020_12_27_094508) do
|
|||
end
|
||||
|
||||
create_table "active_storage_variant_records", force: :cascade do |t|
|
||||
t.bigint "blob_id", null: false
|
||||
t.integer "blob_id", null: false
|
||||
t.string "variation_digest", null: false
|
||||
t.index ["blob_id", "variation_digest"], name: "index_active_storage_variant_records_uniqueness", unique: true
|
||||
end
|
||||
|
@ -67,6 +67,15 @@ ActiveRecord::Schema.define(version: 2020_12_27_094508) do
|
|||
t.datetime "updated_at", precision: 6, null: false
|
||||
end
|
||||
|
||||
create_table "metadata_mappings", force: :cascade do |t|
|
||||
t.string "input"
|
||||
t.string "server"
|
||||
t.string "entity"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.index ["input"], name: "index_metadata_mappings_on_input"
|
||||
end
|
||||
|
||||
add_foreign_key "active_storage_attachments", "active_storage_blobs", column: "blob_id"
|
||||
add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id"
|
||||
end
|
||||
|
|
144
db/seeds.rb
144
db/seeds.rb
|
@ -5,3 +5,147 @@
|
|||
#
|
||||
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
|
||||
# Character.create(name: 'Luke', movie: movies.first)
|
||||
|
||||
MetadataMapping.create([
|
||||
{input: "@aixbackup01", server: "aixbackup01", entity: "evolix"},
|
||||
{input: "@apparaitre", server: "apparaitre", entity: "apparaitre"},
|
||||
{input: "@avancie-monitoring00", server: "avancie-monitoring00", entity: "avancie"},
|
||||
{input: "@azoth-www00", server: "azoth-www00", entity: "azothsystems"},
|
||||
{input: "@bebeto2", server: "bebeto2", entity: "evolix"},
|
||||
{input: "@casoni", server: "casoni", entity: "evolix"},
|
||||
{input: "@cleo-files1", server: "cleo-files1", entity: "cleo"},
|
||||
{input: "@cloud0-source0", server: "capitaldata-cloud0-source0", entity: "capitaldata"},
|
||||
{input: "@cogepart-www01", server: "cogepart-www01", entity: "cogepart"},
|
||||
{input: "@componize-recovery-eu3", server: "componize-recovery-eu3", entity: "componize"},
|
||||
{input: "@cybercartes-www24", server: "cybercartes-www24", entity: "cybercartes"},
|
||||
{input: "@ebizproduction-confplus", server: "ebizproduction-confplus", entity: "ebizproduction"},
|
||||
{input: "@edumedia", server: "edumedia", entity: "edumedia"},
|
||||
{input: "@evolix.fr", server: nil, entity: "evolix"},
|
||||
{input: "@exotismes-sql6", server: "exotismes-sql6", entity: "exotismes"},
|
||||
{input: "@golfup", server: "golfup", entity: "golfup"},
|
||||
{input: "@hbv5", server: "hbv5", entity: ""},
|
||||
{input: "@hbv7", server: "hbv7", entity: ""},
|
||||
{input: "@hbv8", server: "hbv8", entity: ""},
|
||||
{input: "@hexacoffre", server: "hexacoffre", entity: "hexacoffre"},
|
||||
{input: "@highco-prixing-www00", server: "highco-prixing-www00", entity: ""},
|
||||
{input: "@highco-rmw-sas01", server: "highco-rmw-sas01", entity: ""},
|
||||
{input: "@hosting05", server: "hosting05", entity: "evolix"},
|
||||
{input: "@itupkeep-sql00", server: "itupkeep-sql00", entity: "itupkeep"},
|
||||
{input: "@itupkeep-www10", server: "itupkeep-www10", entity: "itupkeep"},
|
||||
{input: "@jobinlive-intra", server: "jobinlive-intra", entity: "jobinlive"},
|
||||
{input: "@kampn-dev01", server: "kampn-dev01", entity: "kampn"},
|
||||
{input: "@kampn-kvm00", server: "kampn-kvm00", entity: "kampn"},
|
||||
{input: "@kampn-search-docker01", server: "kampn-search-docker01", entity: "kampn"},
|
||||
{input: "@lepape-sql02", server: "lepape-sql02", entity: "lepape"},
|
||||
{input: "@lepape-sql03", server: "lepape-sql03", entity: "lepape"},
|
||||
{input: "@mediaaccess4", server: "mediaaccess4", entity: "mediaaccess"},
|
||||
{input: "@mediaaccess-dev00", server: "mediaaccess-dev00", entity: "mediaaccess"},
|
||||
{input: "@nouveauxterritoires-preprod-fcnz", server: "nouveauxterritoires-preprod-fcnz", entity: "nouveauxterritoires"},
|
||||
{input: "@overcome-web2", server: "overcome-web2", entity: "overcome"},
|
||||
{input: "@overcome-web3", server: "overcome-web3", entity: "overcome"},
|
||||
{input: "@preprod-elk", server: "nouveauxterritoires-preprod-elk", entity: "nouveauxterritoires"},
|
||||
{input: "@preprod-fcnz", server: "preprod-fcnz", entity: "nouveauxterritoiresnouveauxterritoires"},
|
||||
{input: "@prodlxsas01", server: "prodlxsas01", entity: ""},
|
||||
{input: "@quai13-backup3", server: "quai13-backup3", entity: "quai13"},
|
||||
{input: "@quai13-www11", server: "quai13-www11", entity: "quai13"},
|
||||
{input: "@quai13-www21", server: "quai13-www21", entity: "quai13"},
|
||||
{input: "@sjvidil", server: "sjvidil", entity: "externmarket"},
|
||||
{input: "@smsmode-sql01", server: "smsmode-sql01", entity: "smsmode"},
|
||||
{input: "@socgen00", server: "socgen00", entity: "socgen"},
|
||||
{input: "@spinon-www01", server: "spinon-www01", entity: "spinon"},
|
||||
{input: "@stratis-www01", server: "stratis-www01", entity: "stratis"},
|
||||
{input: "@stratis-www02", server: "stratis-www02", entity: "stratis"},
|
||||
{input: "@tourismit-iter", server: "tourismit-iter", entity: "tourismit"},
|
||||
{input: "@tyredating-yepgarage-paris-web02", server: "tyredating-yepgarage-paris-web02", entity: "tyredating"},
|
||||
{input: "@tyredating-yepgarage-singapore-adm01", server: "tyredating-yepgarage-singapore-adm01", entity: "tyredating"},
|
||||
{input: "@viaxoft-mrs2-sql08", server: "viaxoft-mrs2-sql08", entity: "viaxoft"},
|
||||
{input: "@viaxoft-mrs2-sql08", server: nil, entity: "viaxoft"},
|
||||
{input: "@viaxoft-mrs2-tomcat11", server: "viaxoft-mrs2-tomcat11", entity: "viaxoft"},
|
||||
{input: "@viaxoft-mrs-tomcat05", server: "viaxoft-mrs-tomcat05", entity: ""},
|
||||
{input: "@viaxoft-mrs-tomcat05", server: "viaxoft-mrs-tomcat05", entity: "viaxoft"},
|
||||
{input: "@webcom-adm02", server: "webcom-adm02", entity: "webcom"},
|
||||
{input: "@webcom-www05", server: "webcom-www05", entity: "webcom"},
|
||||
{input: "@winnie2", server: "winnie2", entity: "evolix"},
|
||||
{input: "@winnie", server: "winnie", entity: "evolix"},
|
||||
{input: "@www10.quai13.net", server: "quai13-www10", entity: "quai13"},
|
||||
{input: "@www11.quai13.net", server: "quai13-www11", entity: "quai13"},
|
||||
{input: "@www20.quai13.net", server: "quai13-www20", entity: "quai13"},
|
||||
{input: "@www21.quai13.net", server: "quai13-www21", entity: "quai13"},
|
||||
{input: "Customer.Services@interxion.com", server: nil, entity: "interxion"},
|
||||
{input: "alexis.chevalier@celeste.fr", server: nil, entity: "icademie"},
|
||||
{input: "aubagne-glastint.com@glastint.com", server: nil, entity: "glastint"},
|
||||
{input: "azothsystems@evolix.net", server: nil, entity: "azothsystems"},
|
||||
{input: "@quai13-backup3", server: "quai13-backup3", entity: "quai13"},
|
||||
{input: "bleucom@evolix.net", server: nil, entity: "bleucom"},
|
||||
{input: "capitaldata@evolix.net", server: nil, entity: "capitaldata"},
|
||||
{input: "cbathelet@si-cloud.fr", server: nil, entity: "progexia"},
|
||||
{input: "cleo@evolix.net", server: nil, entity: "cleo"},
|
||||
{input: "contact@coffre-fort.be", server: nil, entity: "hexacoffre"},
|
||||
{input: "courriel@fub.fr", server: nil, entity: "fub"},
|
||||
{input: "customer.services@interxion.com", server: nil, entity: "interxion"},
|
||||
{input: "cybercartes-compta@evolix.net", server: nil, entity: "cybercartes"},
|
||||
{input: "cybercartes@evolix.net", server: nil, entity: "cybercartes"},
|
||||
{input: "ebizproduction@evolix.net", server: nil, entity: "ebizproduction"},
|
||||
{input: "equipe@evolix.net", server: nil, entity: "evolix"},
|
||||
{input: "expiry@letsencrypt.org", server: nil, entity: ""},
|
||||
{input: "f.manneville@purjus.fr", server: nil, entity: "purjus"},
|
||||
{input: "florajet@evolix.net", server: nil, entity: "florajet"},
|
||||
{input: "fluotonic@evolix.net", server: nil, entity: "fluotonic"},
|
||||
{input: "fub@evolix.net", server: nil, entity: "fub"},
|
||||
{input: "guillaume.schachtele@opnsecure.com", server: nil, entity: "bazile"},
|
||||
{input: "hexacoffre@evolix.net", server: nil, entity: "hexacoffre"},
|
||||
{input: "icademie@evolix.net", server: nil, entity: "icademie"},
|
||||
{input: "informatique@bazile.fr", server: nil, entity: "bazile"},
|
||||
{input: "investprev@dpvatonline.com.br", server: nil, entity: ""},
|
||||
{input: "j.ponchel@icademie.com", server: nil, entity: "icademie"},
|
||||
{input: "jjobard@bazile.fr", server: nil, entity: "bazile"},
|
||||
{input: "jobinlive@evolix.net", server: nil, entity: "jobinlive"},
|
||||
{input: "jobintree@evolix.net", server: nil, entity: "jobintree"},
|
||||
{input: "kampn-dev01.evolix.net", server: nil, entity: "kampn"},
|
||||
{input: "kampn@evolix.net", server: nil, entity: "kampn"},
|
||||
{input: "keyline@evolix.net", server: nil, entity: "preferendum"},
|
||||
{input: "kopel@evolix.ca", server: nil, entity: "kopel"},
|
||||
{input: "l2-support@franceix.net", server: nil, entity: "franceix"},
|
||||
{input: "lcdr@evolix.net", server: nil, entity: "lcdr"},
|
||||
{input: "lepape@evolix.net", server: nil, entity: "lepape"},
|
||||
{input: "maintenance-jaguar@bazile.fr", server: nil, entity: "bazile"},
|
||||
{input: "marketing-appa@apparaitre", server: "apparaitre", entity: "apparaitre"},
|
||||
{input: "mediaaccess@evolix.net", server: nil, entity: "mediaaccess"},
|
||||
{input: "mexico@iter", server: "tourismit-iter", entity: "tourismit"},
|
||||
{input: "n.ayed@progexia.fr", server: nil, entity: "progexia"},
|
||||
{input: "nicematin@evolix.net", server: nil, entity: "nicematin"},
|
||||
{input: "nicolas.durut@free.fr", server: nil, entity: "cybercartes"},
|
||||
{input: "no-reply@sever-admin.pw", server: nil, entity: ""},
|
||||
{input: "noreply@bluewin.ch", server: nil, entity: ""},
|
||||
{input: "noreply@mattermost-nouveauxterritoires.evolix.org", server: nil, entity: "nouveauxterritoires"},
|
||||
{input: "nouveauxterritoires@evolix.net", server: nil, entity: "nouveauxterritoires"},
|
||||
{input: "paris-bounces@members.franceix.net", server: nil, entity: "franceix"},
|
||||
{input: "paris@members.franceix.net", server: nil, entity: "franceix"},
|
||||
{input: "pascal.poirson@groupe-dtcf.com", server: nil, entity: "croissanceformation"},
|
||||
{input: "progexia@evolix.net", server: nil, entity: "progexia"},
|
||||
{input: "quai13@evolix.net", server: nil, entity: "quai13"},
|
||||
{input: "redmine@evolix.net", server: nil, entity: "evolix"},
|
||||
{input: "root@beauregard2.fluotonic.net", server: nil, entity: "fluotonic"},
|
||||
{input: "root@cloud0-source0.kdata.fr", server: "capitaldata-cloud0-source0", entity: "capitaldata"},
|
||||
{input: "root@glastint.com", server: "glastint", entity: "quai13"},
|
||||
{input: "root@hbv5.hb.univ-amu.fr", server: nil, entity: ""},
|
||||
{input: "root@hbv7.hb.univ-amu.fr", server: nil, entity: ""},
|
||||
{input: "root@hbv8.hb.univ-amu.fr", server: nil, entity: ""},
|
||||
{input: "root@kvmail0.cybercartes.com", server: "cybercartes-kvmail0", entity: "cybercartes"},
|
||||
{input: "root@preprod-elk.nouveauxterritoires.net", server: "nouveauxterritoires-preprod-elk", entity: "nouveauxterritoires"},
|
||||
{input: "smsmode@evolix.net", server: nil, entity: "smsmode"},
|
||||
{input: "spaquin@kopel.ca", server: nil, entity: "kopel"},
|
||||
{input: "stratis@evolix.net", server: nil, entity: "stratis"},
|
||||
{input: "support@glastint.com", server: nil, entity: "quai13"},
|
||||
{input: "support@jaguar-network.com", server: nil, entity: "jaguar"},
|
||||
{input: "tech@evolix.net", server: nil, entity: "evolix"},
|
||||
{input: "techlog@viaxoft.com", server: nil, entity: "viaxoft"},
|
||||
{input: "tetesaclics@gmail.com", server: nil, entity: ""},
|
||||
{input: "tourismit@evolix.net", server: nil, entity: "tourismit"},
|
||||
{input: "tyredating-c2s@evolix.net", server: nil, entity: "tyredating"},
|
||||
{input: "viaxoft-backup2.evolix.net", server: "viaxoft-backup2", entity: "viaxoft"},
|
||||
{input: "viaxoft-mrs-backup2.evolix.net", server: "viaxoft-mrs-backup2", entity: "viaxoft"},
|
||||
{input: "viaxoft-sys@evolix.net", server: nil, entity: "viaxoft"},
|
||||
{input: "viaxoft@evolix.net", server: nil, entity: "viaxoft"},
|
||||
{input: "webcom@evolix.net", server: nil, entity: "webcom"},
|
||||
])
|
||||
|
|
48
test/controllers/metadata_mappings_controller_test.rb
Normal file
48
test/controllers/metadata_mappings_controller_test.rb
Normal file
|
@ -0,0 +1,48 @@
|
|||
require "test_helper"
|
||||
|
||||
class MetadataMappingsControllerTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@metadata_mapping = metadata_mappings(:one)
|
||||
end
|
||||
|
||||
test "should get index" do
|
||||
get metadata_mappings_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get new" do
|
||||
get new_metadata_mapping_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should create metadata_mapping" do
|
||||
assert_difference('MetadataMapping.count') do
|
||||
post metadata_mappings_url, params: { metadata_mapping: { entity: @metadata_mapping.entity, input: @metadata_mapping.input, server: @metadata_mapping.server } }
|
||||
end
|
||||
|
||||
assert_redirected_to metadata_mapping_url(MetadataMapping.last)
|
||||
end
|
||||
|
||||
test "should show metadata_mapping" do
|
||||
get metadata_mapping_url(@metadata_mapping)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get edit" do
|
||||
get edit_metadata_mapping_url(@metadata_mapping)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should update metadata_mapping" do
|
||||
patch metadata_mapping_url(@metadata_mapping), params: { metadata_mapping: { entity: @metadata_mapping.entity, input: @metadata_mapping.input, server: @metadata_mapping.server } }
|
||||
assert_redirected_to metadata_mapping_url(@metadata_mapping)
|
||||
end
|
||||
|
||||
test "should destroy metadata_mapping" do
|
||||
assert_difference('MetadataMapping.count', -1) do
|
||||
delete metadata_mapping_url(@metadata_mapping)
|
||||
end
|
||||
|
||||
assert_redirected_to metadata_mappings_url
|
||||
end
|
||||
end
|
11
test/fixtures/metadata_mappings.yml
vendored
Normal file
11
test/fixtures/metadata_mappings.yml
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
input: MyString
|
||||
server: MyString
|
||||
entity: MyString
|
||||
|
||||
two:
|
||||
input: MyString
|
||||
server: MyString
|
||||
entity: MyString
|
7
test/models/metadata_mapping_test.rb
Normal file
7
test/models/metadata_mapping_test.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
require "test_helper"
|
||||
|
||||
class MetadataMappingTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
47
test/system/metadata_mappings_test.rb
Normal file
47
test/system/metadata_mappings_test.rb
Normal file
|
@ -0,0 +1,47 @@
|
|||
require "application_system_test_case"
|
||||
|
||||
class MetadataMappingsTest < ApplicationSystemTestCase
|
||||
setup do
|
||||
@metadata_mapping = metadata_mappings(:one)
|
||||
end
|
||||
|
||||
test "visiting the index" do
|
||||
visit metadata_mappings_url
|
||||
assert_selector "h1", text: "Metadata Mappings"
|
||||
end
|
||||
|
||||
test "creating a Metadata mapping" do
|
||||
visit metadata_mappings_url
|
||||
click_on "New Metadata Mapping"
|
||||
|
||||
fill_in "Entity", with: @metadata_mapping.entity
|
||||
fill_in "Input", with: @metadata_mapping.input
|
||||
fill_in "Server", with: @metadata_mapping.server
|
||||
click_on "Create Metadata mapping"
|
||||
|
||||
assert_text "Metadata mapping was successfully created"
|
||||
click_on "Back"
|
||||
end
|
||||
|
||||
test "updating a Metadata mapping" do
|
||||
visit metadata_mappings_url
|
||||
click_on "Edit", match: :first
|
||||
|
||||
fill_in "Entity", with: @metadata_mapping.entity
|
||||
fill_in "Input", with: @metadata_mapping.input
|
||||
fill_in "Server", with: @metadata_mapping.server
|
||||
click_on "Update Metadata mapping"
|
||||
|
||||
assert_text "Metadata mapping was successfully updated"
|
||||
click_on "Back"
|
||||
end
|
||||
|
||||
test "destroying a Metadata mapping" do
|
||||
visit metadata_mappings_url
|
||||
page.accept_confirm do
|
||||
click_on "Destroy", match: :first
|
||||
end
|
||||
|
||||
assert_text "Metadata mapping was successfully destroyed"
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue