1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-23 07:09:39 +02:00

Implement invitation codes

This commit is contained in:
Jose Farias 2024-02-02 17:49:28 -06:00
parent 533e6690c2
commit b3a792c47d
No known key found for this signature in database
GPG key ID: 877CF7E5FFD0FB3F
11 changed files with 149 additions and 9 deletions

View file

View file

@ -0,0 +1,46 @@
require "test_helper"
class RegistrationsControllerTest < ActionDispatch::IntegrationTest
test "new" do
get new_registration_url
assert_response :success
end
test "create" do
post registration_url, params: { user: {
email: "john@example.com",
password: "password",
password_confirmation: "password" } }
assert_redirected_to root_url
end
test "create when hosted requires an invitation code" do
ENV["HOSTED"] = "true"
assert_no_difference "User.count" do
post registration_url, params: { user: {
email: "john@example.com",
password: "password",
password_confirmation: "password" } }
assert_redirected_to new_registration_url
post registration_url, params: { user: {
email: "john@example.com",
password: "password",
password_confirmation: "password",
invite_code: "foo" } }
assert_redirected_to new_registration_url
end
assert_difference "User.count", +1 do
post registration_url, params: { user: {
email: "john@example.com",
password: "password",
password_confirmation: "password",
invite_code: InviteCode.generate! } }
end
ensure
ENV["HOSTED"] = nil
end
end

View file

@ -0,0 +1,25 @@
require "test_helper"
class InviteCodeTest < ActiveSupport::TestCase
test "claim! destroys the invitation token" do
code = InviteCode.generate!
assert_difference "InviteCode.count", -1 do
InviteCode.claim! code
end
end
test "claim! returns true if valid" do
assert InviteCode.claim!(InviteCode.generate!)
end
test "claim! is falsy if invalid" do
assert_not InviteCode.claim!("invalid")
end
test "generate! creates a new invitation and returns its token" do
assert_difference "InviteCode.count", +1 do
assert_instance_of String, InviteCode.generate!
end
end
end