From ec1d844f8c2a303aa1cd498b159d5093b6cac893 Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Mon, 10 Apr 2023 11:30:21 +0100 Subject: [PATCH 01/17] Create recipe, tables, seeds and write first integration tests --- chitter.sql | 32 ++++++ config.ru | 2 + route_recipe.md | 140 ++++++++++++++++++++++++++ schema_recipe.md | 143 +++++++++++++++++++++++++++ spec/integration/application_spec.rb | 21 ++++ spec/seeds.sql | 16 +++ 6 files changed, 354 insertions(+) create mode 100644 chitter.sql create mode 100644 config.ru create mode 100644 route_recipe.md create mode 100644 schema_recipe.md create mode 100644 spec/integration/application_spec.rb create mode 100644 spec/seeds.sql diff --git a/chitter.sql b/chitter.sql new file mode 100644 index 0000000000..4c87d97eae --- /dev/null +++ b/chitter.sql @@ -0,0 +1,32 @@ +-- file: chitter_database.sql + +-- Create the table without the foreign key first. +CREATE TABLE users ( + id SERIAL PRIMARY KEY, + name text, + username text, + email text, + password text, + UNIQUE (username, email) +); + +-- Then the table with the foreign key first. +CREATE TABLE peeps ( + id SERIAL PRIMARY KEY, + message text, + posted_at timestamp, +-- The foreign key name is always {other_table_singular}_id + user_id int, + constraint fk_user foreign key(user_id) + references users(id) + on delete cascade +); + +-- Create the join table. +CREATE TABLE tags ( + peep_id int, + user_id int, + constraint fk_peep foreign key(peep_id) references peeps(id) on delete cascade, + constraint fk_user foreign key(user_id) references users(id) on delete cascade, + PRIMARY KEY (peep_id, user_id) +); diff --git a/config.ru b/config.ru new file mode 100644 index 0000000000..206f7fe7ad --- /dev/null +++ b/config.ru @@ -0,0 +1,2 @@ +require "./app" +run Application \ No newline at end of file diff --git a/route_recipe.md b/route_recipe.md new file mode 100644 index 0000000000..3f03b94064 --- /dev/null +++ b/route_recipe.md @@ -0,0 +1,140 @@ +# Page: Homepage + + +## Request +``` +GET / +``` + +## If user logged in +### Response (200 OK) +> Form to create new peep (one single message field) +> +>HTML view with all peeps in rev chronological order (w/ author names and handles) + +## Else +### Response (200 OK) +>HTML view with all peeps in rev chronological order (w/ author names and handles) + +## Request + +### After submitting form to create peep: + +``` +POST /peep +Params: message +``` +1. Santise user input to protect against javascript and SQL injection - swapping /escaping characters where needed +2. Taking User ID from session object, create a new row in peeps table for peep +3. Check if message included “@“ followed by more text && if the text matches any usernames, add that user and that post to the join table, and send an automated email to each of those users +4. Redirect user to GET / where they should see their new peep + +``` +POST /logout +``` + +>If user not logged in to session +> +>403 forbidden +> +>Redirect to GET / +> +>ELSE +> +>Update session objec to logged out +> +>return /confirm_logout view + +# Page: Register + +``` +GET /register +``` + +## If user logged in +### Response (403 Forbidden) +redirect to GET / + +## Else +### Response (200 OK) +Display HTML form to register + +``` +POST/ submit_register +Params: username, name, email, password +``` +>If user logged in to session object already +> +>Return 403 forbidden +> +>Redirect to GET / +> +>ELSE +> +>Sanitise user input +> +>Check if valid email +> +>If username or email already taken, or email invalid +> +>Display /deny_register view +> +>Display reason for denial +> +>Else, Implement password hashing +> +>Create user in database, update session object to logged in and return /confirm_register view + +# Page: Login + +``` +GET /login +``` + +>If user logged in to session object already +> +>Return 403 forbidden +> +>Redirect to GET / +> +>ELSE +> +>Display view with HTML form to log in +> +>username and password fields + +``` +POST /login_attempt +params: username, password +``` +>If user logged in to session object already +> +>Return 403 forbidden +> +>Redirect to GET / +> +>ELSE +> +>Confirm if username exsits +> +>&& That password matches +> +>If either fails, return /login_denied view with reason for failure +> +>Else, update session object to logged in with correct user ID +> +>Redirect to / + +# OPTIONAL EXTRAS + +# Page: All Peeps by User ID +``` +GET /:user_id +``` +>Display all peeps by user_id + +# Page: All peeps a user is tagged in +``` +GET /tagged/:user_id +``` +>Display all peeps that a given user_id was tagged in diff --git a/schema_recipe.md b/schema_recipe.md new file mode 100644 index 0000000000..72b686a0ac --- /dev/null +++ b/schema_recipe.md @@ -0,0 +1,143 @@ +``` +STRAIGHT UP + +As a Maker +So that I can let people know what I am doing +I want to post a message (peep) to chitter + +As a maker +So that I can see what others are saying +I want to see all peeps in reverse chronological order + +As a Maker +So that I can better appreciate the context of a peep +I want to see the time at which it was made + +As a Maker +So that I can post messages on Chitter as me +I want to sign up for Chitter + +HARDER + +As a Maker +So that only I can post messages on Chitter as me +I want to log in to Chitter + +As a Maker +So that I can avoid others posting messages on Chitter as me +I want to log out of Chitter + +ADVANCED + +As a Maker +So that I can stay constantly tapped in to the shouty box of Chitter +I want to receive an email if I am tagged in a Peep +``` + +Nouns: + +`User`, `name`, `password`, `username (unique)`, `email (unique)` + +`Peep`, `peep posted_at`, peeps need to reference name of Maker and username + +`Tagged users` (in a peep) + + +## 2. Infer the Table Name and Columns + + + +| tables | columns | +| --------------------- | ------------------ | +| users | id, name, username (unique), email(unique), password +| peeps | id, message, posted_at, user_id +| tags | maker_id, post_id + +# TODO + +## 3. Decide the column types. + +[Here's a full documentation of PostgreSQL data types](https://www.postgresql.org/docs/current/datatype.html). + + +``` +# EXAMPLE: + +Table: users +id: SERIAL +name: text +username: text (unique) +email: text (unique) +password: text + +Table: peeps +id: SERIAL +message: text +posted_at: timestamp +user_id: int (id from users table) + +Table: tags +peep_id = int (id from peeps table) +user_id = int (id from users table) + +``` + +## 4. Decide on The Tables Relationship + + +``` +-> A user HAS MANY peeps +-> A peep BELONGS TO a user + +-> Therefore, the foreign key is on the peeps table. +``` + +``` +-> A peep HAS MANY tagged users +-> A tagged user HAS MANY peeps they are tagged in + +-> Therefore peeps and user tags have a MANY to MANY relationship +``` + +## 4. Write the SQL. + +```sql +-- file: chitter_database.sql + +-- Create the table without the foreign key first. +CREATE TABLE users ( + id SERIAL PRIMARY KEY, + name text, + username text, + email text, + password text, + UNIQUE (username, email); +); + +-- Then the table with the foreign key first. +CREATE TABLE peeps ( + id SERIAL PRIMARY KEY, + message text, + posted_at timestamp, +-- The foreign key name is always {other_table_singular}_id + user_id int, + constraint fk_user foreign key(user_id) + references users(id) + on delete cascade +); + +-- Create the join table. +CREATE TABLE tags ( + peep_id int, + user_id int, + constraint fk_peep foreign key(peep_id) references peeps(id) on delete cascade, + constraint fk_user foreign key(user_id) references users(id) on delete cascade, + PRIMARY KEY (peep_id, user_id) +); + + +``` + +## 5. Create the tables. + +In TablePlus diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb new file mode 100644 index 0000000000..5ed45311b0 --- /dev/null +++ b/spec/integration/application_spec.rb @@ -0,0 +1,21 @@ +require_relative "../../app" + +describe Application do + describe "Homepage" do + it "Displays all peeps in reverse chronological order" do + response = get(/) + expect(response.status).to eq(200) + expect(response.body).to match(/Big Brother is watching you @wsmith*this is jam hot*We shall meet in the place where there is no darkness/) + end + it "Displays the peep author's name and username" do + response = get(/) + expect(response.body).to include("Author: @tcarmichael - Tom Carmichael-Mhanna") + expect(response.body).to include("Author: @smhanna - Sarwah Mhanna") + end + + context "When the user is logged in" do + xit "Displays the form to post a new peep" do + end + end + end +end \ No newline at end of file diff --git a/spec/seeds.sql b/spec/seeds.sql new file mode 100644 index 0000000000..74f8521b90 --- /dev/null +++ b/spec/seeds.sql @@ -0,0 +1,16 @@ +TRUNCATE TABLE users, peeps, tags RESTART IDENTITY; + +INSERT INTO "public"."users" ("name", "username", "email", "password") VALUES +('Tom Carmichael-Mhanna', 'tcarmichael', 'tomcarmichael@hotmail.co.uk', 'password123'), +('Sarwah Mhanna', 'smhanna', 'sarwah_mhanna@hotmail.com', 'password456'), +('Winston Smith', 'wsmith', 'orwell.george@aol.com', 'bigbrother'); + +INSERT INTO "public"."peeps" ("message", "posted_at", "user_id") VALUES +('@wsmith & @smhanna - this is jam hot, this is jam hot', '2022-12-19 10:23:54', 1), +('Big Brother is watching you @wsmith', '2023-03-27 22:05:37', 2), +('We shall meet in the place where there is no darkness', '1984-06-15 14:33:00', 3); + +INSERT INTO "public"."tags" ("peep_id", "user_id") VALUES +(1, 2), +(1, 3), +(2, 3); From 3f5496f735d2024444a9d551a8ab1a506b07f92c Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Mon, 10 Apr 2023 13:21:09 +0100 Subject: [PATCH 02/17] Test drive PeepRepository #all method --- Gemfile | 8 ++++++++ Gemfile.lock | 28 ++++++++++++++++++++++++++++ app.rb | 14 ++++++++++++++ lib/database_connection.rb | 26 ++++++++++++++++++++++++++ lib/peep.rb | 3 +++ lib/peep_repository.rb | 19 +++++++++++++++++++ spec/integration/application_spec.rb | 27 ++++++++++++++++++++++----- spec/peep_repository_spec.rb | 22 ++++++++++++++++++++++ spec/spec_helper.rb | 3 +++ views/index.erb | 0 10 files changed, 145 insertions(+), 5 deletions(-) create mode 100644 app.rb create mode 100644 lib/database_connection.rb create mode 100644 lib/peep.rb create mode 100644 lib/peep_repository.rb create mode 100644 spec/peep_repository_spec.rb create mode 100644 views/index.erb diff --git a/Gemfile b/Gemfile index b1a320395a..687879c267 100644 --- a/Gemfile +++ b/Gemfile @@ -11,3 +11,11 @@ end group :development, :test do gem 'rubocop', '1.20' end + +gem "pg", "~> 1.4" + +gem "sinatra", "~> 3.0" + +gem "sinatra-contrib", "~> 3.0" +gem "webrick", "~> 1.8" +gem "rack-test", "~> 2.1" diff --git a/Gemfile.lock b/Gemfile.lock index 66064703c7..0b085d0b88 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,9 +5,18 @@ GEM ast (2.4.2) diff-lcs (1.4.4) docile (1.4.0) + multi_json (1.15.0) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) parallel (1.20.1) parser (3.0.2.0) ast (~> 2.4.1) + pg (1.4.6) + rack (2.2.6.4) + rack-protection (3.0.5) + rack + rack-test (2.1.0) + rack (>= 1.3) rainbow (3.0.0) regexp_parser (2.1.1) rexml (3.2.5) @@ -36,6 +45,7 @@ GEM rubocop-ast (1.11.0) parser (>= 3.0.1.1) ruby-progressbar (1.11.0) + ruby2_keywords (0.0.5) simplecov (0.21.2) docile (~> 1.1) simplecov-html (~> 0.11) @@ -46,18 +56,36 @@ GEM terminal-table simplecov-html (0.12.3) simplecov_json_formatter (0.1.3) + sinatra (3.0.5) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.0.5) + tilt (~> 2.0) + sinatra-contrib (3.0.5) + multi_json + mustermann (~> 3.0) + rack-protection (= 3.0.5) + sinatra (= 3.0.5) + tilt (~> 2.0) terminal-table (3.0.1) unicode-display_width (>= 1.1.1, < 3) + tilt (2.1.0) unicode-display_width (2.0.0) + webrick (1.8.1) PLATFORMS ruby DEPENDENCIES + pg (~> 1.4) + rack-test (~> 2.1) rspec rubocop (= 1.20) simplecov simplecov-console + sinatra (~> 3.0) + sinatra-contrib (~> 3.0) + webrick (~> 1.8) RUBY VERSION ruby 3.0.2p107 diff --git a/app.rb b/app.rb new file mode 100644 index 0000000000..827ab88380 --- /dev/null +++ b/app.rb @@ -0,0 +1,14 @@ +require 'sinatra' +require 'sinatra/reloader' + +class Application < Sinatra::Base + configure :development do + register Sinatra::Reloader + also_reload "lib/peep_repository" + also_reload "lib/user_repository" + end + + get '/' do + return erb(:index) + end +end \ No newline at end of file diff --git a/lib/database_connection.rb b/lib/database_connection.rb new file mode 100644 index 0000000000..ac9ec32a31 --- /dev/null +++ b/lib/database_connection.rb @@ -0,0 +1,26 @@ +require 'pg' + +# This class is a thin "wrapper" around the +# PG library. We'll use it in our project to interact +# with the database using SQL. + +class DatabaseConnection + # This method connects to PostgreSQL using the + # PG gem. We connect to 127.0.0.1, and select + # the database name given in argument. + def self.connect(database_name) + @connection = PG.connect({ host: '127.0.0.1', dbname: database_name }) + end + + # This method executes an SQL query + # on the database, providing some optional parameters + # (you will learn a bit later about when to provide these parameters). + def self.exec_params(query, params) + if @connection.nil? + raise 'DatabaseConnection.exec_params: Cannot run a SQL query as the connection to'\ + 'the database was never opened. Did you make sure to call first the method '\ + '`DatabaseConnection.connect` in your app.rb file (or in your tests spec_helper.rb)?' + end + @connection.exec_params(query, params) + end +end \ No newline at end of file diff --git a/lib/peep.rb b/lib/peep.rb new file mode 100644 index 0000000000..9413527f6a --- /dev/null +++ b/lib/peep.rb @@ -0,0 +1,3 @@ +class Peep + attr_accessor :id, :message, :posted_at, :user_id +end \ No newline at end of file diff --git a/lib/peep_repository.rb b/lib/peep_repository.rb new file mode 100644 index 0000000000..e1b2dfbb09 --- /dev/null +++ b/lib/peep_repository.rb @@ -0,0 +1,19 @@ +require_relative "./database_connection" +require_relative "./peep" + +class PeepRespository + def all + sql = "SELECT * FROM peeps;" + result_set = DatabaseConnection.exec_params(sql, []) + peeps = [] + result_set.each do |row| + peep = Peep.new + peep.id = row['id'].to_i + peep.message = row['message'] + peep.posted_at = row['posted_at'] + peep.user_id = row['user_id'].to_i + peeps << peep + end + return peeps + end +end \ No newline at end of file diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index 5ed45311b0..83c0f912fd 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -1,14 +1,31 @@ +require "spec_helper" +require "rack/test" require_relative "../../app" +def reset_tables + seed_sql = File.read('spec/seeds.sql') + connection = PG.connect(host: '127.0.0.1', dbname: 'chitter_test') + connection.exec(seed_sql) +end + describe Application do + before :each do + reset_tables + end + describe "Homepage" do - it "Displays all peeps in reverse chronological order" do - response = get(/) + # This is so we can use rack-test helper methods. + include Rack::Test::Methods + + let(:app) { Application.new } + + it "displays all peeps in reverse chronological order" do + response = get('/') expect(response.status).to eq(200) - expect(response.body).to match(/Big Brother is watching you @wsmith*this is jam hot*We shall meet in the place where there is no darkness/) + expect(response.body).to match(/Big Brother is watching you @wsmith[\s\S]*@wsmith & @smhanna - this is jam hot, this is jam hot[\s\S]*We shall meet in the place where there is no darkness/) end - it "Displays the peep author's name and username" do - response = get(/) + xit "Displays the peep author's name and username" do + response = get('/') expect(response.body).to include("Author: @tcarmichael - Tom Carmichael-Mhanna") expect(response.body).to include("Author: @smhanna - Sarwah Mhanna") end diff --git a/spec/peep_repository_spec.rb b/spec/peep_repository_spec.rb new file mode 100644 index 0000000000..a4252b3fe3 --- /dev/null +++ b/spec/peep_repository_spec.rb @@ -0,0 +1,22 @@ +require "peep_repository" + +def reset_tables + seed_sql = File.read('spec/seeds.sql') + connection = PG.connect(host: '127.0.0.1', dbname: 'chitter_test') + connection.exec(seed_sql) +end + +describe PeepRespository do + before :each do + reset_tables + end + + it "Returns all peeps" do + repo = PeepRespository.new + all_peeps =repo.all + expect(all_peeps.length).to eq 3 + expect(all_peeps.first.message).to eq "@wsmith & @smhanna - this is jam hot, this is jam hot" + expect(all_peeps.last.posted_at).to eq "1984-06-15 14:33:00" + expect(all_peeps[1].user_id).to eq 2 + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 252747d899..afd185d309 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,5 +1,8 @@ require 'simplecov' require 'simplecov-console' +require 'database_connection' + +DatabaseConnection.connect('chitter_test') SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([ SimpleCov::Formatter::Console, diff --git a/views/index.erb b/views/index.erb new file mode 100644 index 0000000000..e69de29bb2 From 708c8520e66c6c254cf7ae3c4866764371ea7faf Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Mon, 10 Apr 2023 13:31:13 +0100 Subject: [PATCH 03/17] Test Drive first integration test, displays peeps in rev chronological order --- app.rb | 3 +++ lib/peep_repository.rb | 4 ++-- spec/peep_repository_spec.rb | 9 +++++---- views/index.erb | 18 ++++++++++++++++++ 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app.rb b/app.rb index 827ab88380..d3a3b3febf 100644 --- a/app.rb +++ b/app.rb @@ -1,5 +1,7 @@ require 'sinatra' require 'sinatra/reloader' +require_relative 'lib/peep_repository' + class Application < Sinatra::Base configure :development do @@ -9,6 +11,7 @@ class Application < Sinatra::Base end get '/' do + @all_peeps = PeepRespository.new.all_by_rev_date_order return erb(:index) end end \ No newline at end of file diff --git a/lib/peep_repository.rb b/lib/peep_repository.rb index e1b2dfbb09..9e6df289b2 100644 --- a/lib/peep_repository.rb +++ b/lib/peep_repository.rb @@ -2,8 +2,8 @@ require_relative "./peep" class PeepRespository - def all - sql = "SELECT * FROM peeps;" + def all_by_rev_date_order + sql = "SELECT * FROM peeps ORDER BY posted_at DESC;" result_set = DatabaseConnection.exec_params(sql, []) peeps = [] result_set.each do |row| diff --git a/spec/peep_repository_spec.rb b/spec/peep_repository_spec.rb index a4252b3fe3..1598cab6a2 100644 --- a/spec/peep_repository_spec.rb +++ b/spec/peep_repository_spec.rb @@ -11,12 +11,13 @@ def reset_tables reset_tables end - it "Returns all peeps" do + it "Returns all peeps in reverse chronological order" do repo = PeepRespository.new - all_peeps =repo.all + all_peeps =repo.all_by_rev_date_order expect(all_peeps.length).to eq 3 - expect(all_peeps.first.message).to eq "@wsmith & @smhanna - this is jam hot, this is jam hot" + expect(all_peeps.first.message).to eq "Big Brother is watching you @wsmith" + expect(all_peeps.last.message).to eq "We shall meet in the place where there is no darkness" expect(all_peeps.last.posted_at).to eq "1984-06-15 14:33:00" - expect(all_peeps[1].user_id).to eq 2 + expect(all_peeps[1].user_id).to eq 1 end end diff --git a/views/index.erb b/views/index.erb index e69de29bb2..8ce2e5d269 100644 --- a/views/index.erb +++ b/views/index.erb @@ -0,0 +1,18 @@ + + + + + <% @all_peeps.each do |peep| %> + + + + + + + + + + <% end %> +
Posted by: <%= peep.user_id%>
<%= peep.message %>
On <%= peep.posted_at %>
+ + From a820527029df6caac3d2aaed5c6ebbcd936f61ab Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Mon, 10 Apr 2023 13:47:11 +0100 Subject: [PATCH 04/17] Test drive home page to include displaying the peep's author's details --- app.rb | 2 +- lib/peep.rb | 2 +- lib/peep_repository.rb | 25 ++++++++++++++++++++++++- lib/user.rb | 3 +++ lib/user_repository.rb | 3 +++ spec/integration/application_spec.rb | 6 +++++- spec/peep_repository_spec.rb | 13 +++++++++++++ views/index.erb | 2 +- 8 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 lib/user.rb create mode 100644 lib/user_repository.rb diff --git a/app.rb b/app.rb index d3a3b3febf..d395018870 100644 --- a/app.rb +++ b/app.rb @@ -11,7 +11,7 @@ class Application < Sinatra::Base end get '/' do - @all_peeps = PeepRespository.new.all_by_rev_date_order + @all_peeps = PeepRespository.new.all_by_rev_date_order_with_author return erb(:index) end end \ No newline at end of file diff --git a/lib/peep.rb b/lib/peep.rb index 9413527f6a..e422dd2a2b 100644 --- a/lib/peep.rb +++ b/lib/peep.rb @@ -1,3 +1,3 @@ class Peep - attr_accessor :id, :message, :posted_at, :user_id + attr_accessor :id, :message, :posted_at, :user_id, :user end \ No newline at end of file diff --git a/lib/peep_repository.rb b/lib/peep_repository.rb index 9e6df289b2..552aae2408 100644 --- a/lib/peep_repository.rb +++ b/lib/peep_repository.rb @@ -1,7 +1,9 @@ require_relative "./database_connection" require_relative "./peep" +require_relative "./user" class PeepRespository + # Consider removing this method later on in app development if it is redundant: def all_by_rev_date_order sql = "SELECT * FROM peeps ORDER BY posted_at DESC;" result_set = DatabaseConnection.exec_params(sql, []) @@ -16,4 +18,25 @@ def all_by_rev_date_order end return peeps end -end \ No newline at end of file + + def all_by_rev_date_order_with_author + sql = "SELECT message, posted_at, name, username + FROM peeps JOIN users ON user_id = users.id + ORDER BY posted_at DESC;" + result_set = DatabaseConnection.exec_params(sql, []) + peeps = [] + result_set.each do |row| + peep = Peep.new + peep.id = row['id'].to_i + peep.message = row['message'] + peep.posted_at = row['posted_at'] + peep.user_id = row['user_id'].to_i + user = User.new + user.name = row['name'] + user.username = row['username'] + peep.user = user + peeps << peep + end + return peeps + end +end diff --git a/lib/user.rb b/lib/user.rb new file mode 100644 index 0000000000..11a95fcc76 --- /dev/null +++ b/lib/user.rb @@ -0,0 +1,3 @@ +class User + attr_accessor :id, :name, :username, :email, :password +end \ No newline at end of file diff --git a/lib/user_repository.rb b/lib/user_repository.rb new file mode 100644 index 0000000000..1615380cc4 --- /dev/null +++ b/lib/user_repository.rb @@ -0,0 +1,3 @@ +class UserRepository + +end \ No newline at end of file diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index 83c0f912fd..e6f684f348 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -24,11 +24,15 @@ def reset_tables expect(response.status).to eq(200) expect(response.body).to match(/Big Brother is watching you @wsmith[\s\S]*@wsmith & @smhanna - this is jam hot, this is jam hot[\s\S]*We shall meet in the place where there is no darkness/) end - xit "Displays the peep author's name and username" do + it "Displays the peep author's name and username" do response = get('/') expect(response.body).to include("Author: @tcarmichael - Tom Carmichael-Mhanna") expect(response.body).to include("Author: @smhanna - Sarwah Mhanna") end + it "Displays the peep's timestamp" do + response = get('/') + expect(response.body).to match(/On 2022-12-19 10:23:54[\s\S]*On 1984-06-15 14:33:00/) + end context "When the user is logged in" do xit "Displays the form to post a new peep" do diff --git a/spec/peep_repository_spec.rb b/spec/peep_repository_spec.rb index 1598cab6a2..0a59ed69c8 100644 --- a/spec/peep_repository_spec.rb +++ b/spec/peep_repository_spec.rb @@ -11,6 +11,7 @@ def reset_tables reset_tables end + # Consider removing this method later on in app development if it is redundant: it "Returns all peeps in reverse chronological order" do repo = PeepRespository.new all_peeps =repo.all_by_rev_date_order @@ -20,4 +21,16 @@ def reset_tables expect(all_peeps.last.posted_at).to eq "1984-06-15 14:33:00" expect(all_peeps[1].user_id).to eq 1 end + + it "Returns all peeps in reverse chronological order with their author's name and tag" do + repo = PeepRespository.new + all_peeps =repo.all_by_rev_date_order_with_author + expect(all_peeps.length).to eq 3 + expect(all_peeps.first.message).to eq "Big Brother is watching you @wsmith" + expect(all_peeps.last.message).to eq "We shall meet in the place where there is no darkness" + expect(all_peeps.last.posted_at).to eq "1984-06-15 14:33:00" + expect(all_peeps[1].user.name).to eq "Tom Carmichael-Mhanna" + expect(all_peeps[1].user.username).to eq "tcarmichael" + + end end diff --git a/views/index.erb b/views/index.erb index 8ce2e5d269..f2d4b136c0 100644 --- a/views/index.erb +++ b/views/index.erb @@ -4,7 +4,7 @@ <% @all_peeps.each do |peep| %> - + From 3586693a69df553c032c6a1d66fd5a4d4b248743 Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Mon, 10 Apr 2023 14:23:21 +0100 Subject: [PATCH 05/17] Test drive home page to display form to create peep for logged in users --- app.rb | 2 ++ spec/integration/application_spec.rb | 8 +++++++- views/index.erb | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app.rb b/app.rb index d395018870..0b46ca49c5 100644 --- a/app.rb +++ b/app.rb @@ -4,6 +4,8 @@ class Application < Sinatra::Base + enable :sessions + configure :development do register Sinatra::Reloader also_reload "lib/peep_repository" diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index e6f684f348..a0f4e644d3 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -35,7 +35,13 @@ def reset_tables end context "When the user is logged in" do - xit "Displays the form to post a new peep" do + it "Displays the form to post a new peep" do + # No query params, but session object is simulated + response = get('/', {}, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) + expect(response.status).to eq(200) + expect(response.body).to include('
') + expect(response.body).to include('') + expect(response.body).to include('') end end end diff --git a/views/index.erb b/views/index.erb index f2d4b136c0..ff91bcccc0 100644 --- a/views/index.erb +++ b/views/index.erb @@ -2,6 +2,11 @@
Posted by: <%= peep.user_id%>Author: @<%= peep.user.username%> - <%= peep.user.name%>
<%= peep.message %>
+ <% if session[:user_id] %> + + + + <% end %> <% @all_peeps.each do |peep| %> From 8080d9b74550d9a4b67610f76d51063048ea651d Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Mon, 10 Apr 2023 15:04:21 +0100 Subject: [PATCH 06/17] Test drive home pae to display link to login when user not logged in --- app.rb | 3 ++- public/style.css | 3 +++ spec/integration/application_spec.rb | 25 +++++++++++++++++++++++++ views/index.erb | 15 ++++++++++++++- 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 public/style.css diff --git a/app.rb b/app.rb index 0b46ca49c5..79d3acfac7 100644 --- a/app.rb +++ b/app.rb @@ -2,10 +2,11 @@ require 'sinatra/reloader' require_relative 'lib/peep_repository' +DatabaseConnection.connect('chitter') class Application < Sinatra::Base enable :sessions - + configure :development do register Sinatra::Reloader also_reload "lib/peep_repository" diff --git a/public/style.css b/public/style.css new file mode 100644 index 0000000000..e57ec752c2 --- /dev/null +++ b/public/style.css @@ -0,0 +1,3 @@ +li { + display: inline; +} diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index a0f4e644d3..44ade59c5c 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -34,6 +34,11 @@ def reset_tables expect(response.body).to match(/On 2022-12-19 10:23:54[\s\S]*On 1984-06-15 14:33:00/) end + it "Displays the peep's timestamp" do + response = get('/') + expect(response.body).to match(/On 2022-12-19 10:23:54[\s\S]*On 1984-06-15 14:33:00/) + end + context "When the user is logged in" do it "Displays the form to post a new peep" do # No query params, but session object is simulated @@ -42,6 +47,26 @@ def reset_tables expect(response.body).to include('') expect(response.body).to include('') expect(response.body).to include('') + expect(response.body).to include('') + end + it "Doesn't display a link to login" do + response = get('/', {}, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) + expect(response.status).to eq(200) + expect(response.body).not_to include('LoginLogin') + end + it "Doesn't display the form to create a new peep" do + response = get('/') + expect(response.status).to eq (200) + expect(response.body).not_to include('') + expect(response.body).not_to include('') end end end diff --git a/views/index.erb b/views/index.erb index ff91bcccc0..dcb2996fdb 100644 --- a/views/index.erb +++ b/views/index.erb @@ -1,9 +1,22 @@ - + + +
Author: @<%= peep.user.username%> - <%= peep.user.name%>
+
+ +
+ <% if session[:user_id] %> +
<% end %> From 922b0db61e3d736616a068e68b9b0c855aff43bd Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Mon, 10 Apr 2023 15:15:21 +0100 Subject: [PATCH 07/17] Test drive GET /login when user not logged in already --- app.rb | 4 +++ spec/integration/application_spec.rb | 42 ++++++++++++++++++---------- views/index.erb | 7 +++-- views/login.erb | 17 +++++++++++ 4 files changed, 52 insertions(+), 18 deletions(-) create mode 100644 views/login.erb diff --git a/app.rb b/app.rb index 79d3acfac7..4e2b3f8f62 100644 --- a/app.rb +++ b/app.rb @@ -17,4 +17,8 @@ class Application < Sinatra::Base @all_peeps = PeepRespository.new.all_by_rev_date_order_with_author return erb(:index) end + + get '/login' do + return erb(:login) + end end \ No newline at end of file diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index 44ade59c5c..c3acdb86f2 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -13,56 +13,54 @@ def reset_tables reset_tables end - describe "Homepage" do - # This is so we can use rack-test helper methods. - include Rack::Test::Methods + include Rack::Test::Methods - let(:app) { Application.new } + let(:app) { Application.new } + describe "Homepage" do it "displays all peeps in reverse chronological order" do response = get('/') expect(response.status).to eq(200) expect(response.body).to match(/Big Brother is watching you @wsmith[\s\S]*@wsmith & @smhanna - this is jam hot, this is jam hot[\s\S]*We shall meet in the place where there is no darkness/) end - it "Displays the peep author's name and username" do + it "displays the peep author's name and username" do response = get('/') expect(response.body).to include("Author: @tcarmichael - Tom Carmichael-Mhanna") expect(response.body).to include("Author: @smhanna - Sarwah Mhanna") end - it "Displays the peep's timestamp" do + it "displays the peep's timestamp" do response = get('/') expect(response.body).to match(/On 2022-12-19 10:23:54[\s\S]*On 1984-06-15 14:33:00/) end - it "Displays the peep's timestamp" do + it "displays the peep's timestamp" do response = get('/') expect(response.body).to match(/On 2022-12-19 10:23:54[\s\S]*On 1984-06-15 14:33:00/) end - context "When the user is logged in" do - it "Displays the form to post a new peep" do + context "when the user is logged in" do + it "displays the form to post a new peep" do # No query params, but session object is simulated response = get('/', {}, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) expect(response.status).to eq(200) expect(response.body).to include('') - expect(response.body).to include('') - expect(response.body).to include('') expect(response.body).to include('') + expect(response.body).to include('') end - it "Doesn't display a link to login" do + it "doesn't display a link to login" do response = get('/', {}, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) expect(response.status).to eq(200) expect(response.body).not_to include('LoginLogin') end - it "Doesn't display the form to create a new peep" do + it "doesn't display the form to create a new peep" do response = get('/') expect(response.status).to eq (200) expect(response.body).not_to include('') @@ -70,4 +68,18 @@ def reset_tables end end end + + describe "Login" do + context "when user is not logged in" do + it "displays a form to log in" do + response = get('/login') + expect(response.status).to eq 200 + expect(response.body).to include('') + expect(response.body).to include('') + expect(response.body).to include('') + expect(response.body).to include('') + expect(response.body).to include('') + end + end + end end \ No newline at end of file diff --git a/views/index.erb b/views/index.erb index dcb2996fdb..6a750b0fac 100644 --- a/views/index.erb +++ b/views/index.erb @@ -16,9 +16,10 @@ <% if session[:user_id] %> -
- - +
+ + + <% end %> <% @all_peeps.each do |peep| %>
diff --git a/views/login.erb b/views/login.erb new file mode 100644 index 0000000000..a4eaf06d1c --- /dev/null +++ b/views/login.erb @@ -0,0 +1,17 @@ + + + + + + <% if session[:user_id] %> + <% else %> + + + + + + + + <% end %> + + From cbb17863b238f8d6983c89a654ab46228b66dd9f Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Mon, 10 Apr 2023 15:39:47 +0100 Subject: [PATCH 08/17] Test drive login path redirect when user is already logged in --- app.rb | 4 ++++ route_recipe.md | 10 +++++----- spec/integration/application_spec.rb | 7 +++++++ views/login.erb | 3 --- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/app.rb b/app.rb index 4e2b3f8f62..cafbd05310 100644 --- a/app.rb +++ b/app.rb @@ -19,6 +19,10 @@ class Application < Sinatra::Base end get '/login' do + if session[:user_id] + return redirect('/') + end + return erb(:login) end end \ No newline at end of file diff --git a/route_recipe.md b/route_recipe.md index 3f03b94064..ae6f3f163f 100644 --- a/route_recipe.md +++ b/route_recipe.md @@ -35,7 +35,7 @@ POST /logout >If user not logged in to session > ->403 forbidden +>302 redirect > >Redirect to GET / > @@ -52,7 +52,7 @@ GET /register ``` ## If user logged in -### Response (403 Forbidden) +### Response (302 redirect) redirect to GET / ## Else @@ -65,7 +65,7 @@ Params: username, name, email, password ``` >If user logged in to session object already > ->Return 403 forbidden +>Return 302 redirect > >Redirect to GET / > @@ -93,7 +93,7 @@ GET /login >If user logged in to session object already > ->Return 403 forbidden +>Return 302 redirect > >Redirect to GET / > @@ -109,7 +109,7 @@ params: username, password ``` >If user logged in to session object already > ->Return 403 forbidden +>Return 302 redirect > >Redirect to GET / > diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index c3acdb86f2..f6509a5c9a 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -70,6 +70,13 @@ def reset_tables end describe "Login" do + context "when user is already logged in" do + it "redirects the user to the home page" do + response = get('/login', {}, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) + expect(response.status).to eq(302) + # Why does this result in 'www.example.com'? => expect(response.location).to eq('/') + end + end context "when user is not logged in" do it "displays a form to log in" do response = get('/login') diff --git a/views/login.erb b/views/login.erb index a4eaf06d1c..31181059de 100644 --- a/views/login.erb +++ b/views/login.erb @@ -3,8 +3,6 @@ - <% if session[:user_id] %> - <% else %>
@@ -12,6 +10,5 @@ - <% end %> From d30caa4edb4d4959e937bbc4088e86030a6554c0 Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Mon, 10 Apr 2023 17:08:28 +0100 Subject: [PATCH 09/17] Test drive user login page --- app.rb | 28 +++++++++++++++ lib/user_repository.rb | 16 ++++++++- spec/integration/application_spec.rb | 51 +++++++++++++++++++++++++--- spec/peep_repository_spec.rb | 2 +- spec/user_repository_spec.rb | 30 ++++++++++++++++ views/login_denied.erb | 15 ++++++++ 6 files changed, 136 insertions(+), 6 deletions(-) create mode 100644 spec/user_repository_spec.rb create mode 100644 views/login_denied.erb diff --git a/app.rb b/app.rb index cafbd05310..331815c2ff 100644 --- a/app.rb +++ b/app.rb @@ -25,4 +25,32 @@ class Application < Sinatra::Base return erb(:login) end + + post '/login_attempt' do + # TODO : Santise user input from this form + if session[:user_id] + return redirect('/') + end + + username = params[:username] + password = params[:password] + # TODO: Break authenticate_user out into a separate method + user = UserRepository.new.find_by_username(username) + if !user + @failure_reason = "username" + status 401 + return erb(:login_denied) + elsif password != user.password + status 401 + @failure_reason = "password" + return erb(:login_denied) + # Is this conditonal statement robust enough? + elsif password == user.password + session[:user_id] = user.id + session[:username] = user.username + # TODO: Do I need this boolean variable? + # session[:logged_in] = true + return redirect('/') + end + end end \ No newline at end of file diff --git a/lib/user_repository.rb b/lib/user_repository.rb index 1615380cc4..446d08c8d0 100644 --- a/lib/user_repository.rb +++ b/lib/user_repository.rb @@ -1,3 +1,17 @@ -class UserRepository +require_relative "./user" +require_relative "./database_connection" +class UserRepository + def find_by_username(username) + sql = 'SELECT * FROM users WHERE username = $1;' + result = DatabaseConnection.exec_params(sql, [username]).first + return nil if !result + user = User.new + user.id = result['id'].to_i + user.username = result['username'] + user.name = result['name'] + user.email = result['email'] + user.password = result['password'] + return user + end end \ No newline at end of file diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index f6509a5c9a..616e51f164 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -17,7 +17,7 @@ def reset_tables let(:app) { Application.new } - describe "Homepage" do + describe "homepage" do it "displays all peeps in reverse chronological order" do response = get('/') expect(response.status).to eq(200) @@ -69,12 +69,13 @@ def reset_tables end end - describe "Login" do + describe "login" do context "when user is already logged in" do it "redirects the user to the home page" do response = get('/login', {}, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) - expect(response.status).to eq(302) - # Why does this result in 'www.example.com'? => expect(response.location).to eq('/') + expect(response).to be_redirect + follow_redirect! + expect(last_request.path).to eq('/') end end context "when user is not logged in" do @@ -88,5 +89,47 @@ def reset_tables expect(response.body).to include('') end end + context "after submitting the login form" do + context "if the user is already logged in" do + it "redirects the user to the home page" do + response = post('/login_attempt', { username: 'jimbob', password: 'abracadabra' }, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) + expect(response).to be_redirect + follow_redirect! + expect(last_request.path).to eq('/') + end + end + context "if the user is NOT already logged in" do + context "and provides correct credentials" do + it "logs the user in" do + response = post('/login_attempt', { username: 'wsmith', password: 'bigbrother' } ) + expect(response).to be_redirect + follow_redirect! + expect(last_request.path).to eq('/') + # Check that the session object has been updated with the user's ID + expect(last_request.env['rack.session'][:user_id]).to eq 3 + expect(last_request.env['rack.session'][:username]).to eq 'wsmith' + + end + end + context "and provides incorrect username" do + it "returns an error page" do + response = post('/login_attempt', { username: 'jay_dilla', password: 'bigbrother' } ) + expect(response.status).to eq 401 + expect(response.body).to include('Login failed: username not found') + # Check that the session object has been updated with the user's ID + expect(last_request.env['rack.session'][:user_id]).to be_nil + end + end + context "and provides incorrect password" do + it "returns an error page" do + response = post('/login_attempt', { username: 'wsmith', password: '1984' } ) + expect(response.status).to eq 401 + expect(response.body).to include('Login failed: incorrect password') + # Check that the session object has been updated with the user's ID + expect(last_request.env['rack.session'][:user_id]).to be_nil + end + end + end + end end end \ No newline at end of file diff --git a/spec/peep_repository_spec.rb b/spec/peep_repository_spec.rb index 0a59ed69c8..e19e8d9f8d 100644 --- a/spec/peep_repository_spec.rb +++ b/spec/peep_repository_spec.rb @@ -14,7 +14,7 @@ def reset_tables # Consider removing this method later on in app development if it is redundant: it "Returns all peeps in reverse chronological order" do repo = PeepRespository.new - all_peeps =repo.all_by_rev_date_order + all_peeps = repo.all_by_rev_date_order expect(all_peeps.length).to eq 3 expect(all_peeps.first.message).to eq "Big Brother is watching you @wsmith" expect(all_peeps.last.message).to eq "We shall meet in the place where there is no darkness" diff --git a/spec/user_repository_spec.rb b/spec/user_repository_spec.rb new file mode 100644 index 0000000000..e7e6e4a72b --- /dev/null +++ b/spec/user_repository_spec.rb @@ -0,0 +1,30 @@ +require "user_repository" + +def reset_tables + seed_sql = File.read('spec/seeds.sql') + connection = PG.connect(host: '127.0.0.1', dbname: 'chitter_test') + connection.exec(seed_sql) +end + +describe UserRepository do + before :each do + reset_tables + end + + context "when searching by username" do + it "returns the user" do + user = UserRepository.new.find_by_username('tcarmichael') + expect(user).to be_truthy + expect(user.password).to eq "password123" + expect(user.name).to eq "Tom Carmichael-Mhanna" + expect(user.email).to eq "tomcarmichael@hotmail.co.uk" + end + it "returns nil if user not found" do + user = UserRepository.new.find_by_username('jay_dilla') + expect(user).not_to be_truthy + end + end + + + +end \ No newline at end of file diff --git a/views/login_denied.erb b/views/login_denied.erb new file mode 100644 index 0000000000..fd345d2b0d --- /dev/null +++ b/views/login_denied.erb @@ -0,0 +1,15 @@ + + + + + + <% if @failure_reason == "username" %> +

Login failed: username not found

+ <% elsif @failure_reason == "password" %> +

Login failed: incorrect password

+ <% end %> +

+ Retry login +

+ + From ca6c23059746ae65129f3aec5132a7983cd6720a Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Wed, 12 Apr 2023 09:50:57 +0100 Subject: [PATCH 10/17] Began refactoring login functionality, commiting in order to submit work by deadline --- Gemfile | 2 + Gemfile.lock | 2 + app.rb | 69 +++++++++++++++++++++++----- lib/database_connection.rb | 13 +++++- lib/peep_repository.rb | 1 - lib/user_repository.rb | 37 ++++++++++++++- route_recipe.md | 25 +++++----- spec/integration/application_spec.rb | 35 +++++++++++++- spec/seeds.sql | 2 +- spec/spec_helper.rb | 4 +- spec/user_repository_spec.rb | 52 +++++++++++++++++++-- views/login.erb | 15 +++--- views/register.erb | 19 ++++++++ 13 files changed, 236 insertions(+), 40 deletions(-) create mode 100644 views/register.erb diff --git a/Gemfile b/Gemfile index 687879c267..e3439cc086 100644 --- a/Gemfile +++ b/Gemfile @@ -19,3 +19,5 @@ gem "sinatra", "~> 3.0" gem "sinatra-contrib", "~> 3.0" gem "webrick", "~> 1.8" gem "rack-test", "~> 2.1" + +gem "bcrypt", "~> 3.1" diff --git a/Gemfile.lock b/Gemfile.lock index 0b085d0b88..5f3bf33fda 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,6 +3,7 @@ GEM specs: ansi (1.5.0) ast (2.4.2) + bcrypt (3.1.18) diff-lcs (1.4.4) docile (1.4.0) multi_json (1.15.0) @@ -77,6 +78,7 @@ PLATFORMS ruby DEPENDENCIES + bcrypt (~> 3.1) pg (~> 1.4) rack-test (~> 2.1) rspec diff --git a/app.rb b/app.rb index 331815c2ff..e70825b65e 100644 --- a/app.rb +++ b/app.rb @@ -1,8 +1,11 @@ require 'sinatra' require 'sinatra/reloader' require_relative 'lib/peep_repository' +require_relative 'lib/user' +require_relative 'lib/user_repository' +require_relative 'lib/database_connection' -DatabaseConnection.connect('chitter') +DatabaseConnection.connect class Application < Sinatra::Base enable :sessions @@ -32,25 +35,67 @@ class Application < Sinatra::Base return redirect('/') end - username = params[:username] - password = params[:password] - # TODO: Break authenticate_user out into a separate method - user = UserRepository.new.find_by_username(username) - if !user + # Returns a User object if succesful + login = UserRepository.new.login(params[:username], params[:password]) + + if login == nil @failure_reason = "username" status 401 return erb(:login_denied) - elsif password != user.password - status 401 + elsif login == false @failure_reason = "password" + status 401 return erb(:login_denied) - # Is this conditonal statement robust enough? - elsif password == user.password - session[:user_id] = user.id - session[:username] = user.username + else + session[:user_id] = login.id + session[:username] = login.username # TODO: Do I need this boolean variable? # session[:logged_in] = true return redirect('/') end end + + + # user = UserRepository.new.find_by_username(username) + # if !user + # @failure_reason = "username" + # status 401 + # return erb(:login_denied) + # elsif password != user.password + # status 401 + # @failure_reason = "password" + # return erb(:login_denied) + # # Is this conditonal statement robust enough? + # elsif password == user.password + # session[:user_id] = user.id + # session[:username] = user.username + # # TODO: Do I need this boolean variable? + # # session[:logged_in] = true + # return redirect('/') + + + get '/register' do + # TODO : Santise user input from this form + if session[:user_id] + return redirect('/') + end + + return erb(:register) + end + + post '/submit_register' do + + # if UserRepository.new.find_by_username(params[:username]) + # return erb (:deny_register) + + new_user = User.new + new_user.name = params[:name] + new_user.username = params[:username] + new_user.email = params[:email] + new_user.password = params[:password] + + UserRepository.new.create(user) + + return erb(:register) + end end \ No newline at end of file diff --git a/lib/database_connection.rb b/lib/database_connection.rb index ac9ec32a31..54b9099cc5 100644 --- a/lib/database_connection.rb +++ b/lib/database_connection.rb @@ -8,7 +8,18 @@ class DatabaseConnection # This method connects to PostgreSQL using the # PG gem. We connect to 127.0.0.1, and select # the database name given in argument. - def self.connect(database_name) + def self.connect + # If the environment variable (set by Render) + # is present, use this to open the connection. + if ENV['DATABASE_URL'] != nil + @connection = PG.connect(ENV['DATABASE_URL']) + return + end + if ENV['ENV'] == 'test' + database_name = 'chitter_test' + else + database_name = 'chitter' + end @connection = PG.connect({ host: '127.0.0.1', dbname: database_name }) end diff --git a/lib/peep_repository.rb b/lib/peep_repository.rb index 552aae2408..7cf378a523 100644 --- a/lib/peep_repository.rb +++ b/lib/peep_repository.rb @@ -1,4 +1,3 @@ -require_relative "./database_connection" require_relative "./peep" require_relative "./user" diff --git a/lib/user_repository.rb b/lib/user_repository.rb index 446d08c8d0..f3cbaf9586 100644 --- a/lib/user_repository.rb +++ b/lib/user_repository.rb @@ -1,7 +1,23 @@ require_relative "./user" -require_relative "./database_connection" +require 'bcrypt' class UserRepository + def all + sql = 'SELECT * FROM users' + result_set = DatabaseConnection.exec_params(sql, []) + users = [] + result_set.each do |row| + user = User.new + user.name = row['name'] + user.username = row['username'] + user.email = row['email'] + user.password = row['password'] + users << user + end + + return users + end + def find_by_username(username) sql = 'SELECT * FROM users WHERE username = $1;' result = DatabaseConnection.exec_params(sql, [username]).first @@ -14,4 +30,23 @@ def find_by_username(username) user.password = result['password'] return user end + + def login(username, submitted_password) + user = find_by_username(username) + return { success: false, reason: "invalid username "} if !user + stored_password = BCrypt::Password.new(user.password) + if stored_password == submitted_password + return { success: true, username: user.username, user_id: user.id } + else + return { success: false, reason: "incorrect password "} + end + end + + def create(user) + sql = 'INSERT INTO users (name, username, email, password) VALUES ($1, $2, $3, $4);' + hashed_password = BCrypt::Password.create(user.password) + params = [user.name, user.username, user.email, hashed_password] + DatabaseConnection.exec_params(sql, params) + return nil + end end \ No newline at end of file diff --git a/route_recipe.md b/route_recipe.md index ae6f3f163f..2ba0c6e65c 100644 --- a/route_recipe.md +++ b/route_recipe.md @@ -1,24 +1,23 @@ # Page: Homepage - -## Request ``` GET / ``` - ## If user logged in -### Response (200 OK) + +> Response (200 OK) +> > Form to create new peep (one single message field) > >HTML view with all peeps in rev chronological order (w/ author names and handles) ## Else -### Response (200 OK) ->HTML view with all peeps in rev chronological order (w/ author names and handles) +> Response (200 OK) +> +> HTML view with all peeps in rev chronological order (w/ author names and handles) -## Request +## After submitting form to create peep: -### After submitting form to create peep: ``` POST /peep @@ -52,12 +51,14 @@ GET /register ``` ## If user logged in -### Response (302 redirect) -redirect to GET / +> +> Response (302 redirect) +> redirect to GET / ## Else -### Response (200 OK) -Display HTML form to register +> Response (200 OK) +> +>Display HTML form to register ``` POST/ submit_register diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index 616e51f164..8aa0217575 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -1,6 +1,7 @@ require "spec_helper" require "rack/test" require_relative "../../app" +require "user_repository" def reset_tables seed_sql = File.read('spec/seeds.sql') @@ -108,7 +109,6 @@ def reset_tables # Check that the session object has been updated with the user's ID expect(last_request.env['rack.session'][:user_id]).to eq 3 expect(last_request.env['rack.session'][:username]).to eq 'wsmith' - end end context "and provides incorrect username" do @@ -132,4 +132,37 @@ def reset_tables end end end + describe "GET /register" do + context "when user is already logged in" do + it "redirects the user to the home page" do + response = get('/register', {}, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) + expect(response).to be_redirect + follow_redirect! + expect(last_request.path).to eq('/') + end + end + context "if the user is NOT already logged in" do + it "displays the login form" do + response = get('/register') + expect(response.status).to eq(200) + expect(response.body).to include('
') + expect(response.body).to include('') + expect(response.body).to include('') + expect(response.body).to include('') + expect(response.body).to include('') + end + context "and submits the form" do + it "registers them" do + response = post('/submit_register', { name: 'Dave Smith', username: 'prophet5', email: "sequential@circuits.com", password: 'polyphony'}) + expect(response.status).to eq(200) + expect(response.body).to include('Congtratulations @prophet5, you successfully signed up for Chitter!') + expect(response.body).to include("Login here to start Chittering") + user = UserRepository.new.find_by_username('prophet5') + expect(user).not_to be_nil + expect(user.name).to eq('Dave Smith') + expect(user.email).to eq('sequential@circuits.com') + end + end + end + end end \ No newline at end of file diff --git a/spec/seeds.sql b/spec/seeds.sql index 74f8521b90..34ab2e65c2 100644 --- a/spec/seeds.sql +++ b/spec/seeds.sql @@ -3,7 +3,7 @@ TRUNCATE TABLE users, peeps, tags RESTART IDENTITY; INSERT INTO "public"."users" ("name", "username", "email", "password") VALUES ('Tom Carmichael-Mhanna', 'tcarmichael', 'tomcarmichael@hotmail.co.uk', 'password123'), ('Sarwah Mhanna', 'smhanna', 'sarwah_mhanna@hotmail.com', 'password456'), -('Winston Smith', 'wsmith', 'orwell.george@aol.com', 'bigbrother'); +('Winston Smith', 'wsmith', 'orwell.george@aol.com', '$2a$12$OAMZTYU7QDGVpgQIIYGdteqshFWf9LOuwWVw8RB.4NdX3yeHy.CPC'); INSERT INTO "public"."peeps" ("message", "posted_at", "user_id") VALUES ('@wsmith & @smhanna - this is jam hot, this is jam hot', '2022-12-19 10:23:54', 1), diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index afd185d309..69d9d7c341 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -2,7 +2,9 @@ require 'simplecov-console' require 'database_connection' -DatabaseConnection.connect('chitter_test') +ENV['ENV'] = 'test' + +DatabaseConnection.connect SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([ SimpleCov::Formatter::Console, diff --git a/spec/user_repository_spec.rb b/spec/user_repository_spec.rb index e7e6e4a72b..d8a7f8bfbf 100644 --- a/spec/user_repository_spec.rb +++ b/spec/user_repository_spec.rb @@ -11,20 +11,66 @@ def reset_tables reset_tables end + let(:repo) { UserRepository.new } + context "when searching by username" do it "returns the user" do - user = UserRepository.new.find_by_username('tcarmichael') + user = repo.find_by_username('tcarmichael') expect(user).to be_truthy expect(user.password).to eq "password123" expect(user.name).to eq "Tom Carmichael-Mhanna" expect(user.email).to eq "tomcarmichael@hotmail.co.uk" end it "returns nil if user not found" do - user = UserRepository.new.find_by_username('jay_dilla') + user = repo.find_by_username('jay_dilla') expect(user).not_to be_truthy end end + let(:user) { + user = User.new + user.name = "John Smith" + user.username = "jsmith" + user.email = "john@smith.com" + user.password = "JS123" + return user + } + + context "when creating a new user" do + it "adds the user to the DB and returns nil" do + expect(repo.create(user)).to be_nil + expect(repo.all.length).to eq 4 + expect(repo.all.last.name).to eq "John Smith" + expect(repo.all.last.email).to eq "john@smith.com" + end + xit "fails to add them given any missing info" do + #TODO? + end + it "stores their password using the BCrypt hashing algorithm" do + repo.create(user) + added_user = repo.all.last + stored_password = BCrypt::Password.new(added_user.password) + expect(stored_password).to eq "JS123" + end + end - + context "when attempting to sign in" do + it "returns a hash indicating failure & reason if the username does not exist" do + expect(repo.login('jazzy_jeff', 'fresh')).to eq({ success: false, reason: "invalid username "}) + end + it "returns a hash indicating success and the the username & ID if credentials are correct" do + repo.create(user) + login_attempt = repo.login('jsmith', "JS123") + expect(login_attempt).to eq({ success: true, username: "jsmith", user_id: 4 }) + end + it "returns a hash indicating success and the the username & ID if credentials are correct" do + login_attempt = repo.login('wsmith', "bigbrother") + expect(login_attempt).to eq({ success: true, username: "wsmith", user_id: 3 }) + end + + it "returns a hash inidcating failure and reason if password is not correct" do + repo.create(user) + expect(repo.login('jsmith', 'js123')).to eq({ success: false, reason: "incorrect password "}) + end + end end \ No newline at end of file diff --git a/views/login.erb b/views/login.erb index 31181059de..0db7c3b147 100644 --- a/views/login.erb +++ b/views/login.erb @@ -3,12 +3,13 @@ - - - - - - - +

