added the last two models
This commit is contained in:
parent
f15f9be809
commit
05f803436e
23
README.md
23
README.md
@ -1,4 +1,13 @@
|
||||
# README
|
||||
# Ruby on Rails front end for OpenSMTPD.
|
||||
|
||||
An ISC Licensed RoR app to manage your OpemSMTPD users.
|
||||
|
||||
## OpenBSD Instructions.
|
||||
|
||||
doas pkg_add
|
||||
|
||||
## Database schema
|
||||
Is derived from https://github.com/OpenSMTPD/OpenSMTPD-extras/blob/master/extras/tables/table-mysql/table-mysql.5
|
||||
|
||||
This README would normally document whatever steps are necessary to get the
|
||||
application up and running.
|
||||
@ -21,4 +30,14 @@ Things you may want to cover:
|
||||
|
||||
* Deployment instructions
|
||||
|
||||
* ...
|
||||
|
||||
|
||||
|
||||
## Licensed
|
||||
|
||||
Copyright 2022 - 2023 Jez Caudle
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
|
||||
70
app/controllers/credentials_controller.rb
Normal file
70
app/controllers/credentials_controller.rb
Normal file
@ -0,0 +1,70 @@
|
||||
class CredentialsController < ApplicationController
|
||||
before_action :set_credential, only: %i[ show edit update destroy ]
|
||||
|
||||
# GET /credentials or /credentials.json
|
||||
def index
|
||||
@credentials = Credential.all
|
||||
end
|
||||
|
||||
# GET /credentials/1 or /credentials/1.json
|
||||
def show
|
||||
end
|
||||
|
||||
# GET /credentials/new
|
||||
def new
|
||||
@credential = Credential.new
|
||||
end
|
||||
|
||||
# GET /credentials/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# POST /credentials or /credentials.json
|
||||
def create
|
||||
@credential = Credential.new(credential_params)
|
||||
|
||||
respond_to do |format|
|
||||
if @credential.save
|
||||
format.html { redirect_to credential_url(@credential), notice: "Credential was successfully created." }
|
||||
format.json { render :show, status: :created, location: @credential }
|
||||
else
|
||||
format.html { render :new, status: :unprocessable_entity }
|
||||
format.json { render json: @credential.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PATCH/PUT /credentials/1 or /credentials/1.json
|
||||
def update
|
||||
respond_to do |format|
|
||||
if @credential.update(credential_params)
|
||||
format.html { redirect_to credential_url(@credential), notice: "Credential was successfully updated." }
|
||||
format.json { render :show, status: :ok, location: @credential }
|
||||
else
|
||||
format.html { render :edit, status: :unprocessable_entity }
|
||||
format.json { render json: @credential.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /credentials/1 or /credentials/1.json
|
||||
def destroy
|
||||
@credential.destroy
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to credentials_url, notice: "Credential was successfully destroyed." }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_credential
|
||||
@credential = Credential.find(params[:id])
|
||||
end
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def credential_params
|
||||
params.require(:credential).permit(:email, :password)
|
||||
end
|
||||
end
|
||||
2
app/helpers/credentials_helper.rb
Normal file
2
app/helpers/credentials_helper.rb
Normal file
@ -0,0 +1,2 @@
|
||||
module CredentialsHelper
|
||||
end
|
||||
2
app/models/credential.rb
Normal file
2
app/models/credential.rb
Normal file
@ -0,0 +1,2 @@
|
||||
class Credential < ApplicationRecord
|
||||
end
|
||||
12
app/views/credentials/_credential.html.erb
Normal file
12
app/views/credentials/_credential.html.erb
Normal file
@ -0,0 +1,12 @@
|
||||
<div id="<%= dom_id credential %>">
|
||||
<p>
|
||||
<strong>Email:</strong>
|
||||
<%= credential.email %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<strong>Password:</strong>
|
||||
<%= credential.password %>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
2
app/views/credentials/_credential.json.jbuilder
Normal file
2
app/views/credentials/_credential.json.jbuilder
Normal file
@ -0,0 +1,2 @@
|
||||
json.extract! credential, :id, :email, :password, :created_at, :updated_at
|
||||
json.url credential_url(credential, format: :json)
|
||||
27
app/views/credentials/_form.html.erb
Normal file
27
app/views/credentials/_form.html.erb
Normal file
@ -0,0 +1,27 @@
|
||||
<%= form_with(model: credential) do |form| %>
|
||||
<% if credential.errors.any? %>
|
||||
<div style="color: red">
|
||||
<h2><%= pluralize(credential.errors.count, "error") %> prohibited this credential from being saved:</h2>
|
||||
|
||||
<ul>
|
||||
<% credential.errors.each do |error| %>
|
||||
<li><%= error.full_message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div>
|
||||
<%= form.label :email, style: "display: block" %>
|
||||
<%= form.text_field :email %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :password, style: "display: block" %>
|
||||
<%= form.text_field :password %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.submit %>
|
||||
</div>
|
||||
<% end %>
|
||||
10
app/views/credentials/edit.html.erb
Normal file
10
app/views/credentials/edit.html.erb
Normal file
@ -0,0 +1,10 @@
|
||||
<h1>Editing credential</h1>
|
||||
|
||||
<%= render "form", credential: @credential %>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= link_to "Show this credential", @credential %> |
|
||||
<%= link_to "Back to credentials", credentials_path %>
|
||||
</div>
|
||||
14
app/views/credentials/index.html.erb
Normal file
14
app/views/credentials/index.html.erb
Normal file
@ -0,0 +1,14 @@
|
||||
<p style="color: green"><%= notice %></p>
|
||||
|
||||
<h1>Credentials</h1>
|
||||
|
||||
<div id="credentials">
|
||||
<% @credentials.each do |credential| %>
|
||||
<%= render credential %>
|
||||
<p>
|
||||
<%= link_to "Show this credential", credential %>
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<%= link_to "New credential", new_credential_path %>
|
||||
1
app/views/credentials/index.json.jbuilder
Normal file
1
app/views/credentials/index.json.jbuilder
Normal file
@ -0,0 +1 @@
|
||||
json.array! @credentials, partial: "credentials/credential", as: :credential
|
||||
9
app/views/credentials/new.html.erb
Normal file
9
app/views/credentials/new.html.erb
Normal file
@ -0,0 +1,9 @@
|
||||
<h1>New credential</h1>
|
||||
|
||||
<%= render "form", credential: @credential %>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<%= link_to "Back to credentials", credentials_path %>
|
||||
</div>
|
||||
10
app/views/credentials/show.html.erb
Normal file
10
app/views/credentials/show.html.erb
Normal file
@ -0,0 +1,10 @@
|
||||
<p style="color: green"><%= notice %></p>
|
||||
|
||||
<%= render @credential %>
|
||||
|
||||
<div>
|
||||
<%= link_to "Edit this credential", edit_credential_path(@credential) %> |
|
||||
<%= link_to "Back to credentials", credentials_path %>
|
||||
|
||||
<%= button_to "Destroy this credential", @credential, method: :delete %>
|
||||
</div>
|
||||
1
app/views/credentials/show.json.jbuilder
Normal file
1
app/views/credentials/show.json.jbuilder
Normal file
@ -0,0 +1 @@
|
||||
json.partial! "credentials/credential", credential: @credential
|
||||
@ -1,4 +1,5 @@
|
||||
Rails.application.routes.draw do
|
||||
resources :credentials
|
||||
resources :virtuals
|
||||
resources :domains
|
||||
devise_for :users
|
||||
|
||||
10
db/migrate/20230510184959_create_credentials.rb
Normal file
10
db/migrate/20230510184959_create_credentials.rb
Normal file
@ -0,0 +1,10 @@
|
||||
class CreateCredentials < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
create_table :credentials do |t|
|
||||
t.string :email
|
||||
t.string :password
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
48
test/controllers/credentials_controller_test.rb
Normal file
48
test/controllers/credentials_controller_test.rb
Normal file
@ -0,0 +1,48 @@
|
||||
require "test_helper"
|
||||
|
||||
class CredentialsControllerTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@credential = credentials(:one)
|
||||
end
|
||||
|
||||
test "should get index" do
|
||||
get credentials_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get new" do
|
||||
get new_credential_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should create credential" do
|
||||
assert_difference("Credential.count") do
|
||||
post credentials_url, params: { credential: { email: @credential.email, password: @credential.password } }
|
||||
end
|
||||
|
||||
assert_redirected_to credential_url(Credential.last)
|
||||
end
|
||||
|
||||
test "should show credential" do
|
||||
get credential_url(@credential)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get edit" do
|
||||
get edit_credential_url(@credential)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should update credential" do
|
||||
patch credential_url(@credential), params: { credential: { email: @credential.email, password: @credential.password } }
|
||||
assert_redirected_to credential_url(@credential)
|
||||
end
|
||||
|
||||
test "should destroy credential" do
|
||||
assert_difference("Credential.count", -1) do
|
||||
delete credential_url(@credential)
|
||||
end
|
||||
|
||||
assert_redirected_to credentials_url
|
||||
end
|
||||
end
|
||||
9
test/fixtures/credentials.yml
vendored
Normal file
9
test/fixtures/credentials.yml
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
email: MyString
|
||||
password: MyString
|
||||
|
||||
two:
|
||||
email: MyString
|
||||
password: MyString
|
||||
8
test/fixtures/virtuals.yml
vendored
8
test/fixtures/virtuals.yml
vendored
@ -1,9 +1,9 @@
|
||||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
email: MyString
|
||||
destination: MyString
|
||||
email: abuse@example.net
|
||||
destination: bob@example.net
|
||||
|
||||
two:
|
||||
email: MyString
|
||||
destination: MyString
|
||||
email: postmaster@example.net
|
||||
destination: bob@example.net
|
||||
|
||||
BIN
test/models/.virtual_test.rb.kate-swp
Normal file
BIN
test/models/.virtual_test.rb.kate-swp
Normal file
Binary file not shown.
7
test/models/credential_test.rb
Normal file
7
test/models/credential_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require "test_helper"
|
||||
|
||||
class CredentialTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
||||
43
test/system/credentials_test.rb
Normal file
43
test/system/credentials_test.rb
Normal file
@ -0,0 +1,43 @@
|
||||
require "application_system_test_case"
|
||||
|
||||
class CredentialsTest < ApplicationSystemTestCase
|
||||
setup do
|
||||
@credential = credentials(:one)
|
||||
end
|
||||
|
||||
test "visiting the index" do
|
||||
visit credentials_url
|
||||
assert_selector "h1", text: "Credentials"
|
||||
end
|
||||
|
||||
test "should create credential" do
|
||||
visit credentials_url
|
||||
click_on "New credential"
|
||||
|
||||
fill_in "Email", with: @credential.email
|
||||
fill_in "Password", with: @credential.password
|
||||
click_on "Create Credential"
|
||||
|
||||
assert_text "Credential was successfully created"
|
||||
click_on "Back"
|
||||
end
|
||||
|
||||
test "should update Credential" do
|
||||
visit credential_url(@credential)
|
||||
click_on "Edit this credential", match: :first
|
||||
|
||||
fill_in "Email", with: @credential.email
|
||||
fill_in "Password", with: @credential.password
|
||||
click_on "Update Credential"
|
||||
|
||||
assert_text "Credential was successfully updated"
|
||||
click_on "Back"
|
||||
end
|
||||
|
||||
test "should destroy Credential" do
|
||||
visit credential_url(@credential)
|
||||
click_on "Destroy this credential", match: :first
|
||||
|
||||
assert_text "Credential was successfully destroyed"
|
||||
end
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user