diff options
author | Sadposter <hannah+pleroma@coffee-and-dreams.uk> | 2019-04-10 10:44:54 +0100 |
---|---|---|
committer | Sadposter <hannah+pleroma@coffee-and-dreams.uk> | 2019-04-10 10:44:54 +0100 |
commit | be8350baa2f8c9cf9be3f53ee4a0041dada1386f (patch) | |
tree | 8414fc2108941ccadd9b9fd4dd37c9d3cf731399 /test/registration_test.exs | |
parent | 589629cf3e1bee9a4f6e92b8456d8614eff73c89 (diff) | |
parent | c8440b5e0c97c5d5c03e4b99e30a61df6ab95319 (diff) | |
download | pleroma-be8350baa2f8c9cf9be3f53ee4a0041dada1386f.tar.gz pleroma-be8350baa2f8c9cf9be3f53ee4a0041dada1386f.zip |
Merge branch 'develop' into feature/user-status-subscriptions
Diffstat (limited to 'test/registration_test.exs')
-rw-r--r-- | test/registration_test.exs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/test/registration_test.exs b/test/registration_test.exs new file mode 100644 index 000000000..6143b82c7 --- /dev/null +++ b/test/registration_test.exs @@ -0,0 +1,59 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.RegistrationTest do + use Pleroma.DataCase + + import Pleroma.Factory + + alias Pleroma.Registration + alias Pleroma.Repo + + describe "generic changeset" do + test "requires :provider, :uid" do + registration = build(:registration, provider: nil, uid: nil) + + cs = Registration.changeset(registration, %{}) + refute cs.valid? + + assert [ + provider: {"can't be blank", [validation: :required]}, + uid: {"can't be blank", [validation: :required]} + ] == cs.errors + end + + test "ensures uniqueness of [:provider, :uid]" do + registration = insert(:registration) + registration2 = build(:registration, provider: registration.provider, uid: registration.uid) + + cs = Registration.changeset(registration2, %{}) + assert cs.valid? + + assert {:error, + %Ecto.Changeset{ + errors: [ + uid: + {"has already been taken", + [constraint: :unique, constraint_name: "registrations_provider_uid_index"]} + ] + }} = Repo.insert(cs) + + # Note: multiple :uid values per [:user_id, :provider] are intentionally allowed + cs2 = Registration.changeset(registration2, %{uid: "available.uid"}) + assert cs2.valid? + assert {:ok, _} = Repo.insert(cs2) + + cs3 = Registration.changeset(registration2, %{provider: "provider2"}) + assert cs3.valid? + assert {:ok, _} = Repo.insert(cs3) + end + + test "allows `nil` :user_id (user-unbound registration)" do + registration = build(:registration, user_id: nil) + cs = Registration.changeset(registration, %{}) + assert cs.valid? + assert {:ok, _} = Repo.insert(cs) + end + end +end |