Login to Chitter

+
+ + + + + + diff --git a/views/register.erb b/views/register.erb new file mode 100644 index 0000000000..73f7b31d9e --- /dev/null +++ b/views/register.erb @@ -0,0 +1,19 @@ + + + + + +

Register for Chitter

+
+ + + + + + + + + + + + From 54027797744f7cdee2b3d6ebcf9fb056d52a4c98 Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Wed, 12 Apr 2023 17:37:05 +0100 Subject: [PATCH 11/17] Test drive registration and posting new peep --- app.rb | 91 +++++++-------- lib/peep_repository.rb | 32 +++--- lib/user_repository.rb | 47 ++++++-- spec/integration/application_spec.rb | 161 +++++++++++++++++---------- spec/peep_repository_spec.rb | 27 +++-- spec/user_repository_spec.rb | 84 +++++++++----- views/login_denied.erb | 6 +- views/registration_failure.erb | 15 +++ views/registration_success.erb | 15 +++ 9 files changed, 295 insertions(+), 183 deletions(-) create mode 100644 views/registration_failure.erb create mode 100644 views/registration_success.erb diff --git a/app.rb b/app.rb index e70825b65e..39b6c9da8a 100644 --- a/app.rb +++ b/app.rb @@ -17,85 +17,74 @@ class Application < Sinatra::Base end get '/' do - @all_peeps = PeepRespository.new.all_by_rev_date_order_with_author + @all_peeps = PeepRespository.new.all_with_author return erb(:index) end + post '/peep' do + message = params[:message] + author_id = session[:user_id] + timestamp = Time.now.strftime "%Y-%m-%d %H:%M:%S" + + PeepRespository.new.create(message, timestamp, author_id) + + return redirect ('/') + end + get '/login' do - if session[:user_id] - return redirect('/') - end + redirect_if_logged_in return erb(:login) end post '/login_attempt' do # TODO : Santise user input from this form - if session[:user_id] - return redirect('/') - end + redirect_if_logged_in + + username = params[:username] + password = params[:password] - # Returns a User object if succesful + # Returns a hash login = UserRepository.new.login(params[:username], params[:password]) - if login == nil - @failure_reason = "username" - status 401 - return erb(:login_denied) - elsif login == false - @failure_reason = "password" + if login[:success?] + session[:user_id] = login[:user_id] + session[:username] = login[:username] + return redirect('/') + else + @failure_reason = login[:failure_reason] status 401 return erb(:login_denied) - else - session[:user_id] = login.id - session[:username] = login.username - # TODO: Do I need this boolean variable? - # session[:logged_in] = true - return redirect('/') end end - - - # user = UserRepository.new.find_by_username(username) - # if !user - # @failure_reason = "username" - # status 401 - # return erb(:login_denied) - # elsif password != user.password - # status 401 - # @failure_reason = "password" - # return erb(:login_denied) - # # Is this conditonal statement robust enough? - # elsif password == user.password - # session[:user_id] = user.id - # session[:username] = user.username - # # TODO: Do I need this boolean variable? - # # session[:logged_in] = true - # return redirect('/') - get '/register' do # TODO : Santise user input from this form - if session[:user_id] - return redirect('/') - end + redirect_if_logged_in return erb(:register) end post '/submit_register' do - # if UserRepository.new.find_by_username(params[:username]) - # return erb (:deny_register) + @username = params[:username] + name = params[:name] + email = params[:email] + password = params[:password] - new_user = User.new - new_user.name = params[:name] - new_user.username = params[:username] - new_user.email = params[:email] - new_user.password = params[:password] + registration = UserRepository.new.register(@username, name, email, password) - UserRepository.new.create(user) + if registration[:success?] + return erb(:registration_success) + else + @failure_reason = registration[:failure_reason] + return erb(:registration_failure) + end + end - return erb(:register) + def redirect_if_logged_in + if session[:user_id] + return redirect('/') + end end end \ No newline at end of file diff --git a/lib/peep_repository.rb b/lib/peep_repository.rb index 7cf378a523..b708b6e4ff 100644 --- a/lib/peep_repository.rb +++ b/lib/peep_repository.rb @@ -2,28 +2,15 @@ require_relative "./user" class PeepRespository - # Consider removing this method later on in app development if it is redundant: - def all_by_rev_date_order - sql = "SELECT * FROM peeps ORDER BY posted_at DESC;" - result_set = DatabaseConnection.exec_params(sql, []) - peeps = [] - result_set.each do |row| - peep = Peep.new - peep.id = row['id'].to_i - peep.message = row['message'] - peep.posted_at = row['posted_at'] - peep.user_id = row['user_id'].to_i - peeps << peep - end - return peeps - end - - def all_by_rev_date_order_with_author + def all_with_author + # Returns array of peeps in reverse chronological order sql = "SELECT message, posted_at, name, username FROM peeps JOIN users ON user_id = users.id ORDER BY posted_at DESC;" + result_set = DatabaseConnection.exec_params(sql, []) peeps = [] + result_set.each do |row| peep = Peep.new peep.id = row['id'].to_i @@ -36,6 +23,17 @@ def all_by_rev_date_order_with_author peep.user = user peeps << peep end + return peeps end + + def create(message, timestamp, author_id) + sql = "INSERT INTO peeps (message, posted_at, user_id) VALUES ($1, $2, $3)" + params = [message, timestamp, author_id] + + DatabaseConnection.exec_params(sql, params) + end + + #TODO: add method to scan for user tags + end diff --git a/lib/user_repository.rb b/lib/user_repository.rb index f3cbaf9586..0359284d19 100644 --- a/lib/user_repository.rb +++ b/lib/user_repository.rb @@ -5,7 +5,9 @@ class UserRepository def all sql = 'SELECT * FROM users' result_set = DatabaseConnection.exec_params(sql, []) + users = [] + result_set.each do |row| user = User.new user.name = row['name'] @@ -21,32 +23,59 @@ def all def find_by_username(username) sql = 'SELECT * FROM users WHERE username = $1;' result = DatabaseConnection.exec_params(sql, [username]).first - return nil if !result + + return nil unless result + user = User.new user.id = result['id'].to_i user.username = result['username'] user.name = result['name'] user.email = result['email'] user.password = result['password'] + + return user + end + + def find_by_email(email) + sql = 'SELECT * FROM users WHERE email = $1;' + result = DatabaseConnection.exec_params(sql, [email]).first + + return nil unless result + + user = User.new + user.id = result['id'].to_i + user.username = result['username'] + user.name = result['name'] + user.email = result['email'] + user.password = result['password'] + return user end def login(username, submitted_password) user = find_by_username(username) - return { success: false, reason: "invalid username "} if !user + return { success?: false, failure_reason: "invalid username"} if !user stored_password = BCrypt::Password.new(user.password) + if stored_password == submitted_password - return { success: true, username: user.username, user_id: user.id } + return { success?: true, username: user.username, user_id: user.id } else - return { success: false, reason: "incorrect password "} + return { success?: false, failure_reason: "incorrect password"} end end - def create(user) - sql = 'INSERT INTO users (name, username, email, password) VALUES ($1, $2, $3, $4);' - hashed_password = BCrypt::Password.create(user.password) - params = [user.name, user.username, user.email, hashed_password] + def register(username, name, email, password) + + return {success?: false, failure_reason: "username is already taken"} if find_by_username(username) + return {success?: false, failure_reason: "email is already taken"} if find_by_email(email) + + sql = 'INSERT INTO users (username, name, email, password) VALUES ($1, $2, $3, $4);' + + hashed_password = BCrypt::Password.create(password) + params = [username, name, email, hashed_password] + DatabaseConnection.exec_params(sql, params) - return nil + + return {success?: true} end end \ No newline at end of file diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index 8aa0217575..d570e74979 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -17,6 +17,7 @@ def reset_tables include Rack::Test::Methods let(:app) { Application.new } + let(:session_params) { { 'rack.session' => { username: "tcarmichael", user_id: 1 } } } describe "homepage" do it "displays all peeps in reverse chronological order" do @@ -34,28 +35,23 @@ def reset_tables expect(response.body).to match(/On 2022-12-19 10:23:54[\s\S]*On 1984-06-15 14:33:00/) end - it "displays the peep's timestamp" do - response = get('/') - expect(response.body).to match(/On 2022-12-19 10:23:54[\s\S]*On 1984-06-15 14:33:00/) - end - context "when the user is logged in" do it "displays the form to post a new peep" do # No query params, but session object is simulated - response = get('/', {}, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) + response = get('/', {}, session_params) expect(response.status).to eq(200) expect(response.body).to include('
') expect(response.body).to include('') expect(response.body).to include('') end it "doesn't display a link to login" do - response = get('/', {}, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) + response = get('/', {}, session_params) expect(response.status).to eq(200) expect(response.body).not_to include('Login { username: "tcarmichael", user_id: 1 } } ) + ########################### + describe "POST /peep" do + it "Redirects user to homepage and displays the new peep at the top" do + allow(Time).to receive(:now).and_return(Time.new(2099, 9, 1, 10, 5, 0)) + form_params = { message: "Conspiracy uncovered! The sun is flat." } + response = post('/peep', form_params, session_params) + expect(response).to be_redirect + follow_redirect! + expect(last_request.path).to eq('/') + response = get('/') + expect(response.body).to match(/Author: @tcarmichael - Tom Carmichael-Mhanna[\s\S]*Conspiracy uncovered! The sun is flat.[\s\S]*n 2099-09-01 10:05:00[\s\S]*Big Brother/) + end + end + ######################## + describe "GET /login" do + context "when the user is logged in" do + it "redirects to '/'" do + response = get('/login', {}, session_params) expect(response).to be_redirect follow_redirect! expect(last_request.path).to eq('/') end end - context "when user is not logged in" do - it "displays a form to log in" do + context "when the user isn't logged in" do + it "displays a login form" do response = get('/login') expect(response.status).to eq 200 expect(response.body).to include('') @@ -90,59 +99,62 @@ def reset_tables expect(response.body).to include('') end end - context "after submitting the login form" do - context "if the user is already logged in" do - it "redirects the user to the home page" do - response = post('/login_attempt', { username: 'jimbob', password: 'abracadabra' }, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) + end + ################################# + describe "POST /login_attempt" do + context "if the user is already logged in" do + it "redirects to '/'" do + response = post('/login_attempt', { username: 'jimbob', password: 'abracadabra' }, session_params) + expect(response).to be_redirect + follow_redirect! + expect(last_request.path).to eq('/') + end + end + context "if the user isn't logged in" do + context "and provides correct credentials" do + it "logs the user in" do + response = post('/login_attempt', { username: 'wsmith', password: 'bigbrother' } ) expect(response).to be_redirect follow_redirect! expect(last_request.path).to eq('/') + # Check that the session object has been updated with the user's ID + expect(last_request.env['rack.session'][:user_id]).to eq 3 + expect(last_request.env['rack.session'][:username]).to eq 'wsmith' end end - context "if the user is NOT already logged in" do - context "and provides correct credentials" do - it "logs the user in" do - response = post('/login_attempt', { username: 'wsmith', password: 'bigbrother' } ) - expect(response).to be_redirect - follow_redirect! - expect(last_request.path).to eq('/') - # Check that the session object has been updated with the user's ID - expect(last_request.env['rack.session'][:user_id]).to eq 3 - expect(last_request.env['rack.session'][:username]).to eq 'wsmith' - end - end - context "and provides incorrect username" do - it "returns an error page" do - response = post('/login_attempt', { username: 'jay_dilla', password: 'bigbrother' } ) - expect(response.status).to eq 401 - expect(response.body).to include('Login failed: username not found') - # Check that the session object has been updated with the user's ID - expect(last_request.env['rack.session'][:user_id]).to be_nil - end + context "and provides incorrect username" do + it "returns an error page" do + response = post('/login_attempt', { username: 'jay_dilla', password: 'bigbrother' } ) + expect(response.status).to eq 401 + expect(response.body).to include('Login failed: invalid username') + # Check that the session object has not been updated with user ID + expect(last_request.env['rack.session'][:user_id]).to be_nil end - context "and provides incorrect password" do - it "returns an error page" do - response = post('/login_attempt', { username: 'wsmith', password: '1984' } ) - expect(response.status).to eq 401 - expect(response.body).to include('Login failed: incorrect password') - # Check that the session object has been updated with the user's ID - expect(last_request.env['rack.session'][:user_id]).to be_nil - end + end + context "and provides incorrect password" do + it "returns an error page" do + response = post('/login_attempt', { username: 'wsmith', password: '1984' } ) + expect(response.status).to eq 401 + expect(response.body).to include('Login failed: incorrect password') + # Check that the session object has been updated with the user's ID + expect(last_request.env['rack.session'][:user_id]).to be_nil end end end end + ########################### describe "GET /register" do - context "when user is already logged in" do - it "redirects the user to the home page" do - response = get('/register', {}, { 'rack.session' => { username: "tcarmichael", user_id: 1 } } ) + context "if the user is logged in" do + it "redirects to'/'" do + response = get('/register', {}, session_params) expect(response).to be_redirect follow_redirect! expect(last_request.path).to eq('/') end end - context "if the user is NOT already logged in" do - it "displays the login form" do + + context "if the user isn't logged in" do + it "displays the registration form" do response = get('/register') expect(response.status).to eq(200) expect(response.body).to include('') @@ -151,16 +163,43 @@ def reset_tables expect(response.body).to include('') expect(response.body).to include('') end - context "and submits the form" do - it "registers them" do - response = post('/submit_register', { name: 'Dave Smith', username: 'prophet5', email: "sequential@circuits.com", password: 'polyphony'}) + end + end + ################################ + describe "POST /submit_register" do + context "if username doesn't already exist" do + it "registers user" do + response = post('/submit_register', { name: 'Dave Smith', username: 'prophet5', email: "sequential@circuits.com", password: 'polyphony'}) + expect(response.status).to eq(200) + expect(response.body).to include('Congtratulations @prophet5, you successfully signed up for Chitter!') + expect(response.body).to include("Login here to start Chittering.") + user = UserRepository.new.find_by_username('prophet5') + expect(user).not_to be_nil + expect(user.name).to eq('Dave Smith') + expect(user.email).to eq('sequential@circuits.com') + end + context "if username already exists" do + it "doesn't register user" do + response = post('/submit_register', { name: 'name', username: 'tcarmichael', email: "email@email.com", password: 'password'}) + expect(response.status).to eq(200) + expect(response.body).to include('username is already taken') + expect(response.body).to include("Retry registration") + all_users = UserRepository.new.all + expect(all_users.length).to eq 3 + expect(all_users.first.name).to eq "Tom Carmichael-Mhanna" + expect(all_users.last.name).to eq "Winston Smith" + end + end + context "if email already exists" do + it "doesn't register user" do + response = post('/submit_register', { name: 'name', username: 'username', email: "tomcarmichael@hotmail.co.uk", password: 'password'}) expect(response.status).to eq(200) - expect(response.body).to include('Congtratulations @prophet5, you successfully signed up for Chitter!') - expect(response.body).to include("Login here to start Chittering") - user = UserRepository.new.find_by_username('prophet5') - expect(user).not_to be_nil - expect(user.name).to eq('Dave Smith') - expect(user.email).to eq('sequential@circuits.com') + expect(response.body).to include('email is already taken') + expect(response.body).to include("Retry registration") + all_users = UserRepository.new.all + expect(all_users.length).to eq 3 + expect(all_users.first.email).to eq "tomcarmichael@hotmail.co.uk" + expect(all_users.last.name).to eq "Winston Smith" end end end diff --git a/spec/peep_repository_spec.rb b/spec/peep_repository_spec.rb index e19e8d9f8d..686a496989 100644 --- a/spec/peep_repository_spec.rb +++ b/spec/peep_repository_spec.rb @@ -11,26 +11,29 @@ def reset_tables reset_tables end - # Consider removing this method later on in app development if it is redundant: - it "Returns all peeps in reverse chronological order" do - repo = PeepRespository.new - all_peeps = repo.all_by_rev_date_order - expect(all_peeps.length).to eq 3 - expect(all_peeps.first.message).to eq "Big Brother is watching you @wsmith" - expect(all_peeps.last.message).to eq "We shall meet in the place where there is no darkness" - expect(all_peeps.last.posted_at).to eq "1984-06-15 14:33:00" - expect(all_peeps[1].user_id).to eq 1 - end - it "Returns all peeps in reverse chronological order with their author's name and tag" do repo = PeepRespository.new - all_peeps =repo.all_by_rev_date_order_with_author + all_peeps = repo.all_with_author expect(all_peeps.length).to eq 3 expect(all_peeps.first.message).to eq "Big Brother is watching you @wsmith" expect(all_peeps.last.message).to eq "We shall meet in the place where there is no darkness" expect(all_peeps.last.posted_at).to eq "1984-06-15 14:33:00" expect(all_peeps[1].user.name).to eq "Tom Carmichael-Mhanna" expect(all_peeps[1].user.username).to eq "tcarmichael" + end + it "Creates a new peep" do + repo = PeepRespository.new + message = "Hello, world!" + timestamp = "2099-10-10 10:10:10" + author_id = 2 + repo.create(message, timestamp, author_id) + all_peeps = repo.all_with_author + expect(all_peeps.length).to eq 4 + expect(all_peeps.last.message).to eq "We shall meet in the place where there is no darkness" + expect(all_peeps.first.message).to eq "Hello, world!" + expect(all_peeps.first.posted_at).to eq "2099-10-10 10:10:10" + expect(all_peeps.first.user.name).to eq "Sarwah Mhanna" + expect(all_peeps.first.user.username).to eq "smhanna" end end diff --git a/spec/user_repository_spec.rb b/spec/user_repository_spec.rb index d8a7f8bfbf..202d764b28 100644 --- a/spec/user_repository_spec.rb +++ b/spec/user_repository_spec.rb @@ -17,7 +17,6 @@ def reset_tables it "returns the user" do user = repo.find_by_username('tcarmichael') expect(user).to be_truthy - expect(user.password).to eq "password123" expect(user.name).to eq "Tom Carmichael-Mhanna" expect(user.email).to eq "tomcarmichael@hotmail.co.uk" end @@ -27,50 +26,79 @@ def reset_tables end end - let(:user) { - user = User.new - user.name = "John Smith" - user.username = "jsmith" - user.email = "john@smith.com" - user.password = "JS123" - return user + context "when searching by email" do + it "returns the user" do + user = repo.find_by_email('tomcarmichael@hotmail.co.uk') + expect(user).to be_truthy + expect(user.name).to eq "Tom Carmichael-Mhanna" + expect(user.username).to eq "tcarmichael" + end + end + + let(:register_user) { + repo = UserRepository.new + username = "jsmith" + name = "John Smith" + email = "john@smith.com" + password = "JS123" + repo.register(username, name, email, password) } context "when creating a new user" do - it "adds the user to the DB and returns nil" do - expect(repo.create(user)).to be_nil + it "adds the user to the DB and indicates success" do + expect(register_user).to eq({success?: true}) expect(repo.all.length).to eq 4 expect(repo.all.last.name).to eq "John Smith" expect(repo.all.last.email).to eq "john@smith.com" end - xit "fails to add them given any missing info" do - #TODO? - end it "stores their password using the BCrypt hashing algorithm" do - repo.create(user) + register_user added_user = repo.all.last stored_password = BCrypt::Password.new(added_user.password) expect(stored_password).to eq "JS123" end + + context "if the username already exists" do + it "indicates failure reason & doesn't add the user to the DB" do + registration = UserRepository.new.register("tcarmichael", "name", "email@email.com", "password") + expect(registration).to eq({success?: false, failure_reason: "username is already taken"}) + expect(repo.all.length).to eq 3 + expect(repo.all.last.name).to eq "Winston Smith" + end + end + + context "if the email already exists" do + it "indicates failure reason & doesn't add the user to the DB" do + registration = UserRepository.new.register("username", "name", "tomcarmichael@hotmail.co.uk", "password") + expect(registration).to eq({success?: false, failure_reason: "email is already taken"}) + expect(repo.all.length).to eq 3 + expect(repo.all.last.name).to eq "Winston Smith" + end + end end - context "when attempting to sign in" do - it "returns a hash indicating failure & reason if the username does not exist" do - expect(repo.login('jazzy_jeff', 'fresh')).to eq({ success: false, reason: "invalid username "}) + context "when attempting to sign in w incorrect username" do + it "indicates failure" do + expect(repo.login('jazzy_jeff', 'fresh')).to eq({ success?: false, failure_reason: "invalid username"}) end - it "returns a hash indicating success and the the username & ID if credentials are correct" do - repo.create(user) + end + + context "when attempting to sign in w incorrect password" do + it "indicates failure" do + register_user + expect(repo.login('jsmith', 'js123')).to eq({ success?: false, failure_reason: "incorrect password"}) + end + end + + context "when attempting to sign in w correct credentials" do + it "indicates success & returns username and ID" do + register_user login_attempt = repo.login('jsmith', "JS123") - expect(login_attempt).to eq({ success: true, username: "jsmith", user_id: 4 }) + expect(login_attempt).to eq({ success?: true, username: "jsmith", user_id: 4 }) end - it "returns a hash indicating success and the the username & ID if credentials are correct" do + it "succeeds for a different user account" do login_attempt = repo.login('wsmith', "bigbrother") - expect(login_attempt).to eq({ success: true, username: "wsmith", user_id: 3 }) - end - - it "returns a hash inidcating failure and reason if password is not correct" do - repo.create(user) - expect(repo.login('jsmith', 'js123')).to eq({ success: false, reason: "incorrect password "}) + expect(login_attempt).to eq({ success?: true, username: "wsmith", user_id: 3 }) end - end + end end \ No newline at end of file diff --git a/views/login_denied.erb b/views/login_denied.erb index fd345d2b0d..642b1c6dda 100644 --- a/views/login_denied.erb +++ b/views/login_denied.erb @@ -3,11 +3,7 @@ - <% if @failure_reason == "username" %> -

