summaryrefslogtreecommitdiff
path: root/test/registration_test.exs
diff options
context:
space:
mode:
authorlambda <lain@soykaf.club>2019-04-08 11:41:50 +0000
committerlambda <lain@soykaf.club>2019-04-08 11:41:50 +0000
commitfd45cab9eccecc835dde457d72ba38bd31c8f7f6 (patch)
treebcc6b53058cdf0a717e871d566fe923491bad99e /test/registration_test.exs
parentff9290836b97f7358b056709e0891e01d641dd6d (diff)
parent44829d91818e66da1cbeb13aafecc52a931af17d (diff)
downloadpleroma-fd45cab9eccecc835dde457d72ba38bd31c8f7f6.tar.gz
pleroma-fd45cab9eccecc835dde457d72ba38bd31c8f7f6.zip
Merge branch 'twitter_oauth' into 'develop'
OAuth consumer (sign in / sign up with external provider) See merge request pleroma/pleroma!923
Diffstat (limited to 'test/registration_test.exs')
-rw-r--r--test/registration_test.exs59
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