Login failed: username not found

- <% elsif @failure_reason == "password" %> -

Login failed: incorrect password

- <% end %> +

Login failed: <%= @failure_reason %>

Retry login

diff --git a/views/registration_failure.erb b/views/registration_failure.erb new file mode 100644 index 0000000000..4005c9b57f --- /dev/null +++ b/views/registration_failure.erb @@ -0,0 +1,15 @@ + + + + + + +

Registration denied: @<%= @failure_reason %>

+

+ Retry registration +

+ + + + + diff --git a/views/registration_success.erb b/views/registration_success.erb new file mode 100644 index 0000000000..987fb666b2 --- /dev/null +++ b/views/registration_success.erb @@ -0,0 +1,15 @@ + + + + + + +

Congtratulations @<%= @username %>, you successfully signed up for Chitter!

+

+ Login here to start Chittering. +

+ + + + + From b55d405e1dfe07a1e34f040e0026dab2e56bf92d Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Wed, 12 Apr 2023 18:20:37 +0100 Subject: [PATCH 12/17] Test drive displaying register link ob homepage, refactor tests --- app.rb | 10 ++++++++ lib/peep_repository.rb | 2 +- lib/user_repository.rb | 2 +- spec/integration/application_spec.rb | 36 ++++++++++++++++++++-------- views/index.erb | 1 + 5 files changed, 39 insertions(+), 12 deletions(-) diff --git a/app.rb b/app.rb index 39b6c9da8a..2063271a21 100644 --- a/app.rb +++ b/app.rb @@ -87,4 +87,14 @@ def redirect_if_logged_in return redirect('/') end end + + # TODO: Test drive the use of this + def sanitize_user_input(string) + string.gsub!(/\&/, '&') + string.gsub!(/\/, '>') + string.gsub!(/\"/, '"') + string.gsub!(/\'/, ''') + return string + end end \ No newline at end of file diff --git a/lib/peep_repository.rb b/lib/peep_repository.rb index b708b6e4ff..6f164bcd4e 100644 --- a/lib/peep_repository.rb +++ b/lib/peep_repository.rb @@ -28,7 +28,7 @@ def all_with_author end def create(message, timestamp, author_id) - sql = "INSERT INTO peeps (message, posted_at, user_id) VALUES ($1, $2, $3)" + sql = "INSERT INTO peeps (message, posted_at, user_id) VALUES ($1, $2, $3);" params = [message, timestamp, author_id] DatabaseConnection.exec_params(sql, params) diff --git a/lib/user_repository.rb b/lib/user_repository.rb index 0359284d19..5332088450 100644 --- a/lib/user_repository.rb +++ b/lib/user_repository.rb @@ -3,7 +3,7 @@ class UserRepository def all - sql = 'SELECT * FROM users' + sql = 'SELECT * FROM users;' result_set = DatabaseConnection.exec_params(sql, []) users = [] diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index d570e74979..272cab3f3a 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -18,6 +18,7 @@ def reset_tables let(:app) { Application.new } let(:session_params) { { 'rack.session' => { username: "tcarmichael", user_id: 1 } } } + let(:freeze_time) { allow(Time).to receive(:now).and_return(Time.new(2099, 9, 1, 10, 5, 0)) } describe "homepage" do it "displays all peeps in reverse chronological order" do @@ -57,6 +58,11 @@ def reset_tables expect(response.status).to eq(200) expect(response.body).to include('Login') end + it "displays a link to register" do + response = get('/') + expect(response.status).to eq(200) + expect(response.body).to include('Register') + end it "doesn't display the form to create a new peep" do response = get('/') expect(response.status).to eq (200) @@ -67,16 +73,26 @@ def reset_tables end ########################### describe "POST /peep" do - it "Redirects user to homepage and displays the new peep at the top" do - allow(Time).to receive(:now).and_return(Time.new(2099, 9, 1, 10, 5, 0)) - form_params = { message: "Conspiracy uncovered! The sun is flat." } - response = post('/peep', form_params, session_params) - expect(response).to be_redirect - follow_redirect! - expect(last_request.path).to eq('/') - response = get('/') - expect(response.body).to match(/Author: @tcarmichael - Tom Carmichael-Mhanna[\s\S]*Conspiracy uncovered! The sun is flat.[\s\S]*n 2099-09-01 10:05:00[\s\S]*Big Brother/) - end + it "Redirects user to homepage and displays the new peep at the top" do + # allow(Time).to receive(:now).and_return(Time.new(2099, 9, 1, 10, 5, 0)) + freeze_time + form_params = { message: "Conspiracy uncovered! The sun is flat." } + response = post('/peep', form_params, session_params) + expect(response).to be_redirect + follow_redirect! + expect(last_request.path).to eq('/') + response = get('/') + expect(response.body).to match(/Author: @tcarmichael - Tom Carmichael-Mhanna[\s\S]*Conspiracy uncovered! The sun is flat.[\s\S]*n 2099-09-01 10:05:00[\s\S]*Big Brother/) + end + # TODO: How to write test for this? + xit "sanitizes user input against potentially malicious tags" do + freeze_time + js_rick_roll = '' + form_params = { message: js_rick_roll } + response = post('/peep', form_params, session_params) + expect(response).to be_redirect + follow_redirect! + end end ######################## describe "GET /login" do diff --git a/views/index.erb b/views/index.erb index 6a750b0fac..3c3a4d8cd2 100644 --- a/views/index.erb +++ b/views/index.erb @@ -10,6 +10,7 @@ <% else %>
  • Login
  • +
  • Register
  • <% end %> From 6ec31d624931b3db5df47370f76cb8fb765dd473 Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Thu, 13 Apr 2023 14:54:21 +0100 Subject: [PATCH 13/17] Test drive logout, sanitise user input, refactor and begin styling --- app.rb | 40 ++++++++----- config.ru | 2 +- lib/database_connection.rb | 2 +- lib/peep.rb | 2 +- lib/user.rb | 2 +- lib/user_repository.rb | 19 +++--- public/style.css | 38 ++++++++++++ spec/integration/application_spec.rb | 86 ++++++++++++++++++++++------ spec/seeds.sql | 9 ++- spec/user_repository_spec.rb | 12 ++-- views/index.erb | 41 +++++++------ 11 files changed, 181 insertions(+), 72 deletions(-) diff --git a/app.rb b/app.rb index 2063271a21..42e2e48d61 100644 --- a/app.rb +++ b/app.rb @@ -22,7 +22,8 @@ class Application < Sinatra::Base end post '/peep' do - message = params[:message] + return invalid_params_response if invalid_request_parameters? + message = sanitize_user_input(params[:message]) author_id = session[:user_id] timestamp = Time.now.strftime "%Y-%m-%d %H:%M:%S" @@ -38,7 +39,6 @@ class Application < Sinatra::Base end post '/login_attempt' do - # TODO : Santise user input from this form redirect_if_logged_in username = params[:username] @@ -59,13 +59,13 @@ class Application < Sinatra::Base end get '/register' do - # TODO : Santise user input from this form redirect_if_logged_in return erb(:register) end post '/submit_register' do + return invalid_params_response if invalid_request_parameters? @username = params[:username] name = params[:name] @@ -74,21 +74,22 @@ class Application < Sinatra::Base registration = UserRepository.new.register(@username, name, email, password) - if registration[:success?] - return erb(:registration_success) - else - @failure_reason = registration[:failure_reason] - return erb(:registration_failure) - end + return erb(:registration_success) if registration[:success?] + + @failure_reason = registration[:failure_reason] + return erb(:registration_failure) + end + + post '/logout' do + session[:user_id] = nil + session[:username] = nil + redirect('/') end def redirect_if_logged_in - if session[:user_id] - return redirect('/') - end + return redirect('/') if session[:user_id] end - # TODO: Test drive the use of this def sanitize_user_input(string) string.gsub!(/\&/, '&') string.gsub!(/\Login') + expect(response.body).to include('') + end end context "when the user isn't logged in" do @@ -74,24 +80,49 @@ def reset_tables ########################### describe "POST /peep" do it "Redirects user to homepage and displays the new peep at the top" do - # allow(Time).to receive(:now).and_return(Time.new(2099, 9, 1, 10, 5, 0)) freeze_time form_params = { message: "Conspiracy uncovered! The sun is flat." } response = post('/peep', form_params, session_params) - expect(response).to be_redirect + expect(response.status).to eq(302) follow_redirect! expect(last_request.path).to eq('/') response = get('/') expect(response.body).to match(/Author: @tcarmichael - Tom Carmichael-Mhanna[\s\S]*Conspiracy uncovered! The sun is flat.[\s\S]*n 2099-09-01 10:05:00[\s\S]*Big Brother/) end - # TODO: How to write test for this? - xit "sanitizes user input against potentially malicious tags" do - freeze_time + it "sanitizes user input against potentially malicious tags" do js_rick_roll = '' form_params = { message: js_rick_roll } response = post('/peep', form_params, session_params) expect(response).to be_redirect follow_redirect! + expect(last_response.body).to include('<script>document.location.href="https://www.youtube.com/watch?v=34Ig3X59_qA";</script>') + end + context "given {message: ""}" do + it "returns 400 & error message" do + response = post('/submit_register', { message: "" }, session_params) + expect(response.status).to eq(400) + expect(response.body).to include("Invalid form parameters entered, please rety and ensure you fill out all fields.") + end + end + context "given {message: nil}" do + it "returns 400 & error message" do + response = post('/submit_register', { message: nil }, session_params) + expect(response.status).to eq(400) + expect(response.body).to include("Invalid form parameters entered, please rety and ensure you fill out all fields.") + end + end + end + ######## + describe "POST /logout" do + context "When user is logged in" do + it "logs them out & redirects to GET '/'" do + response = post('/logout', {}, session_params) + expect(response.status).to eq(302) + follow_redirect! + expect(last_request.path).to eq('/') + expect(last_request.env['rack.session'][:user_id]).to be_nil + expect(last_request.env['rack.session'][:username]).to be_nil + end end end ######################## @@ -99,7 +130,7 @@ def reset_tables context "when the user is logged in" do it "redirects to '/'" do response = get('/login', {}, session_params) - expect(response).to be_redirect + expect(response.status).to eq(302) follow_redirect! expect(last_request.path).to eq('/') end @@ -121,7 +152,7 @@ def reset_tables context "if the user is already logged in" do it "redirects to '/'" do response = post('/login_attempt', { username: 'jimbob', password: 'abracadabra' }, session_params) - expect(response).to be_redirect + expect(response.status).to eq(302) follow_redirect! expect(last_request.path).to eq('/') end @@ -129,8 +160,8 @@ def reset_tables context "if the user isn't logged in" do context "and provides correct credentials" do it "logs the user in" do - response = post('/login_attempt', { username: 'wsmith', password: 'bigbrother' } ) - expect(response).to be_redirect + response = post('/login_attempt', { username: 'wsmith', password: 'bigbrother' }) + expect(response.status).to eq(302) follow_redirect! expect(last_request.path).to eq('/') # Check that the session object has been updated with the user's ID @@ -140,7 +171,7 @@ def reset_tables end context "and provides incorrect username" do it "returns an error page" do - response = post('/login_attempt', { username: 'jay_dilla', password: 'bigbrother' } ) + response = post('/login_attempt', { username: 'jay_dilla', password: 'bigbrother' }) expect(response.status).to eq 401 expect(response.body).to include('Login failed: invalid username') # Check that the session object has not been updated with user ID @@ -149,10 +180,10 @@ def reset_tables end context "and provides incorrect password" do it "returns an error page" do - response = post('/login_attempt', { username: 'wsmith', password: '1984' } ) + response = post('/login_attempt', { username: 'wsmith', password: '1984' }) expect(response.status).to eq 401 expect(response.body).to include('Login failed: incorrect password') - # Check that the session object has been updated with the user's ID + # Check that the session object has not been updated with the user's ID expect(last_request.env['rack.session'][:user_id]).to be_nil end end @@ -163,7 +194,7 @@ def reset_tables context "if the user is logged in" do it "redirects to'/'" do response = get('/register', {}, session_params) - expect(response).to be_redirect + expect(response.status).to eq(302) follow_redirect! expect(last_request.path).to eq('/') end @@ -185,7 +216,7 @@ def reset_tables describe "POST /submit_register" do context "if username doesn't already exist" do it "registers user" do - response = post('/submit_register', { name: 'Dave Smith', username: 'prophet5', email: "sequential@circuits.com", password: 'polyphony'}) + response = post('/submit_register', { name: 'Dave Smith', username: 'prophet5', email: "sequential@circuits.com", password: 'polyphony' }) expect(response.status).to eq(200) expect(response.body).to include('Congtratulations @prophet5, you successfully signed up for Chitter!') expect(response.body).to include("Login here to start Chittering.") @@ -196,7 +227,7 @@ def reset_tables end context "if username already exists" do it "doesn't register user" do - response = post('/submit_register', { name: 'name', username: 'tcarmichael', email: "email@email.com", password: 'password'}) + response = post('/submit_register', { name: 'name', username: 'tcarmichael', email: "email@email.com", password: 'password' }) expect(response.status).to eq(200) expect(response.body).to include('username is already taken') expect(response.body).to include("Retry registration") @@ -208,7 +239,7 @@ def reset_tables end context "if email already exists" do it "doesn't register user" do - response = post('/submit_register', { name: 'name', username: 'username', email: "tomcarmichael@hotmail.co.uk", password: 'password'}) + response = post('/submit_register', { name: 'name', username: 'username', email: "tomcarmichael@hotmail.co.uk", password: 'password' }) expect(response.status).to eq(200) expect(response.body).to include('email is already taken') expect(response.body).to include("Retry registration") @@ -218,6 +249,27 @@ def reset_tables expect(all_users.last.name).to eq "Winston Smith" end end + context "given {name: nil}" do + it "returns 400 & error message" do + response = post('/submit_register', { name: nil, username: 'fake_username', email: "example@email.com", password: 'password' }) + expect(response.status).to eq(400) + expect(response.body).to include("Invalid form parameters entered, please rety and ensure you fill out all fields.") + end + end + context "given {password: nil}" do + it "returns 400 & error message" do + response = post('/submit_register', { name: nil, username: 'fake_username', email: "example@email.com", password: nil }) + expect(response.status).to eq(400) + expect(response.body).to include("Invalid form parameters entered, please rety and ensure you fill out all fields.") + end + end + context "given {username: ""}" do + it "returns 400 & error message" do + response = post('/submit_register', { name: "dave", username: '', email: "example@email.com", password: "test" }) + expect(response.status).to eq(400) + expect(response.body).to include("Invalid form parameters entered, please rety and ensure you fill out all fields.") + end + end end end -end \ No newline at end of file +end diff --git a/spec/seeds.sql b/spec/seeds.sql index 34ab2e65c2..8768770c49 100644 --- a/spec/seeds.sql +++ b/spec/seeds.sql @@ -1,9 +1,12 @@ TRUNCATE TABLE users, peeps, tags RESTART IDENTITY; INSERT INTO "public"."users" ("name", "username", "email", "password") VALUES -('Tom Carmichael-Mhanna', 'tcarmichael', 'tomcarmichael@hotmail.co.uk', 'password123'), -('Sarwah Mhanna', 'smhanna', 'sarwah_mhanna@hotmail.com', 'password456'), -('Winston Smith', 'wsmith', 'orwell.george@aol.com', '$2a$12$OAMZTYU7QDGVpgQIIYGdteqshFWf9LOuwWVw8RB.4NdX3yeHy.CPC'); +('Tom Carmichael-Mhanna', 'tcarmichael', 'tomcarmichael@hotmail.co.uk', +'$2a$12$Uq6.MjwYOnRrReg8MER7k.tbst9C8endU7NsqbfPOcJrBv/Vjlaii'), --' ' +('Sarwah Mhanna', 'smhanna', 'sarwah_mhanna@hotmail.com', +'$2a$12$EJbWANsMc/.jLPCm5rccYedi0PqM0qM4TP3UuJyi8I/oin2ctrQtm'), --'password456' +('Winston Smith', 'wsmith', 'orwell.george@aol.com', +'$2a$12$OAMZTYU7QDGVpgQIIYGdteqshFWf9LOuwWVw8RB.4NdX3yeHy.CPC'); --bigbrother INSERT INTO "public"."peeps" ("message", "posted_at", "user_id") VALUES ('@wsmith & @smhanna - this is jam hot, this is jam hot', '2022-12-19 10:23:54', 1), diff --git a/spec/user_repository_spec.rb b/spec/user_repository_spec.rb index 202d764b28..5c4d678521 100644 --- a/spec/user_repository_spec.rb +++ b/spec/user_repository_spec.rb @@ -46,7 +46,7 @@ def reset_tables context "when creating a new user" do it "adds the user to the DB and indicates success" do - expect(register_user).to eq({success?: true}) + expect(register_user).to eq({ success?: true }) expect(repo.all.length).to eq 4 expect(repo.all.last.name).to eq "John Smith" expect(repo.all.last.email).to eq "john@smith.com" @@ -61,7 +61,7 @@ def reset_tables context "if the username already exists" do it "indicates failure reason & doesn't add the user to the DB" do registration = UserRepository.new.register("tcarmichael", "name", "email@email.com", "password") - expect(registration).to eq({success?: false, failure_reason: "username is already taken"}) + expect(registration).to eq({ success?: false, failure_reason: "username is already taken" }) expect(repo.all.length).to eq 3 expect(repo.all.last.name).to eq "Winston Smith" end @@ -70,7 +70,7 @@ def reset_tables context "if the email already exists" do it "indicates failure reason & doesn't add the user to the DB" do registration = UserRepository.new.register("username", "name", "tomcarmichael@hotmail.co.uk", "password") - expect(registration).to eq({success?: false, failure_reason: "email is already taken"}) + expect(registration).to eq({ success?: false, failure_reason: "email is already taken" }) expect(repo.all.length).to eq 3 expect(repo.all.last.name).to eq "Winston Smith" end @@ -79,14 +79,14 @@ def reset_tables context "when attempting to sign in w incorrect username" do it "indicates failure" do - expect(repo.login('jazzy_jeff', 'fresh')).to eq({ success?: false, failure_reason: "invalid username"}) + expect(repo.login('jazzy_jeff', 'fresh')).to eq({ success?: false, failure_reason: "invalid username" }) end end context "when attempting to sign in w incorrect password" do it "indicates failure" do register_user - expect(repo.login('jsmith', 'js123')).to eq({ success?: false, failure_reason: "incorrect password"}) + expect(repo.login('jsmith', 'js123')).to eq({ success?: false, failure_reason: "incorrect password" }) end end @@ -101,4 +101,4 @@ def reset_tables expect(login_attempt).to eq({ success?: true, username: "wsmith", user_id: 3 }) end end -end \ No newline at end of file +end diff --git a/views/index.erb b/views/index.erb index 3c3a4d8cd2..57621b9c8a 100644 --- a/views/index.erb +++ b/views/index.erb @@ -3,25 +3,30 @@ -
    -
    - -
    +
    + +
    - <% if session[:user_id] %> - -
    - - - - <% end %> + <% if session[:user_id] %> + +
    + + + + <% end %> + +
    <% @all_peeps.each do |peep| %> From 21c6519890d5a6f0f2d77d89f303cded70e56316 Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Thu, 13 Apr 2023 16:22:02 +0100 Subject: [PATCH 14/17] Implemented additional CSS styling --- public/style.css | 106 ++++++++++++++++++++++----- spec/integration/application_spec.rb | 18 ++--- views/index.erb | 26 +++---- views/login.erb | 2 +- views/register.erb | 2 +- 5 files changed, 113 insertions(+), 41 deletions(-) diff --git a/public/style.css b/public/style.css index de612210a8..6b9ac303e8 100644 --- a/public/style.css +++ b/public/style.css @@ -1,41 +1,113 @@ + + + body { font-size: 18x; - font-family: "Futura", Helvetica, Arial, sans-serif + font-family: "Futura", Helvetica, Arial, sans-serif; + background-color: #f7f7f7; } -li { +/* Style the navigation menu */ +.nav_menu_links { + list-style: none; + display: flex; + justify-content: flex-start; + align-items: center; + margin-right: 2rem; +} + +.nav_menu_links li { + margin-left: 1rem; display: inline; } + +.nav_menu_links li a { + text-decoration: none; + color: #1da1f2; + font-weight: bold; +} + +.nav_menu_links li a:hover { + text-decoration: underline; +} + +.link-button { + background: none; + border: none; + color: #1da1f2; + font-weight: bold; + cursor: pointer; +} + +.link-button:hover { + text-decoration: underline; +} + +/* Stle the peeps tabls */ + table { margin-left: auto; margin-right: auto; } -.peep { +td { + text-align: center; +} + +/* Style the peep form */ + +.peep_form { + display: flex; + justify-content: center; + align-items: center; + margin-top: 2rem; + margin-bottom: 2rem; + margin-left: auto; margin-right: auto; } -td { - text-align: center; +.peep_form label { + font-weight: bold; + margin-right: 1rem; + } -.inline { - display: inline; +.peep_form input[type="text"] { + flex-grow: 1; + padding: 0.5rem; + border: 1px solid #ccc; + margin-top: 1rem; + padding: 12px 20px; } -.link-button { - background: none; +.peep_form input[type="submit"] { + background-color: #1da1f2; + color: white; border: none; - color: blue; - text-decoration: underline; + padding: 0.5rem 1rem; cursor: pointer; - font-size: 1em; - font-family: serif; } -.link-button:focus { - outline: none; + +.peep_form input[type="submit"]:hover { + background-color: #0c86d1; } -.link-button:active { - color:red; + +/* Style the different parts of each peep */ + +.peep { + padding: 10px; + border: 2px solid black; + border-radius: 4px; } + +.author { + color: hwb(0 54% 46%); +} + +.message { +} + +.timestamp { + color: hwb(0 54% 46%); +} \ No newline at end of file diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index 78a2761094..bde0a23b4c 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -28,12 +28,12 @@ def reset_tables end it "displays the peep author's name and username" do response = get('/') - expect(response.body).to include("Author: @tcarmichael - Tom Carmichael-Mhanna") - expect(response.body).to include("Author: @smhanna - Sarwah Mhanna") + expect(response.body).to include("@tcarmichael (Tom Carmichael-Mhanna) wrote:") + expect(response.body).to include("@smhanna (Sarwah Mhanna) wrote:") end it "displays the peep's timestamp" do response = get('/') - expect(response.body).to match(/On 2022-12-19 10:23:54[\s\S]*On 1984-06-15 14:33:00/) + expect(response.body).to match(/Posted: 2022-12-19 10:23:54[\s\S]*Posted: 1984-06-15 14:33:00/) end context "when the user is logged in" do @@ -42,7 +42,7 @@ def reset_tables response = get('/', {}, session_params) expect(response.status).to eq(200) expect(response.body).to include('
    ') - expect(response.body).to include('') + expect(response.body).to include('') expect(response.body).to include('') end it "doesn't display a link to login" do @@ -53,8 +53,8 @@ def reset_tables it "displays a link to logout" do response = get('/', {}, session_params) expect(response.status).to eq(200) - expect(response.body).to include('') - expect(response.body).to include('') + expect(response.body).to include('Logout') end end @@ -87,7 +87,7 @@ def reset_tables follow_redirect! expect(last_request.path).to eq('/') response = get('/') - expect(response.body).to match(/Author: @tcarmichael - Tom Carmichael-Mhanna[\s\S]*Conspiracy uncovered! The sun is flat.[\s\S]*n 2099-09-01 10:05:00[\s\S]*Big Brother/) + expect(response.body).to match(/@tcarmichael \(Tom Carmichael-Mhanna\) wrote:[\s\S]*Conspiracy uncovered! The sun is flat.[\s\S]*2099-09-01 10:05:00[\s\S]*Big Brother/) end it "sanitizes user input against potentially malicious tags" do js_rick_roll = '' @@ -143,7 +143,7 @@ def reset_tables expect(response.body).to include('') expect(response.body).to include('') expect(response.body).to include('') - expect(response.body).to include('') + expect(response.body).to include('') end end end @@ -206,7 +206,7 @@ def reset_tables expect(response.status).to eq(200) expect(response.body).to include('') expect(response.body).to include('') - expect(response.body).to include('') + expect(response.body).to include('') expect(response.body).to include('') expect(response.body).to include('') end diff --git a/views/index.erb b/views/index.erb index 57621b9c8a..c2e52e5cdd 100644 --- a/views/index.erb +++ b/views/index.erb @@ -19,23 +19,23 @@ <% if session[:user_id] %> - -
    - - - +
    +
    +
    + + + +
    <% end %>
    Author: @<%= peep.user.username%> - <%= peep.user.name%>
    <% @all_peeps.each do |peep| %> - - - - - - - - + + <% end %>
    Author: @<%= peep.user.username%> - <%= peep.user.name%>
    <%= peep.message %>
    On <%= peep.posted_at %>
    +

    @<%= peep.user.username%> (<%= peep.user.name%>) wrote:

    +

    <%= peep.message %>

    +

    Posted: <%= peep.posted_at %>

    +
    diff --git a/views/login.erb b/views/login.erb index 0db7c3b147..e5c45531f3 100644 --- a/views/login.erb +++ b/views/login.erb @@ -8,7 +8,7 @@ - + diff --git a/views/register.erb b/views/register.erb index 73f7b31d9e..242c9aba3d 100644 --- a/views/register.erb +++ b/views/register.erb @@ -12,7 +12,7 @@ - + From d1fe46d048f00237a1f9eab7a22f9893429ed5dc Mon Sep 17 00:00:00 2001 From: Tom Carmichael-Mhanna Date: Fri, 14 Apr 2023 18:01:46 +0100 Subject: [PATCH 15/17] Test drive tag functionality and add logo iamge --- Gemfile | 2 + Gemfile.lock | 20 +++++ app.rb | 12 ++- chitter initial diagram.png | Bin 0 -> 393219 bytes lib/peep_repository.rb | 22 +++--- lib/tag.rb | 4 + lib/tag_repository.rb | 63 ++++++++++++++++ lib/user_repository.rb | 27 +++++++ public/chitter-low-resolution.png | Bin 0 -> 34960 bytes public/style.css | 3 - spec/integration/application_spec.rb | 31 ++++++++ spec/peep_repository_spec.rb | 17 +++-- spec/tag_repository_spec.rb | 106 +++++++++++++++++++++++++++ spec/user_repository_spec.rb | 34 +++++++++ views/index.erb | 2 + 15 files changed, 323 insertions(+), 20 deletions(-) create mode 100644 chitter initial diagram.png create mode 100644 lib/tag.rb create mode 100644 lib/tag_repository.rb create mode 100644 public/chitter-low-resolution.png create mode 100644 spec/tag_repository_spec.rb diff --git a/Gemfile b/Gemfile index e3439cc086..40c8953c30 100644 --- a/Gemfile +++ b/Gemfile @@ -21,3 +21,5 @@ gem "webrick", "~> 1.8" gem "rack-test", "~> 2.1" gem "bcrypt", "~> 3.1" + +gem "pony", "~> 1.13" diff --git a/Gemfile.lock b/Gemfile.lock index 5f3bf33fda..ce47dce196 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,15 +4,33 @@ GEM ansi (1.5.0) ast (2.4.2) bcrypt (3.1.18) + date (3.3.3) diff-lcs (1.4.4) docile (1.4.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + mini_mime (1.1.2) multi_json (1.15.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) + net-imap (0.3.4) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.1) + timeout + net-smtp (0.3.3) + net-protocol parallel (1.20.1) parser (3.0.2.0) ast (~> 2.4.1) pg (1.4.6) + pony (1.13.1) + mail (>= 2.0) rack (2.2.6.4) rack-protection (3.0.5) rack @@ -71,6 +89,7 @@ GEM terminal-table (3.0.1) unicode-display_width (>= 1.1.1, < 3) tilt (2.1.0) + timeout (0.3.2) unicode-display_width (2.0.0) webrick (1.8.1) @@ -80,6 +99,7 @@ PLATFORMS DEPENDENCIES bcrypt (~> 3.1) pg (~> 1.4) + pony (~> 1.13) rack-test (~> 2.1) rspec rubocop (= 1.20) diff --git a/app.rb b/app.rb index 42e2e48d61..941505e58b 100644 --- a/app.rb +++ b/app.rb @@ -1,6 +1,7 @@ require 'sinatra' require 'sinatra/reloader' require_relative 'lib/peep_repository' +require_relative 'lib/tag_repository' require_relative 'lib/user' require_relative 'lib/user_repository' require_relative 'lib/database_connection' @@ -27,7 +28,14 @@ class Application < Sinatra::Base author_id = session[:user_id] timestamp = Time.now.strftime "%Y-%m-%d %H:%M:%S" - PeepRespository.new.create(message, timestamp, author_id) + peep_repo = PeepRespository.new + + peep_repo.create(message, timestamp, author_id) + peep_id = peep_repo.most_recent_peep_id + tag_repo = TagRepository.new + + tagged_users = tag_repo.check_message_for_tags(message) + tag_repo.add_tags_by_peep(tagged_users, peep_id) if tagged_users return redirect ('/') end @@ -101,8 +109,6 @@ def sanitize_user_input(string) def invalid_request_parameters? params.any? { |_key, value| value.nil? || value == "" } ? true : false - # return true if params[:name] == nil - # return false end def invalid_params_response diff --git a/chitter initial diagram.png b/chitter initial diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..52193f08eed85050a42ef02949a4476d73ffd472 GIT binary patch literal 393219 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 z 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

    D@Vp#g^9?qT5;3GzJg~rB(I0d;I!mREnci8 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ÐdVXmqh9hyO2F>TZ%R8Mf}mdxwX$V znOz7n$~_o`P16M|`B*2f{`YpaiN3e2FGYbgT;rrC&&`E(4Euoz!xoPpRD@(gT!1Ty z0(3k-n6=9eqJTuf7?3n1H9Qhn*W$2UYI4-Mx!H^r5?#*cL`CZB2ZeDlI2Dc@Ao~2W#&fE`TXm2jpJqq8NF|Y z#%jJ$PUIo7YIAnp$D>*kmGc530Mg3!oh4M?NAQTM`eGl zT&7uVU3K1#fP0OG&jN~}H<*lv!;c_yL_?hhooecA!_3N#+wNoD`kI{q;awh9rzaq? zMQ_v-WvE^UoRC9-cRfuypYOx_?U79F1Q`ESz@0;G0{_S-e0FfAA%Ehsni;A<4#(Kd z0}7K|2iCs=Wxz%gKAr4W4N@MU!>0iJAk}4dRiZ&2+cgvZ@0qwk1C`7P{zNlbC3y!c zJ2(ZT8NYv-j$I~i{zL5z$4L+T(ke?o=v?q#gz)f;%BXW%&4PO>o7Na$@!gJo{pOqwC#8;J4dscp%hes}6L;-IpK-Fa!$hd$%0}ol06pj{YcR5f8 z`m9MdFb)Wf-xVMD7S{d&6XuT@@5d`*gs|5>b1LPENodSfL8V>R$26i(wV%R+e4{|U?O20+(aML@I5n{)^Nn|LBc z-&Y#wYdY;oJcE54@GevHI&L8^xA~+i|Bw;47r^)-5T>ELs5TmgPAmaF_8s$=NJP2djS1tskp_tG2A2c9X)l9pGMTqqDP!%cVP%#u+Jiw@XEJ z2{u!}m3SZYU~b&P4;4BDknR`DnKBDWQU6}ptzQX1m8;(?k=su1(~FgMgJ}#_S#siz zcLe+)h83DtV3^)(F7H*(o;^m33YN+91R!+T(31g$AK{?w4N~_08=o*pdmnfV?g{ku zg#rV)S)H|DY!_8hjwMjoU%6?$VK>(KG!uPvRP7ns$LEfrB)3}IMFq#QLXgL3oh8)# zfwsM>IbHV7m03o^;~MB<&|r9JaY0 z0Y#tylo$h!bI2jnm}p$&YNcfI*S%OrS~)l3LvB)Ff59AR#XapVF!~sj0k7q1>x21P zvkAvRMs&$jiM1L$QZoClb0oLcCRfR;<5dN~C2=e?uVeZ%@V3RP+6~hW?sxkE77wD| z==}0ikDZRFkllkCUgfE}2@!z1eyLIU`~-q|C*39U&}Qh@Pcd5d;N>l!B!3?Q>1d`v3Psb+kyHwa%=-jJ4V1RPv+_8p>8;HIhvj4ex`xxwD=t(6B3q;XuLTf+ z6kLs=r>a&EG* zYV2y&kXcZN3%nRT(*LozNISXQTDo@|^!!>~K8~ugYK8QpLxP#hx5_swa}Vgtk6vsv zL+5xu{OnYP=@wZZCjySh=2*f~-HLpFD;{gOkLnuU|9j%(y;L)q7ysf$q_Xdp8@8?F z&Nh7sJ&RIzj*}y9d9%#-P`#5Xac|H(t5$y&PesNroa+FtUGCOPP1P@u{M&y5ts0r@ z=c*>lH)LV>oBXE&GRY`Bj(qmV`BldIoDou;K zP+JNAlGauIWmV2c{(V`_2WutVBD*!3rSFM2mII@cSAYVkIE~m{qPcIF*rgE~Fsv(| z2-iw3AsYX1=JnkEZ(dZNHQjXbSRqqFaiuQRdg4O-22&Bd`pa%_Oh;kp%+zm6T|V8$ zvd8qn&_!N=&6+WAe)s+r4?AD~6`U6vhwb08<8PZhT~%2>=8?P{XIY`|oNUW;=6dHx^8F);Zf zkJlD2ze+F(m=3>sSwR9IeHZQ-iF*`@0#8vqz#v#oXiSTMP!XAvMzD zv9651Rg?pX5-t8tV*ygwGnR2ML6TdQiwb#e5BBt(OUU8m+PSl*^+%pj0q4fjc} zT8T&rwg%D@V$@(gPiaXY(OzW>|3*<+|Ced>o{cdBExC?=aKKv_dz09YwwR2tN^1%D zTNs+xhI;lWfMcsui9Y?$bVljVoOh3@;CD{VatjAC81*Re{7ZqSHz$o)@kaJ!Y|meV zUp*k{YbQ&-3z^_k;863_|Aj9nWUVKUZ>L|#@=7pUG_~gbT0$&nWr+sT6xgZj2*H7| z50>=z2|FSf=B310YBlt^R`|+KZ-V2wdV$) z)NQWIycEK{2llK<1E!o@kKk*db3Z)XcU-^psFI7tp^cFfUAn7myOa5DgdWHlk(&Qy z==OX^1#B)D^IXD>f{I8)M8vXY_!iiC@0K^N)YP{1ep4blurY&GhMl2h0_8BRJ8nlB znT$`_@z55$JMWskc4hlh^NZ*XD>qv+An>c&?(5T*B#DW*X5;_ConmVWh*MDO(P0GO zmjDw^k?-k3!tfnl$bBW`D76ML$c&KJ!ad%b(cJkdZ{L`HUUvI8$Hr0ts4j3YPxsL; zR+W0Pp?VCU6bg?*4rkS3CJK-W^1mUj4Ns|*dbc7>yc<~<%Or_}m+;KWayNIjyKgwS ztuIvnnpmexO7f|H-0su&CEiW@o0{lRw8f6H}tQ<1c#qb|M6ny zoHSnSj{l)#O8d7T{w)vBFvJM!i`TCbpl@G={G&~rPA{6@@V8MN1?~x+p#bxFaB@ui z$R>8RI`ikCQA(yt>xH*OPMcfc^VL|TEbbV!`#v&tru9e9=)J;1^@^O+tmF54dQi)a zd{-TBiIrZ4XE<$~R!Kk1;{m>_x# z$Hc>{p0{(d3o*$l{@Uh@5A*cV}ZGo7hEshI7La>Iau$4c4q3#wrq(%E5N zo20`Wn}?mYrI66}Ab*&d=(Y#JuDQ38-;qY*@zmF=CB7cZpA+F9XsfyV1m7a3oUvO0 z>y#clp$UX_)pE+wkhA%MC`G-+DRSMpuR*Wl-wwjUJ+H6#v}G~;QK;$>{b>za&orBymV z)6cKMwud5EzY8|BxL3H?zq4NVi~LRf+DT& zqd9N!)OjRytvMV??OeaS&yyh9IbDsgkFZSXHMt2#7frec<|Ny1N@bYb?=FfFp4EQW zS2Z+P;ip&sHychttsIjGJ*JNmi3B0SbU;3_d-+8A$Xr%s z<_N*PD=-1443@cK)rdBFK#yKse`gb3=$RJdvJXJ zYUU|0C@6Z>s>gM{#)NCwzmA^iCfZTcs3hMX5U%EvdJ)2_mPpB}pMtTMQnPi}VFu~3 zAXXUbKK-9u2ElA_FR2K{F%Q|uP(?#+1O0(xMN|noTB@ctC^TSd$TJW%v;4+io*fx=~I{m9%N_-Kn8!2 zUiW{5U?x)VRK7MqHG%blygz^Z<%%xQ>^tQ6H*8;mFbVy3_G(+U{Nmx%XRtMqm{}2) zFQM?dLethZ-JFN7ykh$X-;Ut$d#cVPtOD!`Ze7IbcOs3I^kL6><~5g{4$8rhpJdXk zXx^;y-k&DUw*FdFUTqKe=osFgJg{uGt?)JXq%TX9Hay%mVowK5!}}NchPCnumC-*` zS75S8M-OwYI0uPpbdA@|)BP!+iu8bsJ3!IM$D_LxdN}!z&Q-nMBhw6CQv#1Ua!ze& z2koMuVfi?uU@zyqmpi|B1D&ftGiosnCoYsU!$5BUz!t7UL#nHO97YsONlm((m)9_{ z@bAs6C~F(x8)O1|Ar(PXEks3~w~CNj1FF=6wIxDAxbK*%0ggoJUv)GD0{hl1aWrju zm!0BB#=`F8KEE(U<4XE1(PaP263bSfxynduAz0sO^@LZ1QZPo1P17I)eI^>yAx` zN=Jfh`2*xSuw8qpbbVRbGidIY`~D0E?03+vF76*E(jL11dYK4^=v%F%b@zu4!gzJt z2M>9JMEy}s3>$tx&C)R78ghl1t+nE$`&unfIE8doQ<3bM5XW2cR)(Jj*1)<+<2_>Y zzt#5Djs&(>w!4R+!VH>iB>xMyEjg@?6!^T75~atJp48 zB(kAFncCEoNWO^@N{MFrMx#1&q!X6JU~Yv)93mxbqzuG-wt|F~kH7Pm|AOEO%#>B! zd)p$WJta+EN>BITI-TyNg-% z0hrHpgmK^P^x>12sWN)uCCl@|A38VHrh7l<%Vf2jNg396`3c&Zfmx}VmukeKY@-9V zf-6Gx^Cl_^qAZ%W)=xc-F2g&b7Eh5?NsVrHWn7S0M04WDI~kVBT^ihLJMD_He>T;~ z>>*SlyTMim5>m0K%Ehc@4l z#%cPSIK71}3|+oKZ%4FBPJ=mH5pU)h5I5Plb`AE12b7QWTUTmK(70(Acb@Fal=4EI zf7q%oI1*l<4_dW>hdO&)eX}Pz+8Ik_N=ic^yRUnd>F+S{uM>9vk7BhG#7FlcacgZi z=B_FF1#*O+5aChqrY*mm{}e1+zkMy~div#~(z||9=CE@BU1;0;8DfPD|2;tsqxMG- zKr6c%e%zRUtKAFd<-)>10asx)Y*RE_CH#Q^F*s3p4$(d9L=2cc*v%>c9~JZsqy@3X zCNc&>7z!401~$0S@9(f2Orw2Ita-7MFWAk;$R)*{)6$WFwAiYJ7>e&G8zM85@!Unx z(N5T=_s+v9)Q|>=JRgGlK#n7qRX<)H2hZ>mVhmfcGwhLFUWE-~-%g1J(;@e?X=Vfd zAYv4GNr{z4S?iR`S;5D2<4~~*VrY%uS=c0n-lvtIqo-Q=zr8X^{*KQ2 zl5CrAT(w9E6^`|C-x;k^4W8q(40gYi5#wpL$t9@XTu8yum!6$@S-`jWb^dR6lt}+- zg>3P_HSVUAaXM{D5B?aA~DIdoRWIH;H@q{<&R7Kj=JiDVM?1M_CE-2sFGFKyRaB-OQJxxOaDa zjTuqUtwRzlM%88b3X}v|9JWicf)d>SFp`B zm}SJ4>bQ78F@vL+ZrSStyNe zqibAZIF`-<$WnZlX=WJ%SC^C~t`eAJMHh6L(x4#lpoFk|Oyh`9M4V{z@k#@RQvCSD zuGCC6bin`NY~g`|YisLWth3>v+-ID4pxa}@A|Waw*Qp#HOqm(1mN<~U zX8n3`jS_d98n=?V4~;q;DTz`XwM4D-YlZ?S2uv~oe4U`UG;j{a+JpQ$+46vhYtmec zQAfiiDvgOJMOO)oEPQL|8JJF`t-megpN5e0D^BFk9AAJLR026oAD8R#3Ug$*A}lpi zQB#uxF5U%o(x0go4<~FrBI9Poe3bxLgd)G^Cu~`k7yQkxhcci4q;~yfK*>c=tJKSs zNuo0x!XfC6CCe%ezU?!zTc|5$BjrfoaWciOxHItz><|VL;5lIGy-*)(Che{qcP?3Q zGA0}-M{&%DkN3q5TMyeft*V7~NF$Eb{N`l+Vp>DL|MTa>uff}R8V>h#Oug1ePFaFJ zQku;?WwATDar|31io#9T$?ltnPWxb-6E3>emI*(cB_$gq9S%%emIERtH!WiOW+@2q)JaN<@uX*FhN zrgOpiwT{ndpqq}{Z^x`smwnl69Ggyj-#zX-82YJyiL|ZJq0)X7 z_VJfWQxl+U@$zH8I0t6BJ2H?KlG7*@C9_W8Q~c|OU-CE#)a93?vWjQ3pKQ=EMfhHTB+BP#hl z1;VRh8Ijuq#fJ-o@Xu|YzpLnP&Nc>WY@OX=oy1@CA?hMfA1j)BSiEzK$jGI!)#b2HSJ+bmEQY!*Us5PPv{f3UZ`Bs;ij7F zp>VO6r<@CwfP4wAtBf(-Jq|v@2N48ICCZ$x7%bWVrIkh6^~`s%y{{U`Rdw{A>Y377 z50t;8vmMnjhED%0Vf`(*rl&C7E1d1DJ+tgA521o_pBD% zigMTTWbgNuVnwC5{NHDDC6yi{eo21&BOZ5VXNK61QDWz=3lYZJ*#g!do%*g50rrU; z68`>xnyGY~E?C>Mn8S^YnyM6#JE@s+w=cO@y*E{FqhSGX$@+>(Q}JszVqsNtK?05J zfYp<~DE^mIcob|Y1m9-onN_7)*jL2mibNmAqoaR~iD{Z(aT!ria==7XA)fKuEYwkd z4j6DUgc0vg{I&AW6xP2Cb0F-5Mc6!x`?W|3omO2@*>t`%&d>1(G{blrZdbMn0L(Ac zp|Zo+hlJb1U4T`fK_|m*7H;P0Q&<&i)O2p0>f#sJkjSbh%AVxOPDl87(XLn;{&(ce zRa?X9DKTV1EUZw#)v^B53v6j1%V9iE_|7!0>V(ozoVHS=0y78yUk_bb9o_%q>aC*U zYP%-D#@*c^1a}MW?ruSYyA#|c!68_1cX!u7umHi`U4pyy9NzDriBuCYoI)(l~X&6#EVwg_*Dkw<#Ux+6eL#A!v&ee2B3c)FV@DFdZHisEM1pCPGv zN~s*0PQJz4rym_^iA1kmovGj`ue4K2ekO+t#0Np}8iUWwuR8TgfUfBZFJ|?8nbRd-5|=iwT*{yF z7t5k9#)m6$DtK02kgi2o_h-0+JPZiW4Mz6(lK0Rk%r7;&*mZ`u6!msVbH_kjAuIx> ztx%9Ue9M1(#2_W}r%QorIBpCM2j-0y14HNv49{0H5`A+AxXygL>YE-0*`D zjy{sI?2pwzcYY+9#QxFZ^gagLmj3xppG5}|4A@aU};CZGutgkk8KuDkRC z# z{MM#_KJAYkbC?`^9aVIiY0Rrh&KhInY+jGB*qzov366@kGG%feIDQ`+W$*98xcC2< zx`h3!>Y<(*pA#O=Z+m)qSM_b#kdjSK+9-gt1kALBr7{=Iyq^BZC~H<>75P?VImcja zT^R|4WJEVY^IoYf+lbRyyhynDtBbZgPsX(B$5F_UpT8Cha}JT6VD2EOzgVI1$f{BrUwLAjP)L(`@H;3lM!nhh;OfEwB+o$m z&l$B(imsDLB$VGvylxU#2B>u1`9}khgPutNR$6}=m@$CQ=tZafQ&)#P=8t=a*t@_3 zgfgqsgY)9Q<#sy-(N7A#isV?KWy~*bTBriOl40!HT}X^wARxP*{!=W2MrrRjI%CUE z;@*f_)Q~+ApA3<9eo~^=Zf^|)kSFXCR0!Z3z9kyeWk9YNN*f=(N}>4On~yYUh#F3w8C|5#q+$yAloyod;c#9+++R1dShs;M=SO=^;e!_bw_AMv zPCo%k1(y{1CwcA{OOVim8psSAH%NJ zY5?lU>u4 zIPd@eKngV{Mlw1skaLdG)F&S$^a*>Hj-e@6!@Nps!IHXD-pL+~;hxx_68D)Ud$oXL zr((Iy{##2>V-u|Uwtmg0JQ8m6Z7&_`Op$KCmf6NOU~8GR5e$ zTeIrjqVXjpb7ga4N~PS9O*H#-4r~sVX}Kw_`%VPjZ{%AVl~s*4v$O*=M}!*qn%~Kt zzT$G~eQ$&3$BsFw!>AQ=0pY(X>14aLaRXMDju3E;j&3uq*!`O`lbYr*+aFvRyq(Or z@e-tI>(#YvlLCq=3>@uo6<;R(SmGv9n2eXu*22=@Uj=w3!$ZT z=*0G^_7I5%{=swyVlw~u$`xqPxnNC<#7CQ9a3sBRl{Ix=;980-G&hR-&2fY* zlQPb2?gipJF0zIXl6}Yh$&d8*)wn1e#n(92tAPfZIpl%>ATLukH;s?3@Q%p81%B*@ zyl+z=3~ZvPoN45d3Jg%!9ocG4a#Vl46#TbBa5&EenLrkFr~pzqCuK-aL+@R1dUc4% zQp6SXOUV2IrP7-)C(LlG=>i&U7e@#2g7!2pA!Ojsdx(hX`b&COaAa!GJsVA~NayKN zS&ULhBh`w1_q>#GIsM2h(dX-R;J#_$YHkrA*oq1)lplQXMDASs|*t2yy;I0q{t#PM@vTc&r+Ey;X5xnut82g%6c3tbz6TjE_!bV3n3K*wwh@LRD7|4rut{OkXB zG$<5JrNM>E_FJ1)%L{XQSCij|HGK}<6dA)OKRNYBSFedtHI9T{KzeR~b-5t^_W8>K zz5YQ-nNU2Yg)_1C-D)(@)%i1`eH;4YlQ!9wji4xE8gBi)WqbRLCgW0OR{*yd1Tmno zO_4RcgOXFX&Ygmd!$NQl`$6d={YAATltRT|aZE0May93bj`7Ccpw1w3W7&z}9KOY8 zX#VeBTTK%7l8~;<<+P5GQ?SQm9uY&&CmDDF9>5*VpoyP~>0=T*%P(3dL(katbdI>b z_ubj;zysr0SATtt>Q_{`+5SaPsNFYkLea)To#{xAi_V~Fi+%j+6d{ZBK30@nR=<$Z z+!xG`*@q(O?d45q*OV{v1)XWzG9YWac$g9US^99QO&d2v;qPYbEIL{yE{zwvT)a4K zYADW0*XsxW{B1vS+h<*D;ey+=>zg)|$qmFfRkD8=y%va{TmhvEDN&Y5T%hnLQjHTA zQi!Am6*=*dDhB}a-hm6mXLKlSuz^(OR3hqvTjs zaBfsu#g%jrUf-lbfa$nIu)FvRSK`@T5V*DX;uT3B#Rb^9Q zdaa|V!sJ1h#xa9v{r7E~EMpw_NaVgy`m3e_i@Q>~9xz0U3YAVRv7eQ0^&#|)yR=%J zzLX6N35J;y`6!AAt{TnphY+%dtVr^|WKxcw5c!El6tys zs5`>h7^yyH2B-tfKmCTeAa{(&A^b%9OD3VSYJ`p{A`tq4T`Lt-^2pI%}iKOJNq$mudF$9uaok?HtbRn&d3OY6fPM?%xB&Rh+k_e_8 zJVI!EKmTN??%j`$-7^>S^D}PW;WH(_eSROGmTQ4)WS>s@_PG>7q)!9pjymtIrC_fU z2}w_U+ZAYbd*DQ$ERga>*cL?C}@fnorj)@R#Dg|26RrjWDU{!0=!tIq-Ub6r9`{%F_Uli*^yBTeV8q5)Tv_jD&4P4sg7 zSLJWzUD+jwmj;bILcAAB(s_%5C4-uF>k0YioCb5roCRom#IirU^2t0?>F3WWcE?Ht zP4z~2x)Q`3_MPQ?J6fVGQ_m5UnK;~4Sw=}bYodx3QV0ffF7CMDSs=BMQFshDHkQ$p zIoM2$i*ADM+tvK%y>!EhlTx(90n0k5>ruzB5-c`QYY!-n1-TBHdIHs!cgF~Ujb=BUic z*2KP*p#4|~n#-s4e~{zrutgvNw>uS8rU2P$twVS!DsxYtQN74ANB&mJ^OY@D3QBGm zw30v{G(2~At$r8GN&c~Weal%?2|U=E4TSmI4NWXG0fax1o~}VOFkYAm;Oj{8uUXZ1 zrUy6{Pa_ttd%UsQ#n;CaT8%E7e!Iy?%JPT?>qAK^+qqh!*SrjgbKQ5R?tup0DY%~O zu7i;{=|nI2u%M?Wra5=OpHn_exTFWDE(cZ!FXrKF0z3@MCcJKfv_r2)eZHoRVpS0X z09)(AMI{?8NgHG_UNJFVRXtrJvXgwMPty_acT&Y*7-m*v@m9;P(M0%Hp?*&FsfzgK zG>yhb{O>u8ZJCsj6*@TOG)$4lD zH99+*ud4yT*IZkQg7u+S$wpypyVPFMbrKZ#GAResMe`j{?@j{(igB)x)-mW=4z-$L z7cOEdDC+M9ilqO7dT}6+T@U49K`%;uU|yZ4SW8laj;~ZgR{@$*1aLanr;YPGB8VpY zXg=7+EFj`VtH2gOSkT>0+6Dsxr|fJP!IOg^*Of*5YBuk)?&G+;;epUpLr7MT6H7p& z10@7LXc7L8!kswBvkgO@_%@O1Y478pOWihjcA2jK7EGx4sBB{H+t1Ot-K~P*^YWbF z_Eml>vOoPkx}>()FLLe|#v>m4;h%Yy!&%3MLp7ypSyIC=gATAj-Ez0nVCHA*YIYoh zqVY>Q;VuON+n!Y2LcIs-7WA6Jb^h+G=!)5ThPmVCJb{IpQSKI_m&U( z$c}bL@9FN%^7y@yC&EE>XyY@h6BV9%v9YHdEw&L=Kj_SltoqE`IxD$9d)mUsXvlsg zQGR(t%`!CSJ0g1?wnL0y)=(RfbC*Ks?2_mo7FI;&%=bpg3ywMnvkYd5@-ZmImz%l| zuv0Udi0DeXnKG!i`Gj5ey2&YL@PxSck&JF0&YIZemo0TT;oW+RBty$ygIXhFbq)Gv z1h*%swI9lo3d?D40IJ4+f9|$2iJ7U^Br*ATl<5$F36XRGUYZ;XKDxT2i4)#b^b3jBfow8o@BL6tj{=d~p7eFlcn4sp8-y2ZknK^Wc zZTw*H^lQ?Oy{GxN+SYJdvD}i}1?OZmUe&nmr@HhvXlP~d#~rAjr?wtZ*FpdtR+K?0DwrB!+Qh--P1JI2fpCT>r0?UnYIOW zc$-h6bk6l!=HNK&{X#@-LaWmH8=ENp4OOmJWLc7L z?H>BViB9VS0Lx9asebcC@%MtKs1NbJ0_ctpmaB!64Pr__J3{nT+$7b-vXL|f7YND!tPAUp31Yy*DHuU;{y;s6LjuClYMjZ|cO3*Bwh(8a_ z*Q(6VS)6H%ZY`ho18M%#It*?(>^|Z;^9<^*=^h$@5|I(ZiuAi+(2ZNK@==L7);LHg z(wGodIou#Nm9%WWE>(e=?*S!Quezu0HOF@Xz^>T9Y#4YE}$O+xC* zH2>FNCs$&((4c8j$QU5Iaz^2>=!;nHV0f8(mHJh|5Qw0t!LY+uwLJWQSgE0oyWqIe zYkeyfA^769PI=tZs6?1ti_!a7$mK?1{_REugK%ZN(wATbFLH9gQ`f`udA5Jq{k1CFAf-y-!zPG5g zRU05F`|o{Az{9o~E?c>h-y} zIcx9bDvg%dHKLOqB$2Sw^QgP8toc%vP#gu^83V&C35I9W8z7}B^3j$5jcAA5>r;01 zz_w9uC)oSk-Tic2p>_jIJjfPcO5cdj^|{nX`G0jE3rBo%R`beqH*xGput&P=-IBp*)S>uk-b_GPTVaq?>?Q=nm;k(*|~ zn8n}*_>UK=@uP;|Jj*0{-A}c^TA)uus-R4+IAH9TY-U=SSsgRXD=~FOVAWR zPA~{wM;ZhRns*js4ta-CBv2IC=e#9oYJFiGZn7_wTh(t5{Rh>wRfD7c^sO(j_Ql>> ze-~O`nGmZCTKf&nxBULibO-1ehI_O|*sMOZ3rzCXDOVPECwfx3$E^IuzDFkC370%3qZPimE`27>kyyLHmo&VlH78q=_+}|kSyaa^WD)OlAJBFV zx8Byg_!Z*w{uoWunNJ8kSNo-0a!!Z%i}ii{Yv zW5Euoo4#{7L9J}w_Q};s-e$Q>tN?}l8HR&lc~?VR4I$e&Z#0}Ib^+Wzgz?ZznUsi@ zFhs>=6@{L(!j0t*UxyhHBdn`f47VSTZaIzy>cwg>M4NVK9WL&v_7`Z5TPXhyU3*#I zS9Rqi=dYMx+b=BC%t2EjgM43=YOBG={?0`ZBB~>5>go{&6W2loouip+wHwYuB$5qV z%f`_C{r$V$H&6fIkg4-Ew^#k{*V6TTyYal5y0~HPuzM?zmSjS3knLK(!~}igW}}ri zN>climDs=vq8)?JXN2d81x*g>n1U`=L;p2?9m7%fm@5b_{URpWzW0z1R^l4FHHaz*nEJ{rjGrgZhK zL3R7#GA#VD`HtXG6a+001roO1+8Sy2jXVt;wVu=fTJhX(eXN{i1=ZRgHr&0+jkqFd zPp)XGRXX8C{vDo(`$^y6o}4M%nH}r<^gTM_lr28LJv#p23FnX)LxUmwLkB7jLutm3 zfI*qGgYA(JH=A)9lc*r~tIzEQWUP|v-3`(~NZ-JDnL9(~?QO!U+{k!x&wZbN81foD zgN0Hmns`-v#0Jg-ZdqWnck`YdaskJVaTVKyI*Vh$I5?Y48%7iUwq(V7 zzOdtIwzw2t{aoAvN#}d#TlQR1R-$r6_Yq?!{*nXdK=~2%X*Pa-z3bs$Qr}MrqPo~9fP==9`+Z5=KjeD=DEBu7 z2nw_l4fByM3`Bh-4`D{lyH}D*XKH^`k>+LYtKvq2ST++bX1by(^Y7Cxnf{VOOna$3 zjN9g#(sZK8KhYc&tJNlUHtuVD65n%bd-tB|&_VS(c9rY9h;#^%2*3L)+hGR%#@@_SNgQLgl#1J{E~ zBvFSC!OrQHp>j+eYE|7~3l(O2EE`;|!>2$-I2OFG(6H0{qplVl@@$vDG)CSGzX-l-A`A)Nc}rNwlf$ejfiXE zKjgr-Ee!@#FTQ>F*bYOIzO3E4(<7it^)Q5rYY3gMmxeuMw3{Pekf|Qwb~)fL*L8~U z>wgR9C9&s7vd;?x@}Zg*5;~O%Q{_IYfF?lR4m*NW*%;_E&lW2ZEyV#-4P&pTf_3Vh zVW5uvgNw}&v}pjX?()6`27c(3`-pm`L9Scjroq1RUY!s_&impXF!M;v>{F?JOTpl@ zkT69=Ln@rHWS&k}q_JM_r%cLp5k=G%`Wv@Swvn06-R$^GYz|^QFKFI9Fp5>mZYOX4 ziLw4{6RwgxdPju2D6Uju z7BGSPY5|pr4;GT#m=&m!SQi6Dh=H=~V;BG0&F7SfpLA^m(xGavq@!beEO#Pk#aDBt zgV}d=8bbBV$u*eLdz8nKCwzl_ zSOVgP%UcjOw&q5?$%9MYi>ry|+u5E;vOl(_&Ekqlhh1TOU7pjN58FLB^@P6FGgj&C zk+i4=w_;j;(Lr=X?_UZA_SDzh_QvPKTA|ebyO%8#x3AA0*cw$4@z0_idwap@5Fj6Q ze1>QQ=5MPFBPK*qjEL|R6w&H`l(BKvgnE0#;3dBXXb?s@wXJdt(eisCnV&sH)MI&A zn_>XCQnUMsc^o9!q+2J6hv>MT8f?pngSBDDTANybSC#MD;a}3pK|r7Jweg_4>7W5q zzoKoPS}78%*F(~o`a4}(VEV^BS$Jsl+VI|YGdjR1mYuQ-0uF&<=*maNZZ|InzUXgI_ZC zL78Zw0#N>28*nafEi`n?{ctCg+%jqmIc}+<@dOz!;W6vWc&zIlCQr=>GT@LP>4$*e zf6@R)(6v4~5+v|ZfXo0WkTjO0pAuy*b)GS3lXC#IhUY%X>9)tYSm(7n!(~P%C_~)8 zAH9!-Q-gk3RbBq#IlA8#(+p}x+`F=T=OUl&k)@q97!AJ9lQ=a&$r9vR`zGTyBm|ss?K|95h^)9duRf z?VS{4sHCE5YX11TyHGKPDr2@|!xDGgFa}2<6BST_ZR4d_N~%&_zW6?vUmE4q_pYF**!S54{S- z!#Bc5lfGB&N%h{n4cWy7#X9_&x;3Y9Ec!L`rmRIYf6Q0zwelS6(0_2u5Cst!N@WqH z^uil49gw331Wk!@*{XS-_+w8wiKq@z;zPJ;cM5$h*~3FQVq2z64ym zGA@#ywQl?L;vT9m<`divdvf(%NcEJfd0ANEfaF4k`}{qBWFYMj2uY;E#@svH&u}aT z28Pvuafc$zwZm6pR%6h37Qc4n5}*pBbM^G(>3TlvxcS2|Is5>ODXXZcY&G*qoulo# zqCjZfU3!#vY;;{je;xNMz(J>t0R@1Q_c3;fzJM|pyNP-?K3%EALK$~ZlguAWES2qDBX>W|fr6xiYqMsrxT}_E^t4?wj zQPmig_EZ;B72{>*9M_SvF!FKJ&m5?w<$DQx-aC&K60b`)r>!Kj2jS_QCbbu+p1igC zES=pUO2r3%TP-uxvJO>}C4ko&a#lt;6PGV*HVDw& zGnoS#9-18AA3}gqJe}K-bPdRMBi$f#13{ls0dLc1B#-#Ls9BT(a8C23m;*OvpxRK( zg~8t&$-11UKD4LNlz#qI2`&fUHJGZDs)*gNU$nM*TgPFG6eg1o_?4LqM5_6eM##C> zKFuRGgq@ucqcGUj&5ccl>wMdPnjH_tt~T5*cSYOX*uFv1M@5vBBlORR!Ih&glnu1I zs(GmYj+Jy{vlreoFH~zIuL}!b)Cz8aD%I)Xhmpcodhp!#vt^K19*a9iR3>7(A4A&v z@jTS~9n;LxQoZy-rw|QI-~x1ex|H}Z{N-=1C?_zP;)g4q%^+EgSq(Tpx=7xd#tBlR z5CbAHsj{*%dID+mc<5O_Q*0=Z$5_w`B(!f?wf22J01dS5tAP zW-B0u8o9qBS-_*LmhdeIAst^{i7`DT8n_R>VL%bc`N@BfI z&KT>c7x_KULT7%dS3g3(2B$LTpxjaKRbzj$YeY6(h7$F*Q$X+u+$ZiHtMNN%6mX)2Y1iXG`T*ra$z)b!WU=*Pw z41RHCyVR=sENSC-U=s2DLKgD4qmk1*hhei9)Qgie1q+{~(7SBe-`Ezx>9K{8w~1CX zDQv~SpeY66JC$b+-Nn~V00Z}Ejgl?on&3dzn0^%g9cOWJRjn>fgiP;qgYAOJcuEXT9-p z@W>3W+rclQLgJL;IeOLyg!hLl(&clX(lfZdvvbrN1oayS`$te<;(I@8BvAD~jz#|+ zU92LKii>o)^@Dm%!~a-_qA7J7w(2VDhDJ3&d|34M`fR(9?WCrnBJw_q9z)ElhIOC!jWqwA4et1j0K{+I8rXb< z0#ObJcR)e=CI_+)Y`vxK;+XB@!CBw6e53my5TD`;%(ON+T+?~K-Dat^O;lV7`**=e zY9jnN%86umWloiy9G)A!Kv=k*vSp%W{_Q58Z5ax{Q(R9|H}&IH3b~X=eNPM?-&4r0 z8#BuGy}qUacg27XDy}jz3pE-eWWu_%J5mAZ(Q#pZJ_6qAzZD|aQeSRHGMJ*0FAL%E zLHHhxNf06m3dlg{$Utkb7(2St`(ouGU@eD(KnDelK^ubt_4-WVOCxB38uL&5664`W zj}UrA4-(A+!>4nZDG#N(HdJlwVMSqyh(w2EMHsE9{D-Z@j`1(6NLPbe==O(d{y~-O zZ)xV(__+USkF!)0N>*DY4m&VTfJclWJ@~->1+xFa)C?M-#coOL^ezVnOu}!dYKJfS zNzaVu>nVO05au*nZ!UklP($|k{Jf$@?By2-@(JBMSEuasC_8umZTMq*3N9SR02-nN zLuC>gH@9$d3$2H^AR^~9F`Eg^`Tz9-aH%$2os(EEpj*1xm0zK~HA4;4M$BD0Z^^Ss z5arxmVrsNC!X3|^jT8%pvU(iFmJ>`Ck2%pS6zVFV>jl??{SEA~gqOsHUw(*93TeeX z-9+NDW89v$q`SBx9p0a}|GmAhEI!TjjnacIy|OcAz3FRjd}+~GZWk19W_@hhpUt9_=f-G!)Tv@xO*zXt_5-4fQMs>_Fgb#SzlBJ$_VwpROh7bb|-W1 zJzK|ueqqszLjWQI+8QYsQFLE&eSz*`6pKNQ)zFxV3LDWsA7c`000 zjf~LE4F_7J_XC6$sWa;+hw4bky-1XJI5fHwJ%l-sAx9Gn++|Z7SYKsyBMCuHW_Mwb z-p6|ZRtM_}z^!Cn2MM-m-`TpIrZqkt4xcTEayPu)|D&9*+`}iqlo39o9&$4ELM3gz zG^){F><--}Sj_9*bHdV28x0|atdz^|5J~rY-xCOJyq}7hrVJ8d`#7BA|JaUY;17MA zC~!;+3;In`4M@qSfJBW_AmXXf*>o%On{!c^8TqCFaIHC!>dhj*mmS`~4}WKR+wu@f zN4ykX@V$SIGU`v?=+PYVkF-!A zfdT_r68j(#3W!^U&5G%4Bx{pBf8jhGNBy3Br)$Uc7$JszvVcpny5)_Wb+Q01#q_#3 zTxLP3J*d}E?Z9~rn&sKG0RJ~CIi)U<I+1rcI=z5R(UBg{29X8=Xn?v9jr;ZY%uaGqg(11|YY3Nq6 z8+6w6>GwNnT_^0I=8{D)WiyRS#3)kl;fSu^p8Fn6j`hC=5`$mNjbOQ1Fhn5Wb#$0_ z317M~&zQ!Q)3@3wZ(^I~^6}=9DjYJ;=^iVso@IAtEzU0YCR#tO=iYs;O!igI?M$E9 zel1Nj0GvUQd@b0aQIIPAY5q8q)tdYDMVb&`-SFhzj@`ij>RjX@CY;3ZKfJv7Ag=l7 zRVGO?m~HKrrM67%2TcB*ZTYOy5Wa=$;-$n1G_km~)Qc7J0Io*;e7$S$py=?EJP_Yd z1hkt~f#D1*z#-xc3!5n4hIiyFQEu5W?f zs42~(3v&{)KIAP(luX()(mvfvB6QXdkDHYn3u(GuH&^`p)-%FkhIf(d=hH$z!ci4+ zf2LDV%XSut$kgV@W>(?-UuF2eJ7%9G{1qUJZ<(DG-ZC?Z5m8a+>4`WjkYmV%4LkM| zLqnnE6ch@93vC9l(NUasf`IIn5bDH8|+xQO3hmiz9MBd~?Fu>h*8BBDUB1ECawj@JED z>U%J-4@f1*xnEhSl-ecbh?h*sCEW?OM5jBHHSj^Lab4VvmHxKIVP)LW)K9>cF=l|s zj&|RtH`3diI{*&I^3LIpk6fG5-xF_*W)1$57Fd zB|qQR^b6G6<||+B2PkoFjw@=WJH4*Wnu#1*gHo9EigC&eyZDNVil%0ig%!^`uVZoJ zu+T5K-obklhI9b1R#qi}-Fo&R?yEg@F7@6QkTC}z_WQ9U0(qpjueyBiC_fTna;&l% zPbN@{SB@^j>Qo7-k7;7bjXy%# zpoZrl5kK5FafgL`o1B7Dwkw8pXZTwwYu{OH3mmmzm2BaF?6=1QvU05|!nq1d-|yduxW4u3^CLI@0={Si4m@Yg9CLDkwCjJZEyn~2>QP>{&{c(dCb>c z;J+oa^UjVs55fMxp~$87i{_)#l+f1?4phe2>^eqMBqD#-KbZ2u)<2=oIqu=$^YNTm zOUi1M)*``IP1}}!*^0L4tX2Y`)LMLdkvQ<7aZjzVfeTj=de$dJRU6E}XtP(yP5(iY z%o!S@0H}k?9@}~k)~)cphJKyU0fw~oNwj>sDO#ymw_kf9A==vsioX$lA=+!eG$ z9RNIQ4x3jTI8rrih#MY&k+@Po9)OL9XUP^IB?YUPBb4>Yepv#buL=OCJavG;Dg#om zIo%Fb5Rs7^b(#x9fskJ{PtVpr?0}^bP)*3lE+xQ18Y%)S%}}uO5Fh~pgWgXAkq`(~ zIbhip8-rBXX$pe_`Qgn-91^)nJ%2Aa_`aoSe-=;ywU;xN;zy5%ErVjX zdaC*As%1HAM%B%bDY?jftl7hxYjzcLDa9h%yMRDzo-l zFWP2^NZY#m;y3D(>o2;`tObH|rG%C3$CuK#3J0Y)SX0I9!IH^qo8jF#QjUF9czX5;{kp@5-xv;P>Q+f3qNdes zq{&%^J^F}%dh`ntK_mE8qG-Av@V_O{3 zL^4cFY&NI;LHlA?8T~mSv#UbbXV52BXHORaz>LxL|(J^467F9Tk5$oA7x0p0j^@;C zv%TK7_ia!M$)-K*P0;mRm0qfgt80-eL`fZEgQZ^f`6kd@_v`C8?`DXB(eQh|KQDQ@ zJsBGVtPQgrx^A_SLjf@&F;Ij&ti~7o0=}5T2LPaO2T3A) zm!FZSCK-J5P$SF4oyGmp$50Syxf#N)IFu8N9?`FmswE(BDu|@5pyYpKbta=KKMO00 zfe|S*9A~}%Ezc+Z@2I)zH}T)2eTx{x)}fl1w-NZzlU@r{Cep~MTVcBh8p^7X1fQs|_?-*i`NTe6pbZ?T_NSEa(Sr+c)3}g;3e0fqPD^1npr^PV zeFU5gbX{jAE1tYG-;4rYsb-c0g&CfCR{@VhHMYr$$DXHShNI$~7zB+6U}~xG`7J-v zPidpYk?j36wP3R0VFe63-)R&#@FaoGrxevNCcS1Az{qU2Xr#_^GP}`a5Rv|AtsR&H zwOQ|M`_tjFCwIKw)gjBP9~j7jp|Zj8;D1@9D*X;DRz=@0i`>{x|32hW`{d5nA(0^l z1*#(yI%dmT3wIVYZ2@d5pchzf;zO`qh_YE1P&L@L3JP4$4Q@!nV<109HTpu~aWqBa z?-Qj2zAH+Z>M^0Eiq?_bgA{M%apdju2y2NhWP8dxqoGZUW+RP<1dg>j=-J}{WuG23 z7Y-CpYv)tJpk)yeNBn_<>^t9HcuX&#)xz-0=jQMWyBiQH%LG{XYqtNj$1Y;<@y{_H9FJ_xXJodIlI z6^;o$+2Q+LjnI51CL+H01i2r~Zeg4T$N-ucPn~lCGUUn|m_uD|OM##v-xLQb+)eS2 znCf>K(>pX+jU>Si}_Z&|VE^S6$RFRwsH`EVALSRq_^!)0V0PS6B)WDlGFXJ?N>nuxZ61MF>5%F^}{W9Usbaad8{)m4(` zCLLx!*{LH|=QA)?9rD!!H#e}i1&Mf~N`%Pd4zra%mK{)f%wt6tR=4dFnuN7-ZAH*z z=b{Nch>VpZgBrhMDpmKqc^~m^o^_n3v?WFPe}X<-X{m|cp>!nLJUA$sOUletU}Iwg z-o7r7K}tte9J#XtWPU4fSWYCV9vvN}<3XHJ-Y5TRcRwi=hdW($v z2{}EQ=6<~D|HrWr24BSbl}epoF1zb0xu|^|sUq-X%)DJho17=S?vfOVx`9RxnN198_yKN2=NdTvn~2WXQC`tEG4Vs9&PB8wkDcdrti zqdg95{g3epl+u_)5Kdjb=dO!A0X@`cM%Q;xEvqg_b@e?~#vX5aEe=!x0W*&=ct*Yn zh5@hcX?_5jae0R9-fUCYyUXcV8&ZdP?3LH8s$&2*yCthpAfqa=@N1M1xtd zE3f}atXu<5Qeu1_{-|X5{dMx!%9_laPb|*p zUDWoZM0twK7}~F!z8Rw#8_;TkghCQjy-ES5b$jjWR{~JI z@4=lW0R!JLsMitJeXkV>1-%>pj0HU1pDVv-#%*pIGdTbjo;QG*@0jf;X5$c8)PUDp zJoh6to_j8zJ3HVq&W#=-L%)!G$Nqz=(mDVCs2 zWU)vd?rL8<-QZqDn!q8!g z-2PU>*hHF$oR4;tAzbpuKv>mKDt(dkgUC%6JB$<{usNGlGcHP}UaD$ub(3}A`l4y* zM@=-gr(8v8d ziRw1Oo#1F@L0{+fF9Q0{YED)A?ApIKj8sSSxtjn#MFDw?Du4i%5>ib}eW+%=qV=k_ zJ8pr;R?OxPk0*xqO$$^*^qS#N@H@Y5^$xBdOFb99S!;#9;AKBsT%=6%p7-hJxQt@y zjt7X00{}o#tevk+9{~FO%EJRN;Le|;HU7?VnGP|){%cwLnsLLbQl>`5=em#ldO1Y4 zJnG9l3(TVP`P?zS#Ku8ppiA*CEW3-9n^*73;Ygj92}|wPo$uZvv&FH6BI-BR zZ_tgw4N<{sziy;eMJ0ouH_qs_8-`HRBq`XcjxIXkXnoFms2^V$!qs%5*2Q#vGgR8S z8%9xH!glT5tio$onau+py$iGx0;~${&VMYP_;1*fC`6-qN_sz*HmX8It_Y7E3Ym=6x2uNUBlx%VnH}zYKFAO=B*kc zK8DtG%21T_>M!4gD;+-EpQ`c+ygJxd1n0wqoD8V{d37BY=IOLjt2>c@Y%{5O9!aY6 z?^XfAho38nCEdC+$_=>72Ye>hUG7#37~S@>a}FOCCNow`h$nLrA4;^)O@gt!X<5s?z`uu{QZ|`skhRa+}04VBy#MeXrWZWup{q{1Osjea+5ISXuuyUk|y<%u#i_)E&;r)hg~No0e2Ze zxYBkfXb2;603#UTo8Mpn_z)gIU&f)Tfyi1IDp+SK$2wsZf70%hJHxLUCdRz!Iql`y z?tN{VCmK3Z;3fCv*_r-Nuff-Rh%oxHq5+}buu*|MuhaUKL3_eZP?FMB>9j~ZXSIM% zMmNvk_IC;GY5B@P?w;t0p*Pwf+8k5ebq^fDKvi(9IW;c z&bMEq`?GtdN2?Qx?97#lXyslf9iQ7ZX-vW%vb95rUdDp%+m!JiOWGSf8QaU-?{bv~ zB2RGLJomGxS3X`uo?j&-V5{(^PyBn;;|NrN#g!x)UhIxn>n3r;95=<7JCfZB?rF^s zNQ_49RFT4P8GQOFM)_^Jd{TCWGFsp)711hr0Z_81GwtYk^ly0 z`5@Pbfa$u&Nvm}n4L@H->k1g3u_d3l`jT%z2kUT<#(`C?hAn(`oC?x`vMB*agv_3~m zjz9s<(L`hrA|hg;p6@5<&ECjMfOu1DurQhW9_DmBOULJShz#P#n_g6j#+(1YLBJf>_|Q&GU+ZH zd)a(UHIy|0-}Cu|DJIdz+q0NIlEfeUZ<4@b>^eVS5k0Vl7e2DGWKNG$S$4r^sA)DD z>*n8X;hS_PpP@I-UjqK!!n5MSxMyoksdqVcGnqm}qL0-I(S;oN^Xobrn+^{!NoW7A zK{8;F$dhAFw^nh zHBLW%T%0gEl zTP9eedYFb)eXL2Z*eF=5?pdXNObk>1ti35KQf2R_xfz1jf7l-Ial-d%yfAEn=;$f6 z#Z0HSZKw`wh-(zv>xInZYOdvqmfrdZp;;z>0~&X;23@|xwz?YLj}7kl{rqIBMu>xe zPK=MG44$cvQlZ=i`53HWdt2#M*Ckl9X%~LqM7!*37)smm^Ycifs@h8Qov-Nu+gIn` z=bsRB7<#zAv61^E{rVOL)EaE-3ZOQ0=?#I+H-`x>b*k<|?r(y#TXCJGnAn(@oR$oO zqr~@b=N=ckVU7-U(x>01P+|;NfDuQ^D09iT44&Fid<3E%RI;+NL@hcWnlBZvOWZ-# zKyKrjXrXEkWo4Wt8Ang+MEw zx>a+rRyN-ee@wd zh04tb@=`nF`ok9uQx@)72YG$-Il4zIwR^ryA#wAJl8^4CYkRc08130ojnXE@ii@>Y z(ft=KaC|0nu2tL1-6(@+xeO+^6^3u}Z_Ktuuhgp9v7 z%38zSDc2NqQrE5YYt}omMLSwAyS9h!&uD86;Br)QsyD~G zMlrsd%sJoQJ=w%#xqhD4?8~=f@3wV4Nbhnf$I9oWIZmTJFG4(h83;9v0v=0bopM_<-iPNf8Qg=* z(=#IJZ>(d0Dozr(|D6Bds8)Q3-9I?9i1HE z(NDsi5DySTJkSAR5P_$A1%f}WFx@Ph%hH+mey0|Z-_jiCrA-5?8fbIc4Rf9;-S!Y6x;#zR3dv{k$U!1CVg2?q5x9vWE zT#Bbo9*&ZJR(Kwa=SEA$ZU2X>AB0&Uk&Q zn>y$aBF5mH=;b)}xEj)?p$*rpwFv!qGn$>DK`PzGM-fsoGXg9dCO%`%sWgMav}bIV zB<3y#7@%Qj6_j>~B0}rj)r-N<@$D({KHj4`l?HKYacnbzE*fOo200wNArgiW_=0J$ zOO95=NKkm&Ft`w-JB(_zy^W4qXTbIc>13kpBZ24e(53dV>6?Y@Vl zu!Rzt-~?JNoN}M9xytdq(XDBs7Q1LPFny#feMe7o|I$<4Q$f_N)l8{Mg=(f*soz+I zH89FN!A{<9FD8{3SV_HynXTC0s=6&o{~|snFN~i^M`vqNr5Br9zNz4K4{yPO9J~IW zK@of0#&DIFLKfcLhra6Ep6Eml%id+fi?5nb+f(EVct`K9>hBb)Z763U*k@`CB#BKSq*yyxA%Jj0d znL%BrM(bjeG9@RbtdHhfWl*Sz##qc`U)52vGRe7Zt}QO3b=PYOP<*CtD`vaEIN*gt3d%Uds=PTi`*+a0T*;v2ZhJ*Fd@+b&|?{$h3mX_}BhLLVm% z3!v?3ypPJKg%yww0iW(6*x$Fk0%wsrpae$_?;$8nbOn@a;*ydwvTTQp;S11_@&!Cn zbAX}thCJZjBM<+_J!Yv`6R0&|B`= z$mP~ec*`E^+?j%nRfA-5?XrfKx04_C*IlV zEmOmr+vx@YmD2?n{||w-3{$DQ(a_;SNrB|exQHd9i-DY-G6RkQ$!9(h_pQ^d-Q|?u zv!uXs+q*zH{5;HDO~KE<)Q+@fX|Z!l-t^*a9QxA_H5!qNA| z>!~JRpP!}rSQTw6)+H#KFXomRJpx(VS!^;VlA}j=-6)hO(j;b{iwXvgdGZkI-LYr&C_%V-TOWf*(<4Mh*jRTcWpQtr7SYM zEc4G)!AP8)4|&yQvK6hf{Yc&2yQ9@$od_%B@%i^$Ri4scu1^v(c-P$bWU@=*OD%t? zv>0qUe0_OyKgn}E`@Yq7F4298T#H3u*L>B8^V@$oZJt3nbm`2|>#27rmZ|)+aTVKm zNzL<-(L|c`1~i?Q=rFU5qN3iG&xC5P7W$Y^6isGaB@rl~KaTYggVh zKHGd9B0cj!3m|eF4gF1+n*`&Z^o&@@YIgdy%wNf1x&#AD6XnFrJzpzBqXD9JlVLo? zv(w4D#@q%2)ww4ZweyU0W{vDx4JNnVM2=V=Hk#{74mc4eMECB=-*F<>!i5QiZkMUm>AnqY<@K34qo!SQ`Ox@%kE(^r)EqtrcB(^A_PKoK zPAV&&`ZCkub7Jmp(`AAX3^_8dcq&Hl$&;XEBInCcAeSKTJqr2StF)S23Dff`sUP&bHzinQl|{X$ zoZPMwQ@)}EL8U@(oRMTi*l~y~wrrR{QAX7u9ll|~NAoJXUUOVFZxZ;S>{qe0^~tEm z-yL`q3+hDgDfp0Sr^9q*qJEscKyH;0EO4&`*`L|bWZ$rW&-*0g-Aj11`RF!ag)OYN z#ete7M~{1!_OF*}%rv(0iq5G%VhFJj7#h}M-cqiplo1J@k2VoBh?}uu%nn`|wRm#C zukJgB%Y5`8K5nJIuDvAKb3e&3e12@|^Hy&+1ixX6(%cj{xDtHzN zvqvrJw}ThLt-LzL+$1GbxHLA1ECRkTIOWndcD!!NcREVdI5=R5FVl%XQ|8w&)D_qW zd$;vnTriny>nefqR*1G$_f+bT+I{&YO>ibznGAsF=7KxbuDJp4;!N6&M;AWxcnS=C z^jkKtE!XCI8x@-R0mC)-)sHVBV*U`sXVLqzU-x#9SbN1L)i}Sw>oUp5)&$pEk&U`z zCwlh5O!zbDll^NrcQ!18V}A=pWMm~2u+r|3C*s<9!&3kF_FXRd3`9|zmRT+>htdg> zSB_$9QD$zEEH#ZgTm-$RY`b5jFmR5|XZrS5v`{J(s5Fb*>+h%#%*g+-zg5sA&Y07Sw{>sK_dCGG6+If)kATNwybkRwH zE6z=0nN$BFp586PdAXIub%C(>19^(;4aoT9QJ!^!xLX@`YhY&sQtX_vBV3QUTjbe| zA7&$6p2K%8pIy*9qVk9um!KX^cnBQ#S~d=T*B9g8tNBQp%j{ed#5u3M_22-jlr34Z zTb@(q^rDG?4BbWT+>l1K(H5lBW3475u_9^zdr3y&%JI6Td^ zZH3A|b4zm-P1A!JroZtcb2|J)MaX*>mN%o6nU;`K>)3iN2MrxW191eBw2 z!4Z@HLsWJIZRYIu%M`rp$L#h41?)Vh^W|Km#x3G_V5p){43G~OPm~J48vkU%Njb!B z5a7FIn6IznD zs*5lm<633ys8tiK05tSB-iAz>-!Cl4r5A*Y^#p9qr$fCEo_ELbx`cQA)cHH1%oAU+S5w#5=wPD&nD2ZVGUkZIXkD@4 z=U~wB@(n=|<-Usy%oB>(ZAT#>XGq^(YYJDx9s?EaXOo4IvB6J$xv9p4DmDrgCvNAq zcT@UxCw;ub`!g*epUCf5Z5)isUZ6d)190{tGioM|p-&4NV)I34nUT)S3jGdgn}EfB zVSJh-kQvIjCI}5dqpQkLX4=Hz4T?=`J&+!lCDpOlxd?zwU(D6rA;Zu;LGpUS06M^UFLatFAIOduSKgBegl%z zpDyD|Fd}PXd^+_Y5ZDG`DLrpoV1f9oJPFLAgHi}$nJtq_`WW)9MsmDW6bc%-g2%m< z-E!3idm@4)eJ&IF<0_~pX#J}c;XK<9=V~B@@KsRacNEi}V-P zltau1;1}DEisRax2HH;;E|bmo>^$MI5F`Wg(W_H!Nv6TJ30$SjMZxl=2|;Rek7T0O zHJE^(vq=H?7>x!v{kpH}Neb89MfoPRorDRzj8yu0hQK|s5|||7bIfFT*hnNRN|KHQ zM+15UJqPJk_cj}JKlTs|7072?Z{btsq+Ii0|Hm6-f?*~cvNuzi*?(a)H;B0;jkS64 zQOIEev!1*~Vr?ww8ACNN0Uu)&;>fF7N2hNN3UM|ai%F@GPiE#h|0_QMH? zoaxF)p9evY9?wKFu>DZ5f6OD7G<-_~yEn#UjZ#>-oyxsuH!dBV7=dc?p&l{L^8DL89u?g|& zb%=8W)@^DoW6R80=3Qn`yzxVBQt-{1)l!^UM1J9zMDkUt-X!H{##|6Wp|%ey_&ou6 z=VS9OC!L|**=MQS{$y_pD&6jL`Sh3|An>Suf6r+Sjnqr5%28~Aff#d3y*7}GPtC;z zl$|)qkzJb>Ew>*EL8rNico!udK)q{2QvLajN2l??8JXzT{Zrf|OmeAE)i`R)Z75#y zJ*Wfgc#h-|^Tb>156=n#4#=?T%Ui6-CZM`#pzs4?5h}8_lZY-D>@#dgfy4)_H%K%< zwI{0hi+k@#WJ9?@e!kc#SFu}d^z(Szzk|@a2bgE(ea1tLe&S+wA1O%qo0xBjZO$U53T3S^GY0n%`jJuof zw?HN>BO}^s$I;{=v-3EP8IdP8Z-DxJn;@62tv09=%z0aU$`@pxkexe?qO5BKMHFrJ zAPlVn^6fAhhBi>5KLn6VXDG8ttsiz@({=0*CvdrZ7F+HsK%FTKDlsxdIw+#qv$0SK*ijcxduI08OXr_Fj{2! z#pp1vZD#Z`Mw0J(eVk*{o>lziYtJ3BK%k`U;JgK>wCq|8YZ|L{$u{1Sx9B8`zYJj0 zvBF?D!QjMFkUw3M(SP-PvWRum$ycALs_X|fURXKd^2HMRCe@aWcmX(;7^167lALH*0s7@aNP5TFjVq4VD%V~@JeC*WxANnSm9fa78Z&r zMnR@k_TnSXSp3Gd4*{Yhi+cd?1morR`I`9=5yX@6dks7pt-EVqZ9&y64n1PJb8p&6 zFzVu?7v+z3vsD3f8rfL-1Ow2}HiVDmh3|_{T z*>ozRp{t$uW%iYy`48L!#B$d;Ryvr&Si{x&rNQ8@@%x|*Sl+{jWISA44~zGQMNm4E zf+h`*_qUgL!&hBE8QyOIs;KuUHI*-Z#i(s6764wzn+4~C$6!b%r@4dsOt&+kQsQOX zGnr%3;l6C;x+d+gGg2eERW1SsK}guX_xfri@o7kme!3bSqxwm5wj9?6gcd*7M9&Wt=L_WW2KKz-o%d0L%G8nf z;<*Cko;*7nTc_KR+tGnf{ZzuW(D*~e3n1Nt?ZU^BZ!0Th><|c04>LSG%<-Ar8Lofi zHhMz-K)%wuA|gZ|d=(YwO(%#;L<}%@ueP5u)p}<2R+lP@c|rvHLn?`v z;pyJp%QOAjkmdr*Js1jD?mdX%Q&RZy^z^Ni)yGCvK8057wQ{zd59D`8ej$GpTjt3g znk@!fP|Ig?=w`I-^&fi5uX4>>_1 zRS)f>JfT(eI~fvHNv0(zqU33-pKz4LcdV&V9@ufx%ITnB(VyFd9~#}1GgE(r)}!Zg zb8-gt9H`K9)@7#mE5JsL_d}qo`|Cija+qX|H~M+qvPluORRB6eOnb1JCFPF$kmUhsi_qK?r#Wbwmed&`@-{9iQJek$^cV*3wJ0S#=9YTIb9|xgoMs2 zCS&1S{1F6+&BOk1MlPF{ElD+;7wXR{DHy|Ql*{IvNdds~Atv6}z@>mCFwu(rq3xsz zTfi;{a_|?H3nSMevW}3j?kL_W1K3{f4Zw7BpX|%{IWV9Oe1YR={X2F{=K0`R03^+2 zl=Xe=vC(_arx-Sd$OPqfK zB0`hTIul>v27n#Osv|VA<+ZH`V}(rQO4T;o56&Ywj~Agx>^NS@hD-G>WPPH)tgBz} zX##p8B4GfVU8tEMcXGH;?_lvLu=63yI~vsW^$kLQYQrE5I5&AO(kpX;oSdA;NLu5u zP>{*(JrLKu&kNPgUGYqc0Lq3K(-yV^V`;2@k-6*|w78K&B;Hz6Rsn|6M-< z2!1>SgXX7mQWOFS3JCG>`zALzeSCb}C(v*ypLMqD9s_z{h0fFLki_=}VH?(1I~Wu3 zs#!8%(!GTC_n;d5nkr|eiIoIroP6$v0_pLzav%U;Jp$cetJ{C-2jBhiTbW#I!zx|I zIw37horQ&kzo&mx~O;we=%#|xSvEY$UsY5)O~fIJCOi{ z>3wPd2}tI^Gz}20f5g7o5%K6V&gydP5HInr(y}|J;=Gkr-kWZatd$yp!1v|_ zoo+pBZHTOi65huFN7K4sVua>9kpe0BTxtpj56cPYgpc>_uPC*818XrmyIB|Ue%5i| zJ{5^P4KwR`L*OiE-~)8n9Qg!TDXR(}fk@4abpLgglrClwd~XVQ2F6Wx(J4+$P(Uk-@kKBU z0Ys#gv2vzyoonUUMc!{x(>BMZw6O|O-T39#aNfdf{y*P%JV;Fr)DD*>qiiQBB3%*5 z|H-WItk>78H}PzN#5LRp=3s+0Uw>>j_U6eDAq4ss=sL)MtO$$M9}`QTCHa#g$7{p_ z{zO2R$J2fa{9PXSR;u>l{Xud?gfi5mGe5MjB#0Zik;4y9kkG(u@uiZFceP+bdOZ!J zrB90w$i%Ej}# zKXn)e&tT6Sdj=vKI8MFY<->QU2d484?9E!3HCTWPiA*d1u-19K_ zD`+40)$j>NFr`))n_MLv36N_K0#lD;Gl6Lzj`DS}C|rGK^RyyJ6dKb{*BHop;kPDp z`s5q$-r6T1mPHjYFWJ)j5EyzF&XHuFF^GbFI%dZW$U~P-WZw7~wXgl8J~Wa3_vvMV z-#+IyL5-o`ZGRLTmUs#*yFa&ZOhhe&-NNP4xOh()&5+~PKay!}EUNDH60NM#SA@{7 zA2ZPgq#gGn`tQIAR-?&}di5Xpf6Fv+9uk3N6x%0-%KvyRDcBu`?av5_qXi?i_ND2? zcz&5?7(5(1jv`uQBJIr?4mR-SS^R>T5F_+UBB{)SL3j%{MBiG-JpZ~Zg5 zF2EWucHturAAS*~&hNeNMpk|wRp-}}?yHq20r%Gk7jdyB9$%QhEm*W_UFY3U&L1wV zjDHJKgFjunQt;e2H%Skoa8Hdj-B!-TFqyl@J*2jefbB;%P>}O~A(4TjM zfQy|P6!_0 zDJ7SurWjhHFJpk^D8KID;`_OPA z4%1^DeG>X28p`8S9#6CW9R#LbP+C&EMS$wE<{nL3+irTwjguyA>E-!(yVB*kalyC< zzQl%`lSWo)fyA@x10k}?Y8jkcd|%wvd=_m_SpM1#$lZV%7vD-3-eVvQfkjzHd_tn% z15ng?S-QA<jpTUnH!Q^}rN2(WcO&Bu?q z0cF3pu`>gmro1lDAiM`@vc;LrNZ{4;85!_{%M&v&Ud&#n?Qii%9c(Zx*v%-S97K>X zd0%rTbxEgAGCO-Nk5gf)s@G-(pX#f3acR>Q{AzyF^A}RNgDOYlb4OG1_^D0eb7kGO zhA9l*HR^t9ys9%C^UmSXiQ`=~Aob4|nig^3Sh9nQw%i@13W0s>yTC}cYK%A-HpmEE z#tEF3T-`un#bGG0j*ht{3zCbzR;({b^e*=9t4!IK>8{&ccj6tktMa=hXK4}JJhf_9 zimt_sjcqUTTdR<^{lb;UZ+S$(rI>l!QL&M(l?L6(iZ_fzpF=b}$(S)6ux1Dg{JhH| z4zV%~bo3t~O8XE8u!l3)GMls#SeXTVU_%8d-nIEvvX6z?lT2$F9e#4E4wlQ;)_~NO zs>OwWrO1=ZPP?|$G6|x?UpM&?_u37zt1(gf|EZCZevXt2$KSP_+RYr zzfL|ch)~X!;sHVOPs0obA$F|=0iesg+1MT>QKhli{6G3F5evwas&dNXA0`tF;P;D) zb;9NXOnK1Y@&v`1Fj~pDhX5n4TCuPhGV%dNHLx9oC;q)QiwgRJHxFc6&3B%MT*v=k zuRdsXA;s1BUqkwXw4UwFkU4GH0+Gx9@24KE^iY;H^)j)y-FGouZsVkA59{pRk~ zX~f4x4gauvUNxQKa#xnk@X45wnR;kgX0>D;0k}uO;0SE!!+*Fzf{a7hA+i7CiQ|7& z5dy5_IZpBa`$a$AfDgw)p`9uIv8g}X2+{|SeVqQr@lQSa^D#Jr#SBJ9qw#-s{AE@yA6UYBD0-!Xbl-QKNeE1LKyNiM&%_RPnz{TJ( zdpB3gf1?SR5DcG~^WO+;1F~P)+|qFTH=2+kaA84T*#3>cCE&4=x3AUzjV20c7_(67 zzY+L9ru#b`|6{tpiOzpa_jf`1Pt*M>I{#_9zpohoEw8_>d&vKm*T0zz|3BGuL6OD9 z#ik`+F!3WPDJeJo{QMkl-HIF?9j$0?mM0}8?EpW`6xyV}PT?ou8jSl>u@{jms~% zOEEkfUfdaH_`3rB>n9VML^QAi+kTAv%F@y;85x;~cJqpZ#IiCR2{}1NX=&;4%_q_9 z|J%9>%HT7Dt-f7qZfJ)=9*ZST0g=)WkR|S0c-mUS`QGR8ZsVSbbr|0vQL|MguX>vip z3|8I}(tMi|y|lEnz5vU6Klk{p6|ev3mA}&GZ|^DZ0hT1Mbic4!aL@Fj}ZH#`h>itFukc6y{-lf P{HQ2uTr5>EyYv45&0IO; literal 0 HcmV?d00001 diff --git a/lib/peep_repository.rb b/lib/peep_repository.rb index 6f164bcd4e..fca8abbf53 100644 --- a/lib/peep_repository.rb +++ b/lib/peep_repository.rb @@ -2,16 +2,10 @@ require_relative "./user" class PeepRespository - def all_with_author - # Returns array of peeps in reverse chronological order - sql = "SELECT message, posted_at, name, username - FROM peeps JOIN users ON user_id = users.id - ORDER BY posted_at DESC;" - - result_set = DatabaseConnection.exec_params(sql, []) + def all_with_author # Returns array of peeps in reverse chronological order peeps = [] - result_set.each do |row| + query_all_rev_chronologically.each do |row| peep = Peep.new peep.id = row['id'].to_i peep.message = row['message'] @@ -34,6 +28,16 @@ def create(message, timestamp, author_id) DatabaseConnection.exec_params(sql, params) end - #TODO: add method to scan for user tags + def most_recent_peep_id + query_all_rev_chronologically.first['id'].to_i + end + + def query_all_rev_chronologically + sql = 'SELECT peeps.id, message, posted_at, name, username + FROM peeps JOIN users ON user_id = users.id + ORDER BY posted_at DESC;' + + return DatabaseConnection.exec_params(sql, []) + end end diff --git a/lib/tag.rb b/lib/tag.rb new file mode 100644 index 0000000000..b3136c0e39 --- /dev/null +++ b/lib/tag.rb @@ -0,0 +1,4 @@ +class Tag + attr_accessor :peep_id, :user_id + +end diff --git a/lib/tag_repository.rb b/lib/tag_repository.rb new file mode 100644 index 0000000000..736e34d779 --- /dev/null +++ b/lib/tag_repository.rb @@ -0,0 +1,63 @@ +require_relative "./tag" +require_relative "./user_repository" +require "pony" + + +class TagRepository + def all + sql = "SELECT * FROM tags;" + result_set = DatabaseConnection.exec_params(sql, []) + + tags = [] + + result_set.each do |row| + tag = Tag.new + tag.peep_id = row["peep_id"].to_i + tag.user_id = row["user_id"].to_i + tags << tag + end + + return tags + end + + def add(tag) + sql = "INSERT INTO tags (peep_id, user_id) VALUES ($1, $2);" + params = [tag.peep_id, tag.user_id] + + DatabaseConnection.exec_params(sql, params) + + return nil + end + + def check_message_for_tags(message) + # scan returns an array of all strings like '@sometext' + possible_tags = message.scan(/@\w+(?=[^\w]||$)/) + + # returns an array of user_id's for all matching users + tagged_users = UserRepository.new.check_for_matching(possible_tags) + + return nil if tagged_users.empty? + + return tagged_users + end + + def add_tags_by_peep(tagged_users, peep_id) + tagged_users.each do |user| + tag = Tag.new + tag.peep_id = peep_id + tag.user_id = user.id + # Instead of this, INSERT multiple rows at once? + add(tag) + send_email_confirmation(peep_id, user) + end + end + + def send_email_confirmation(peep_id, user) + # use to gem to send email confirmation + Pony.mail( + :to => "#{user.email}", + :html_body => "Hey @#{user.username}, you were just tagged in a peep! Click here to check it out" + ) + end + +end diff --git a/lib/user_repository.rb b/lib/user_repository.rb index 06b298a62b..0119d53429 100644 --- a/lib/user_repository.rb +++ b/lib/user_repository.rb @@ -10,6 +10,7 @@ def all result_set.each do |row| user = User.new + user.id = row['id'].to_i user.name = row['name'] user.username = row['username'] user.email = row['email'] @@ -77,4 +78,30 @@ def register(username, name, email, password) return { success?: true } end + + def check_for_matching(possible_tags) #takes and array of strings formatted as '@text' + tagged_users = [] + + return tagged_users if possible_tags.empty? + + if possible_tags.length == 1 + # Use array slicing to remove the @ symbol from the search + user = find_by_username(possible_tags.first[1..-1]) + return tagged_users if user.nil? + tagged_users << user + else + # retrieve an array of all User objects + all_users = all + + possible_tags.each do |possible_tag| + all_users.each do |user| + if possible_tag[1..-1] == user.username + tagged_users << user + end + end + end + end + + return tagged_users + end end diff --git a/public/chitter-low-resolution.png b/public/chitter-low-resolution.png new file mode 100644 index 0000000000000000000000000000000000000000..5d245ca8697f94fe603180de2a8dc9559a287fe9 GIT binary patch literal 34960 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 literal 0 HcmV?d00001 diff --git a/public/style.css b/public/style.css index 6b9ac303e8..23335d9184 100644 --- a/public/style.css +++ b/public/style.css @@ -1,6 +1,3 @@ - - - body { font-size: 18x; font-family: "Futura", Helvetica, Arial, sans-serif; diff --git a/spec/integration/application_spec.rb b/spec/integration/application_spec.rb index bde0a23b4c..991cf7e876 100644 --- a/spec/integration/application_spec.rb +++ b/spec/integration/application_spec.rb @@ -35,6 +35,10 @@ def reset_tables response = get('/') expect(response.body).to match(/Posted: 2022-12-19 10:23:54[\s\S]*Posted: 1984-06-15 14:33:00/) end + it "displays a Chitter logo" do + response = get('/') + expect(response.body).to include("Chitter logo { username: "smhanna", user_id: 2 } } + form_params = { message: "Hello @tcarmichael" } + response = post('/peep', form_params, session_params) + expect(response.status).to eq(302) + response = get('/') + expect(response.body).to include("Hello @tcarmichael") + tags = TagRepository.new.all + expect(tags.length).to eq 4 + expect(tags.last.peep_id).to eq 4 + expect(tags.last.user_id).to eq 1 + end + it "detects 2 tags within peeps and records them in the DB" do + session_params = { 'rack.session' => { username: "smhanna", user_id: 2 } } + form_params = { message: "Hello @tcarmichael check out the photos from @wsmith!" } + response = post('/peep', form_params, session_params) + expect(response.status).to eq(302) + response = get('/') + expect(response.body).to include("Hello @tcarmichael check out the photos from @wsmith!") + tags = TagRepository.new.all + expect(tags.length).to eq 5 + expect(tags.last.peep_id).to eq 4 + expect(tags.last.user_id).to eq 3 + expect(tags[-1].peep_id).to eq 4 + expect(tags[-1].user_id).to eq 3 + end + context "given {message: ""}" do it "returns 400 & error message" do response = post('/submit_register', { message: "" }, session_params) diff --git a/spec/peep_repository_spec.rb b/spec/peep_repository_spec.rb index 686a496989..4d8f6fe254 100644 --- a/spec/peep_repository_spec.rb +++ b/spec/peep_repository_spec.rb @@ -11,8 +11,12 @@ def reset_tables reset_tables end + let(:repo) { PeepRespository.new } + let(:message) { "Hello, world!" } + let(:timestamp) { "2099-10-10 10:10:10" } + let(:author_id) { author_id = 2 } + it "Returns all peeps in reverse chronological order with their author's name and tag" do - repo = PeepRespository.new all_peeps = repo.all_with_author expect(all_peeps.length).to eq 3 expect(all_peeps.first.message).to eq "Big Brother is watching you @wsmith" @@ -23,10 +27,6 @@ def reset_tables end it "Creates a new peep" do - repo = PeepRespository.new - message = "Hello, world!" - timestamp = "2099-10-10 10:10:10" - author_id = 2 repo.create(message, timestamp, author_id) all_peeps = repo.all_with_author expect(all_peeps.length).to eq 4 @@ -36,4 +36,11 @@ def reset_tables expect(all_peeps.first.user.name).to eq "Sarwah Mhanna" expect(all_peeps.first.user.username).to eq "smhanna" end + + it "returns the ID of the most recent peep" do + expect(repo.most_recent_peep_id).to eq 2 + repo.create(message, timestamp, author_id) + expect(repo.most_recent_peep_id).to eq 4 + end + end diff --git a/spec/tag_repository_spec.rb b/spec/tag_repository_spec.rb new file mode 100644 index 0000000000..39a20215e9 --- /dev/null +++ b/spec/tag_repository_spec.rb @@ -0,0 +1,106 @@ +require "tag_repository" +require "user" + +def reset_tables + seed_sql = File.read('spec/seeds.sql') + connection = PG.connect(host: '127.0.0.1', dbname: 'chitter_test') + connection.exec(seed_sql) +end + +describe TagRepository do + before :each do + reset_tables + end + + let(:repo) { TagRepository.new } + let(:user_4) { + user = User.new + user.id = 4 + user.name = "Alan Turing" + user.username = "universal_turing_machine" + user.email = "alan@bletchley_park.mod" + user.password = "engima" + user + } + + let(:user_5) { + user = User.new + user.id = 5 + user.name = "Grace Hopper" + user.username = "ghopper" + user.email = "debugger@mail.com" + user.password = "COBOL" + user + } + + it "returns all tags" do + all_tags = repo.all + expect(all_tags.length).to eq 3 + expect(all_tags.last.user_id).to eq 3 + expect(all_tags.last.peep_id).to eq 2 + expect(all_tags[1].user_id).to eq 3 + end + + it "adds a tag to the DB" do + tag = Tag.new + tag.peep_id = 3 + tag.user_id = 1 + repo.add(tag) + all_tags = repo.all + expect(all_tags.length).to eq 4 + expect(all_tags.last.user_id).to eq 1 + expect(all_tags.last.peep_id).to eq 3 + expect(all_tags[1].user_id).to eq 3 + end + + it "finds a single tag within a message and returns the user ID" do + message = "Hello @tcarmichael" + result = repo.check_message_for_tags(message) + expect(result).to be_an_instance_of(Array) + expect(result.length).to eq(1) + expect(result.first).to be_an_instance_of(User) + expect(result.first.email).to eq("tomcarmichael@hotmail.co.uk") + expect(result.first.id).to eq(1) + end + + it "finds two tags within a message and returns the user IDs" do + message = "Hello @tcarmichael check out the photos from @wsmith!" + result = repo.check_message_for_tags(message) + expect(result).to be_an_instance_of(Array) + expect(result.length).to eq(2) + expect(result.first.email).to eq("tomcarmichael@hotmail.co.uk") + expect(result.first.id).to eq(1) + expect(result.last.email).to eq("orwell.george@aol.com") + expect(result.last.id).to eq(3) + end + it "returns nil if we check a message for tags which has none" do + message = "Hello world" + result = repo.check_message_for_tags(message) + expect(result).to eq nil + end + it "returns nil if we check a message for tags which dont match a suer" do + message = "Hello @world!" + result = repo.check_message_for_tags(message) + expect(result).to eq nil + end + context "when adding the tags for a peep to the DB" do + it "adds the only tag specified" do + UserRepository.new.register(user_4.username, user_4.name, user_4.email, user_4.password) + repo.add_tags_by_peep([user_4], 1) + all_tags = repo.all + expect(all_tags.length).to eq 4 + expect(all_tags.last.user_id).to eq 4 + expect(all_tags.last.peep_id).to eq 1 + end + it "adds multiple tags" do + UserRepository.new.register(user_4.username, user_4.name, user_4.email, user_4.password) + UserRepository.new.register(user_5.username, user_5.name, user_5.email, user_5.password) + repo.add_tags_by_peep([user_4, user_5], 1) + all_tags = repo.all + expect(all_tags.length).to eq 5 + expect(all_tags.last.peep_id).to eq 1 + expect(all_tags[-2].user_id).to eq 4 + expect(all_tags.last.user_id).to eq 5 + end + end +end diff --git a/spec/user_repository_spec.rb b/spec/user_repository_spec.rb index 5c4d678521..70a6b0e934 100644 --- a/spec/user_repository_spec.rb +++ b/spec/user_repository_spec.rb @@ -101,4 +101,38 @@ def reset_tables expect(login_attempt).to eq({ success?: true, username: "wsmith", user_id: 3 }) end end + + context "when comparing possible tags with usernames" do + it "returns an empty array if not given any tags" do + possible_tags = [] + result = repo.check_for_matching(possible_tags) + expect(result).to eq([]) + end + it "returns an empty array if the 1 given tag matches no users" do + possible_tags = ['@dave'] + result = repo.check_for_matching(possible_tags) + expect(result).to eq([]) + end + it "returns an empty array if the given tags match no users" do + possible_tags = ['@dave', '@clive', '@derek'] + result = repo.check_for_matching(possible_tags) + expect(result).to eq([]) + end + it "returns the 1 matching user ID" do + possible_tags = ['@tcarmichael', '@dave'] + result = repo.check_for_matching(possible_tags) + expect(result.length).to eq(1) + expect(result.first).to be_an_instance_of(User) + expect(result.first.email).to eq("tomcarmichael@hotmail.co.uk") + expect(result.first.id).to eq(1) + end + it "returns the 2 matching user IDs" do + possible_tags = ['@tcarmichael', '@wsmith'] + result = repo.check_for_matching(possible_tags) + expect(result.length).to eq(2) + expect(result.first.id).to eq 1 + expect(result.last.id).to eq 3 + expect(result.last.email).to eq "orwell.george@aol.com" + end + end end diff --git a/views/index.erb b/views/index.erb index c2e52e5cdd..b53e37e1cb 100644 --- a/views/index.erb +++ b/views/index.erb @@ -4,6 +4,8 @@
    + Chitter logo