From 0462fc45ac30bb8a4aa7d2d5154ebb7feeae5981 Mon Sep 17 00:00:00 2001 From: MongoCaleb Date: Fri, 2 Oct 2020 16:31:32 -0700 Subject: [PATCH 1/3] add auth page with code snippets --- examples/dotnet/Examples/RealmTests.cs | 75 +++++++- examples/dotnet/dotnet.sln | 26 +-- source/dotnet/authenticate.txt | 161 +++++++++++------- .../RealmTests.codeblock.initialize-realm.cs | 3 +- .../generated/code/final/RealmTests.cs | 63 ++++++- .../RealmTests.codeblock.initialize-realm.cs | 3 +- .../start/RealmTests.codeblock.logon_API.cs | 1 + .../start/RealmTests.codeblock.logon_EP.cs | 1 + .../RealmTests.codeblock.logon_Function.cs | 8 + .../start/RealmTests.codeblock.logon_JWT.cs | 2 + .../start/RealmTests.codeblock.logon_anon.cs | 1 + .../start/RealmTests.codeblock.logon_apple.cs | 2 + .../start/RealmTests.codeblock.logon_fb.cs | 2 + .../RealmTests.codeblock.logon_google.cs | 2 + .../generated/code/start/RealmTests.cs | 63 ++++++- 15 files changed, 326 insertions(+), 87 deletions(-) create mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_API.cs create mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_EP.cs create mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_Function.cs create mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_JWT.cs create mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_anon.cs create mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_apple.cs create mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_fb.cs create mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_google.cs diff --git a/examples/dotnet/Examples/RealmTests.cs b/examples/dotnet/Examples/RealmTests.cs index 372bfc2518..52a284cad1 100644 --- a/examples/dotnet/Examples/RealmTests.cs +++ b/examples/dotnet/Examples/RealmTests.cs @@ -1,3 +1,5 @@ +using System; +using System.Collections.Generic; using System.Linq; using dotnet; using MongoDB.Bson; @@ -84,8 +86,79 @@ public async System.Threading.Tasks.Task ModifiesATask() return; } + [Test] + public async System.Threading.Tasks.Task LogsOnManyWays() + { + // :code-block-start: logon_anon + Realms.Sync.User anonUser = await app.LogInAsync(Credentials.Anonymous()); + // :code-block-end: + Assert.AreEqual(UserState.LoggedIn, anonUser.State); + await anonUser.LogOutAsync(); + // :code-block-start: logon_EP + Realms.Sync.User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); + // :code-block-end: + Assert.AreEqual(UserState.LoggedIn, emailUser.State); + await emailUser.LogOutAsync(); + // :code-block-start: logon_API + Realms.Sync.User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); + // :code-block-end: + Assert.AreEqual(UserState.LoggedIn, apiUser.State); + await apiUser.LogOutAsync(); + // :code-block-start: logon_Function + var functionParameters = new Dictionary() + { + { "username", "caleb" }, + { "password", "shhhItsASektrit!" }, + { "someOtherProperty", "cheesecake" } + }; + Realms.Sync.User functionUser = + await app.LogInAsync(Credentials.Function(functionParameters)); + // :code-block-end: + Assert.AreEqual(UserState.LoggedIn, functionUser.State); + await functionUser.LogOutAsync(); + // :code-block-start: logon_JWT + Realms.Sync.User jwtUser = + await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNhbGViIiwiaWF0IjoxNjAxNjc4ODcyLCJleHAiOjI1MTYyMzkwMjIsImF1ZCI6InR1dHMtdGlqeWEifQ.LHbeSI2FDWrlUVOBxe-rasuFiW-etv2Gu5e3eAa6Y6k")); + // :code-block-end: + Assert.AreEqual(UserState.LoggedIn, jwtUser.State); + await jwtUser.LogOutAsync(); + try + { + // :code-block-start: logon_fb + Realms.Sync.User fbUser = + await app.LogInAsync(Credentials.Facebook("")); + // :code-block-end: + } + catch (Exception e) + { + Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + } + try + { + // :code-block-start: logon_google + Realms.Sync.User googleUser = + await app.LogInAsync(Credentials.Google("")); + // :code-block-end: + } + catch (Exception e) + { + Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + } + try + { + // :code-block-start: logon_apple + Realms.Sync.User appleUser = + await app.LogInAsync(Credentials.Apple("")); + // :code-block-end: + } + + catch (Exception e) + { + Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + } +} - [TearDown] + [TearDown] public async System.Threading.Tasks.Task TearDown() { config = new SyncConfiguration("My Project", user); diff --git a/examples/dotnet/dotnet.sln b/examples/dotnet/dotnet.sln index 8b1b81fab5..09d1a7a44f 100644 --- a/examples/dotnet/dotnet.sln +++ b/examples/dotnet/dotnet.sln @@ -1,7 +1,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Examples", "Examples\Examples.csproj", "{C97249A2-33A1-457A-AAEC-389B62984885}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Examples", "Examples\Examples.csproj", "{C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -13,17 +13,17 @@ Global Release|iPhone = Release|iPhone EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C97249A2-33A1-457A-AAEC-389B62984885}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Release|Any CPU.Build.0 = Release|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Debug|iPhone.Build.0 = Debug|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Release|iPhone.ActiveCfg = Release|Any CPU - {C97249A2-33A1-457A-AAEC-389B62984885}.Release|iPhone.Build.0 = Release|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Release|Any CPU.Build.0 = Release|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Debug|iPhone.Build.0 = Debug|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Release|iPhone.ActiveCfg = Release|Any CPU + {C7CFE106-78AB-4B53-A1F1-1008EAD4FA5C}.Release|iPhone.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/source/dotnet/authenticate.txt b/source/dotnet/authenticate.txt index 74baef7b7f..dc06712c4b 100644 --- a/source/dotnet/authenticate.txt +++ b/source/dotnet/authenticate.txt @@ -15,115 +15,150 @@ Authenticate a User Overview -------- -.. _dotnet-login: +{+service+} provides an API for authenticating users using any enabled +authentication provider. Instantiate a ``Credentials`` object and pass +it to the ``app.login()`` method to authenticate a user and create a ``User`` +object. Each authentication provider corresponds to a method used to +instantiate ``Credentials`` objects using that authentication provider. +See the table below to find the method that instantiates the +``Credentials`` instance for your authentication provider: + +.. list-table:: + :header-rows: 1 + :widths: 50 50 + + * - Authentication Provider + - Credentials Generation Method + + * - :ref:`Anonymous ` + - ``Credentials.Anonymous()`` + + * - :ref:`Email/Password ` + - ``Credentials.EmailPassword(email, password)`` + + * - :ref:`API Key ` + - ``Credentials.ApiKey(userAPIKey)`` + + * - :ref:`Custom Function ` + - ``Credentials.Function(functionPayload)`` + + * - :ref:`Custom JWT ` + - ``Credentials.JWT(jwt)`` + + * - :ref:`Google OAuth ` + - ``Credentials.Google(googleAuthCode)`` + + * - :ref:`Facebook OAuth ` + - ``Credentials.Facebook(facebookToken)`` + + * - :ref:`Sign-in With Apple ` + - ``Credentials.Apple(appleToken)`` + + +Before you can authenticate a user, ensure you have: + +- :ref:`Created a {+app+} ` +- Enabled one or more :ref:`authentication providers ` +- :ref:`Installed the .NET SDK ` + Log In ------ .. _dotnet-login-anonymous: -Anonymous -~~~~~~~~~ +Anonymous Authentication +~~~~~~~~~~~~~~~~~~~~~~~~ -.. tabs-realm-languages:: - - .. tab:: - :tabid: c-sharp - - .. code-block:: csharp +If you have enabled :ref:`Anonymous authentication ` in the +{+ui+}, users can immediately log into your app without providing any identifying +information. The following code shows how to do this: + +.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_anon.cs + :language: csharp .. _dotnet-login-email-password: -Email/Password -~~~~~~~~~~~~~~ +Email/Password Authentication +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. tabs-realm-languages:: - - .. tab:: - :tabid: c-sharp - - .. code-block:: csharp +If you have enabled :ref:`Email/Password authentication `, +you can log in using the following code: + +.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_EP.cs + :language: csharp .. _dotnet-login-api-key: API Key ~~~~~~~ +If you have enabled :ref:`API Key authentication `, +you can log in using the following code: -.. tabs-realm-languages:: - - .. tab:: - :tabid: c-sharp - - .. code-block:: csharp +.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_API.cs + :language: csharp .. _dotnet-login-custom-function: Custom Function ~~~~~~~~~~~~~~~ +If you have enabled the +:doc:`Custom Function authentication provider `, +you can log in using the following code: -.. tabs-realm-languages:: - - .. tab:: - :tabid: c-sharp - - .. code-block:: csharp +.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_Function.cs + :language: csharp .. _dotnet-login-custom-jwt: Custom JWT ~~~~~~~~~~ +If you have enabled the :doc:`Custom JWT authentication provider `, +you can log in using the following code: -.. tabs-realm-languages:: - - .. tab:: - :tabid: c-sharp - - .. code-block:: csharp +.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_JWT.cs + :language: csharp .. _dotnet-login-facebook: -Facebook OAuth -~~~~~~~~~~~~~~ +Facebook Authentication +~~~~~~~~~~~~~~~~~~~~~~~ -.. tabs-realm-languages:: - - .. tab:: - :tabid: c-sharp - - .. code-block:: csharp +If you have enabled :ref:`Facebook authentication `, +you can log in using the following code: + +.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_fb.cs + :language: csharp .. _dotnet-login-google: -Google OAuth -~~~~~~~~~~~~ +Google Authentication +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. tabs-realm-languages:: - - .. tab:: - :tabid: c-sharp - - .. code-block:: csharp +If you have enabled :ref:`Google authentication `, +you can log in using the following code: + +.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_google.cs + :language: csharp .. _dotnet-login-apple: Sign-in with Apple ~~~~~~~~~~~~~~~~~~ +If you have enabled :ref:`Sign-in with Apple authentication `, +you can log in using the following code: -.. tabs-realm-languages:: - - .. tab:: - :tabid: c-sharp - - .. code-block:: csharp +.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_apple.cs + :language: csharp .. _dotnet-logout: Log Out ------- -.. tabs-realm-languages:: - - .. tab:: - :tabid: c-sharp - - .. code-block:: csharp +Once logged in, you can log out by calling the ``LogOutAsync()`` method: + +.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logout.cs + :language: csharp + +.. include:: /includes/log-out-queries-in-progress.rst diff --git a/source/examples/generated/code/final/RealmTests.codeblock.initialize-realm.cs b/source/examples/generated/code/final/RealmTests.codeblock.initialize-realm.cs index 401c235f6f..d0faac8913 100644 --- a/source/examples/generated/code/final/RealmTests.codeblock.initialize-realm.cs +++ b/source/examples/generated/code/final/RealmTests.codeblock.initialize-realm.cs @@ -1,2 +1 @@ -const string appId = "tuts-tijya"; -app = Realms.Sync.App.Create(appId); \ No newline at end of file +app = Realms.Sync.App.Create(myRealmAppId); \ No newline at end of file diff --git a/source/examples/generated/code/final/RealmTests.cs b/source/examples/generated/code/final/RealmTests.cs index eff7daa07b..df059e47ed 100644 --- a/source/examples/generated/code/final/RealmTests.cs +++ b/source/examples/generated/code/final/RealmTests.cs @@ -1,3 +1,5 @@ +using System; +using System.Collections.Generic; using System.Linq; using dotnet; using MongoDB.Bson; @@ -13,12 +15,12 @@ public class RealmTests ObjectId testTaskId; Realms.Sync.User user; SyncConfiguration config; + const string myRealmAppId = "tuts-tijya"; [SetUp] public async System.Threading.Tasks.Task Setup() { - const string appId = "tuts-tijya"; - app = Realms.Sync.App.Create(appId); + app = Realms.Sync.App.Create(myRealmAppId); user = app.LogInAsync(Credentials.EmailPassword("foo@foo.com", "foobar")).Result; config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); @@ -70,8 +72,63 @@ public async System.Threading.Tasks.Task ModifiesATask() return; } + [Test] + public async System.Threading.Tasks.Task LogsOnManyWays() + { + Realms.Sync.User anonUser = await app.LogInAsync(Credentials.Anonymous()); + Assert.AreEqual(UserState.LoggedIn, anonUser.State); + await anonUser.LogOutAsync(); + Realms.Sync.User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); + Assert.AreEqual(UserState.LoggedIn, emailUser.State); + await emailUser.LogOutAsync(); + Realms.Sync.User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); + Assert.AreEqual(UserState.LoggedIn, apiUser.State); + await apiUser.LogOutAsync(); + var functionParameters = new Dictionary() + { + { "username", "caleb" }, + { "password", "shhhItsASektrit!" }, + { "someOtherProperty", "cheesecake" } + }; + Realms.Sync.User functionUser = + await app.LogInAsync(Credentials.Function(functionParameters)); + Assert.AreEqual(UserState.LoggedIn, functionUser.State); + await functionUser.LogOutAsync(); + Realms.Sync.User jwtUser = + await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNhbGViIiwiaWF0IjoxNjAxNjc4ODcyLCJleHAiOjI1MTYyMzkwMjIsImF1ZCI6InR1dHMtdGlqeWEifQ.LHbeSI2FDWrlUVOBxe-rasuFiW-etv2Gu5e3eAa6Y6k")); + Assert.AreEqual(UserState.LoggedIn, jwtUser.State); + await jwtUser.LogOutAsync(); + try + { + Realms.Sync.User fbUser = + await app.LogInAsync(Credentials.Facebook("")); + } + catch (Exception e) + { + Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + } + try + { + Realms.Sync.User googleUser = + await app.LogInAsync(Credentials.Google("")); + } + catch (Exception e) + { + Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + } + try + { + Realms.Sync.User appleUser = + await app.LogInAsync(Credentials.Apple("")); + } + + catch (Exception e) + { + Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + } +} - [TearDown] + [TearDown] public async System.Threading.Tasks.Task TearDown() { config = new SyncConfiguration("My Project", user); diff --git a/source/examples/generated/code/start/RealmTests.codeblock.initialize-realm.cs b/source/examples/generated/code/start/RealmTests.codeblock.initialize-realm.cs index 401c235f6f..d0faac8913 100644 --- a/source/examples/generated/code/start/RealmTests.codeblock.initialize-realm.cs +++ b/source/examples/generated/code/start/RealmTests.codeblock.initialize-realm.cs @@ -1,2 +1 @@ -const string appId = "tuts-tijya"; -app = Realms.Sync.App.Create(appId); \ No newline at end of file +app = Realms.Sync.App.Create(myRealmAppId); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_API.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_API.cs new file mode 100644 index 0000000000..b99985bc70 --- /dev/null +++ b/source/examples/generated/code/start/RealmTests.codeblock.logon_API.cs @@ -0,0 +1 @@ +Realms.Sync.User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_EP.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_EP.cs new file mode 100644 index 0000000000..4fa1b000d0 --- /dev/null +++ b/source/examples/generated/code/start/RealmTests.codeblock.logon_EP.cs @@ -0,0 +1 @@ +Realms.Sync.User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_Function.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_Function.cs new file mode 100644 index 0000000000..9038d487cd --- /dev/null +++ b/source/examples/generated/code/start/RealmTests.codeblock.logon_Function.cs @@ -0,0 +1,8 @@ +var functionParameters = new Dictionary() +{ + { "username", "caleb" }, + { "password", "shhhItsASektrit!" }, + { "someOtherProperty", "cheesecake" } +}; +Realms.Sync.User functionUser = + await app.LogInAsync(Credentials.Function(functionParameters)); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_JWT.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_JWT.cs new file mode 100644 index 0000000000..853f5c727c --- /dev/null +++ b/source/examples/generated/code/start/RealmTests.codeblock.logon_JWT.cs @@ -0,0 +1,2 @@ +Realms.Sync.User jwtUser = + await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNhbGViIiwiaWF0IjoxNjAxNjc4ODcyLCJleHAiOjI1MTYyMzkwMjIsImF1ZCI6InR1dHMtdGlqeWEifQ.LHbeSI2FDWrlUVOBxe-rasuFiW-etv2Gu5e3eAa6Y6k")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_anon.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_anon.cs new file mode 100644 index 0000000000..2e59cb33cf --- /dev/null +++ b/source/examples/generated/code/start/RealmTests.codeblock.logon_anon.cs @@ -0,0 +1 @@ +Realms.Sync.User anonUser = await app.LogInAsync(Credentials.Anonymous()); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_apple.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_apple.cs new file mode 100644 index 0000000000..63355c97a2 --- /dev/null +++ b/source/examples/generated/code/start/RealmTests.codeblock.logon_apple.cs @@ -0,0 +1,2 @@ +Realms.Sync.User appleUser = + await app.LogInAsync(Credentials.Apple("")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_fb.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_fb.cs new file mode 100644 index 0000000000..ca2657ccf2 --- /dev/null +++ b/source/examples/generated/code/start/RealmTests.codeblock.logon_fb.cs @@ -0,0 +1,2 @@ +Realms.Sync.User fbUser = + await app.LogInAsync(Credentials.Facebook("")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_google.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_google.cs new file mode 100644 index 0000000000..632b370fa5 --- /dev/null +++ b/source/examples/generated/code/start/RealmTests.codeblock.logon_google.cs @@ -0,0 +1,2 @@ +Realms.Sync.User googleUser = + await app.LogInAsync(Credentials.Google("")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.cs b/source/examples/generated/code/start/RealmTests.cs index eff7daa07b..df059e47ed 100644 --- a/source/examples/generated/code/start/RealmTests.cs +++ b/source/examples/generated/code/start/RealmTests.cs @@ -1,3 +1,5 @@ +using System; +using System.Collections.Generic; using System.Linq; using dotnet; using MongoDB.Bson; @@ -13,12 +15,12 @@ public class RealmTests ObjectId testTaskId; Realms.Sync.User user; SyncConfiguration config; + const string myRealmAppId = "tuts-tijya"; [SetUp] public async System.Threading.Tasks.Task Setup() { - const string appId = "tuts-tijya"; - app = Realms.Sync.App.Create(appId); + app = Realms.Sync.App.Create(myRealmAppId); user = app.LogInAsync(Credentials.EmailPassword("foo@foo.com", "foobar")).Result; config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); @@ -70,8 +72,63 @@ public async System.Threading.Tasks.Task ModifiesATask() return; } + [Test] + public async System.Threading.Tasks.Task LogsOnManyWays() + { + Realms.Sync.User anonUser = await app.LogInAsync(Credentials.Anonymous()); + Assert.AreEqual(UserState.LoggedIn, anonUser.State); + await anonUser.LogOutAsync(); + Realms.Sync.User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); + Assert.AreEqual(UserState.LoggedIn, emailUser.State); + await emailUser.LogOutAsync(); + Realms.Sync.User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); + Assert.AreEqual(UserState.LoggedIn, apiUser.State); + await apiUser.LogOutAsync(); + var functionParameters = new Dictionary() + { + { "username", "caleb" }, + { "password", "shhhItsASektrit!" }, + { "someOtherProperty", "cheesecake" } + }; + Realms.Sync.User functionUser = + await app.LogInAsync(Credentials.Function(functionParameters)); + Assert.AreEqual(UserState.LoggedIn, functionUser.State); + await functionUser.LogOutAsync(); + Realms.Sync.User jwtUser = + await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNhbGViIiwiaWF0IjoxNjAxNjc4ODcyLCJleHAiOjI1MTYyMzkwMjIsImF1ZCI6InR1dHMtdGlqeWEifQ.LHbeSI2FDWrlUVOBxe-rasuFiW-etv2Gu5e3eAa6Y6k")); + Assert.AreEqual(UserState.LoggedIn, jwtUser.State); + await jwtUser.LogOutAsync(); + try + { + Realms.Sync.User fbUser = + await app.LogInAsync(Credentials.Facebook("")); + } + catch (Exception e) + { + Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + } + try + { + Realms.Sync.User googleUser = + await app.LogInAsync(Credentials.Google("")); + } + catch (Exception e) + { + Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + } + try + { + Realms.Sync.User appleUser = + await app.LogInAsync(Credentials.Apple("")); + } + + catch (Exception e) + { + Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + } +} - [TearDown] + [TearDown] public async System.Threading.Tasks.Task TearDown() { config = new SyncConfiguration("My Project", user); From 49cdf298804e352a822e8d73dfede53f2b458857 Mon Sep 17 00:00:00 2001 From: MongoCaleb Date: Mon, 5 Oct 2020 11:40:57 -0700 Subject: [PATCH 2/3] review --- .../Examples/{RealmTests.cs => Examples.cs} | 69 ++++----- examples/dotnet/Examples/Examples.csproj | 5 +- .../Examples/{Project.cs => RealmProject.cs} | 2 +- .../dotnet/Examples/{Task.cs => RealmTask.cs} | 6 +- .../dotnet/Examples/{User.cs => RealmUser.cs} | 2 +- source/dotnet/authenticate.txt | 26 ++-- .../final/RealmTests.codeblock.anon-login.cs | 1 - .../code/final/RealmTests.codeblock.create.cs | 10 -- .../code/final/RealmTests.codeblock.delete.cs | 4 - .../RealmTests.codeblock.initialize-realm.cs | 1 - .../final/RealmTests.codeblock.read-all.cs | 1 - .../final/RealmTests.codeblock.read-some.cs | 1 - .../start/Examples.codeblock.anon-login.cs | 1 + .../Examples.codeblock.config.cs} | 0 .../code/start/Examples.codeblock.delete.cs | 4 + .../Examples.codeblock.initialize-realm.cs | 1 + .../start/Examples.codeblock.logon_API.cs | 1 + .../code/start/Examples.codeblock.logon_EP.cs | 1 + .../Examples.codeblock.logon_Function.cs | 10 ++ .../start/Examples.codeblock.logon_JWT.cs | 2 + .../start/Examples.codeblock.logon_anon.cs | 1 + ...e.cs => Examples.codeblock.logon_apple.cs} | 2 +- ...n_fb.cs => Examples.codeblock.logon_fb.cs} | 2 +- .../start/Examples.codeblock.logon_google.cs | 2 + .../Examples.codeblock.logout.cs} | 0 .../Examples.codeblock.modify.cs} | 2 +- .../code/start/Examples.codeblock.read-all.cs | 1 + .../start/Examples.codeblock.read-some.cs | 1 + .../RealmTests.cs => start/Examples.cs} | 68 +++++---- .../generated/code/start/RealmApp.swift | 5 - .../start/RealmTests.codeblock.anon-login.cs | 1 - .../code/start/RealmTests.codeblock.config.cs | 2 - .../code/start/RealmTests.codeblock.create.cs | 10 -- .../code/start/RealmTests.codeblock.delete.cs | 4 - .../RealmTests.codeblock.initialize-realm.cs | 1 - .../start/RealmTests.codeblock.logon_API.cs | 1 - .../start/RealmTests.codeblock.logon_EP.cs | 1 - .../RealmTests.codeblock.logon_Function.cs | 8 - .../start/RealmTests.codeblock.logon_JWT.cs | 2 - .../start/RealmTests.codeblock.logon_anon.cs | 1 - .../RealmTests.codeblock.logon_google.cs | 2 - .../code/start/RealmTests.codeblock.logout.cs | 1 - .../code/start/RealmTests.codeblock.modify.cs | 8 - .../start/RealmTests.codeblock.read-all.cs | 1 - .../start/RealmTests.codeblock.read-some.cs | 1 - .../generated/code/start/RealmTests.cs | 144 ------------------ 46 files changed, 118 insertions(+), 302 deletions(-) rename examples/dotnet/Examples/{RealmTests.cs => Examples.cs} (71%) rename examples/dotnet/Examples/{Project.cs => RealmProject.cs} (87%) rename examples/dotnet/Examples/{Task.cs => RealmTask.cs} (84%) rename examples/dotnet/Examples/{User.cs => RealmUser.cs} (90%) delete mode 100644 source/examples/generated/code/final/RealmTests.codeblock.anon-login.cs delete mode 100644 source/examples/generated/code/final/RealmTests.codeblock.create.cs delete mode 100644 source/examples/generated/code/final/RealmTests.codeblock.delete.cs delete mode 100644 source/examples/generated/code/final/RealmTests.codeblock.initialize-realm.cs delete mode 100644 source/examples/generated/code/final/RealmTests.codeblock.read-all.cs delete mode 100644 source/examples/generated/code/final/RealmTests.codeblock.read-some.cs create mode 100644 source/examples/generated/code/start/Examples.codeblock.anon-login.cs rename source/examples/generated/code/{final/RealmTests.codeblock.config.cs => start/Examples.codeblock.config.cs} (100%) create mode 100644 source/examples/generated/code/start/Examples.codeblock.delete.cs create mode 100644 source/examples/generated/code/start/Examples.codeblock.initialize-realm.cs create mode 100644 source/examples/generated/code/start/Examples.codeblock.logon_API.cs create mode 100644 source/examples/generated/code/start/Examples.codeblock.logon_EP.cs create mode 100644 source/examples/generated/code/start/Examples.codeblock.logon_Function.cs create mode 100644 source/examples/generated/code/start/Examples.codeblock.logon_JWT.cs create mode 100644 source/examples/generated/code/start/Examples.codeblock.logon_anon.cs rename source/examples/generated/code/start/{RealmTests.codeblock.logon_apple.cs => Examples.codeblock.logon_apple.cs} (67%) rename source/examples/generated/code/start/{RealmTests.codeblock.logon_fb.cs => Examples.codeblock.logon_fb.cs} (72%) create mode 100644 source/examples/generated/code/start/Examples.codeblock.logon_google.cs rename source/examples/generated/code/{final/RealmTests.codeblock.logout.cs => start/Examples.codeblock.logout.cs} (100%) rename source/examples/generated/code/{final/RealmTests.codeblock.modify.cs => start/Examples.codeblock.modify.cs} (78%) create mode 100644 source/examples/generated/code/start/Examples.codeblock.read-all.cs create mode 100644 source/examples/generated/code/start/Examples.codeblock.read-some.cs rename source/examples/generated/code/{final/RealmTests.cs => start/Examples.cs} (64%) delete mode 100644 source/examples/generated/code/start/RealmApp.swift delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.anon-login.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.config.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.create.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.delete.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.initialize-realm.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_API.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_EP.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_Function.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_JWT.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_anon.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logon_google.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.logout.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.modify.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.read-all.cs delete mode 100644 source/examples/generated/code/start/RealmTests.codeblock.read-some.cs delete mode 100644 source/examples/generated/code/start/RealmTests.cs diff --git a/examples/dotnet/Examples/RealmTests.cs b/examples/dotnet/Examples/Examples.cs similarity index 71% rename from examples/dotnet/Examples/RealmTests.cs rename to examples/dotnet/Examples/Examples.cs index 52a284cad1..2a15795b1b 100644 --- a/examples/dotnet/Examples/RealmTests.cs +++ b/examples/dotnet/Examples/Examples.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System; using System.Linq; using dotnet; using MongoDB.Bson; @@ -9,11 +8,11 @@ namespace UnitTests { - public class RealmTests + public class Examples { - Realms.Sync.App app; + App app; ObjectId testTaskId; - Realms.Sync.User user; + User user; SyncConfiguration config; const string myRealmAppId = "tuts-tijya"; @@ -21,13 +20,13 @@ public class RealmTests public async System.Threading.Tasks.Task Setup() { // :code-block-start: initialize-realm - app = Realms.Sync.App.Create(myRealmAppId); + app = App.Create(myRealmAppId); // :code-block-end: user = app.LogInAsync(Credentials.EmailPassword("foo@foo.com", "foobar")).Result; config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); - // :code-block-start: create - Task testTask = new Task() + // :code-block-stat: create + RealmTask testTask = new RealmTask() { Name = "Do this thing", Status = TaskStatus.Open.ToString() @@ -46,18 +45,18 @@ public async System.Threading.Tasks.Task Setup() public async System.Threading.Tasks.Task GetsSyncedTasks() { // :code-block-start: anon-login - Realms.Sync.User user = app.LogInAsync(Credentials.Anonymous()).Result; + User user = app.LogInAsync(Credentials.Anonymous()).Result; // :code-block-end: // :code-block-start: config config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); // :code-block-end: // :code-block-start: read-all - var tasks = realm.All().ToList(); + var tasks = realm.All().ToList(); // :code-block-end: Assert.AreEqual(1, tasks.Count); // :code-block-start: read-some - tasks = realm.All().Where(t=>t.Status == "Open").ToList(); + tasks = realm.All().Where(t => t.Status == "Open").ToList(); // :code-block-end: Assert.AreEqual(1, tasks.Count); return; @@ -69,7 +68,7 @@ public async System.Threading.Tasks.Task ModifiesATask() config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); // :code-block-start: modify - Task t = realm.All() + RealmTask t = realm.All() .Where(t => t.Id == testTaskId) .FirstOrDefault(); @@ -79,7 +78,7 @@ public async System.Threading.Tasks.Task ModifiesATask() }); // :code-block-end: - var allTasks = realm.All().ToList(); + var allTasks = realm.All().ToList(); Assert.AreEqual(1, allTasks.Count); Assert.AreEqual(TaskStatus.InProgress.ToString(), allTasks.First().Status); @@ -90,73 +89,75 @@ public async System.Threading.Tasks.Task ModifiesATask() public async System.Threading.Tasks.Task LogsOnManyWays() { // :code-block-start: logon_anon - Realms.Sync.User anonUser = await app.LogInAsync(Credentials.Anonymous()); + User anonUser = await app.LogInAsync(Credentials.Anonymous()); // :code-block-end: Assert.AreEqual(UserState.LoggedIn, anonUser.State); await anonUser.LogOutAsync(); // :code-block-start: logon_EP - Realms.Sync.User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); + User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); // :code-block-end: Assert.AreEqual(UserState.LoggedIn, emailUser.State); await emailUser.LogOutAsync(); // :code-block-start: logon_API - Realms.Sync.User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); + User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); // :code-block-end: Assert.AreEqual(UserState.LoggedIn, apiUser.State); await apiUser.LogOutAsync(); // :code-block-start: logon_Function - var functionParameters = new Dictionary() + var functionParameters = new { - { "username", "caleb" }, - { "password", "shhhItsASektrit!" }, - { "someOtherProperty", "cheesecake" } + username= "caleb", + password = "shhhItsASektrit!", + IQ = 42, + isCool = true }; - Realms.Sync.User functionUser = + + User functionUser = await app.LogInAsync(Credentials.Function(functionParameters)); // :code-block-end: Assert.AreEqual(UserState.LoggedIn, functionUser.State); await functionUser.LogOutAsync(); // :code-block-start: logon_JWT - Realms.Sync.User jwtUser = - await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNhbGViIiwiaWF0IjoxNjAxNjc4ODcyLCJleHAiOjI1MTYyMzkwMjIsImF1ZCI6InR1dHMtdGlqeWEifQ.LHbeSI2FDWrlUVOBxe-rasuFiW-etv2Gu5e3eAa6Y6k")); + User jwtUser = + await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.---.---")); // :code-block-end: Assert.AreEqual(UserState.LoggedIn, jwtUser.State); await jwtUser.LogOutAsync(); try { // :code-block-start: logon_fb - Realms.Sync.User fbUser = + User fbUser = await app.LogInAsync(Credentials.Facebook("")); // :code-block-end: } catch (Exception e) { - Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + Assert.AreEqual("InvalidSession: authentication via 'oauth2-facebook' is unsupported", e.Message); } try { // :code-block-start: logon_google - Realms.Sync.User googleUser = - await app.LogInAsync(Credentials.Google("")); + User googleUser = + await app.LogInAsync(Credentials.Google("")); // :code-block-end: } catch (Exception e) { - Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + Assert.AreEqual("InvalidSession: authentication via 'oauth2-google' is unsupported", e.Message); } try { // :code-block-start: logon_apple - Realms.Sync.User appleUser = + User appleUser = await app.LogInAsync(Credentials.Apple("")); // :code-block-end: } - + catch (Exception e) { - Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + Assert.AreEqual("InvalidSession: authentication via 'oauth2-apple' is unsupported", e.Message); } -} + } [TearDown] public async System.Threading.Tasks.Task TearDown() @@ -166,13 +167,13 @@ public async System.Threading.Tasks.Task TearDown() // :code-block-start: delete realm.Write(() => { - realm.RemoveAll(); + realm.RemoveAll(); }); // :code-block-end: // :code-block-start: logout await user.LogOutAsync(); // :code-block-end: return; - } + } } } \ No newline at end of file diff --git a/examples/dotnet/Examples/Examples.csproj b/examples/dotnet/Examples/Examples.csproj index 1763e1108d..1f6138a9e5 100644 --- a/examples/dotnet/Examples/Examples.csproj +++ b/examples/dotnet/Examples/Examples.csproj @@ -10,11 +10,12 @@ - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + diff --git a/examples/dotnet/Examples/Project.cs b/examples/dotnet/Examples/RealmProject.cs similarity index 87% rename from examples/dotnet/Examples/Project.cs rename to examples/dotnet/Examples/RealmProject.cs index ae2b7bb905..a843ee6039 100644 --- a/examples/dotnet/Examples/Project.cs +++ b/examples/dotnet/Examples/RealmProject.cs @@ -3,7 +3,7 @@ namespace dotnet { - public class Project : RealmObject + public class RealmProject : RealmObject { [PrimaryKey] [MapTo("_id")] diff --git a/examples/dotnet/Examples/Task.cs b/examples/dotnet/Examples/RealmTask.cs similarity index 84% rename from examples/dotnet/Examples/Task.cs rename to examples/dotnet/Examples/RealmTask.cs index 9fa0c81f06..208a8ccabe 100644 --- a/examples/dotnet/Examples/Task.cs +++ b/examples/dotnet/Examples/RealmTask.cs @@ -3,7 +3,7 @@ using Realms; namespace dotnet { - public class Task : RealmObject + public class RealmTask : RealmObject { [PrimaryKey] [MapTo("_id")] @@ -13,7 +13,7 @@ public class Task : RealmObject public string Partition { get; set; } [MapTo("assignee")] - public User Assignee { get; set; } + public RealmUser Assignee { get; set; } [MapTo("name")] [Required] @@ -23,7 +23,7 @@ public class Task : RealmObject [Required] public string Status { get; set; } - public Task() + public RealmTask() { this.Id = ObjectId.GenerateNewId(); } diff --git a/examples/dotnet/Examples/User.cs b/examples/dotnet/Examples/RealmUser.cs similarity index 90% rename from examples/dotnet/Examples/User.cs rename to examples/dotnet/Examples/RealmUser.cs index ddb5a82c89..dc1bd58cbb 100644 --- a/examples/dotnet/Examples/User.cs +++ b/examples/dotnet/Examples/RealmUser.cs @@ -3,7 +3,7 @@ namespace dotnet { - public class User : RealmObject + public class RealmUser : RealmObject { [PrimaryKey] [MapTo("_id")] diff --git a/source/dotnet/authenticate.txt b/source/dotnet/authenticate.txt index dc06712c4b..8331d086f7 100644 --- a/source/dotnet/authenticate.txt +++ b/source/dotnet/authenticate.txt @@ -17,11 +17,9 @@ Overview {+service+} provides an API for authenticating users using any enabled authentication provider. Instantiate a ``Credentials`` object and pass -it to the ``app.login()`` method to authenticate a user and create a ``User`` -object. Each authentication provider corresponds to a method used to -instantiate ``Credentials`` objects using that authentication provider. -See the table below to find the method that instantiates the -``Credentials`` instance for your authentication provider: +it to the ``app.LogInAsync()`` method to authenticate and obtain a ``User`` +instance. The ``Credentials`` class exposes factory methods that correspond to +each of the authentication providers: .. list-table:: :header-rows: 1 @@ -74,7 +72,7 @@ If you have enabled :ref:`Anonymous authentication ` i {+ui+}, users can immediately log into your app without providing any identifying information. The following code shows how to do this: -.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_anon.cs +.. literalinclude:: /examples/generated/code/start/Examples.codeblock.logon_anon.cs :language: csharp .. _dotnet-login-email-password: @@ -85,7 +83,7 @@ Email/Password Authentication If you have enabled :ref:`Email/Password authentication `, you can log in using the following code: -.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_EP.cs +.. literalinclude:: /examples/generated/code/start/Examples.codeblock.logon_EP.cs :language: csharp .. _dotnet-login-api-key: @@ -95,7 +93,7 @@ API Key If you have enabled :ref:`API Key authentication `, you can log in using the following code: -.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_API.cs +.. literalinclude:: /examples/generated/code/start/Examples.codeblock.logon_API.cs :language: csharp .. _dotnet-login-custom-function: @@ -106,7 +104,7 @@ If you have enabled the :doc:`Custom Function authentication provider `, you can log in using the following code: -.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_Function.cs +.. literalinclude:: /examples/generated/code/start/Examples.codeblock.logon_Function.cs :language: csharp .. _dotnet-login-custom-jwt: @@ -116,7 +114,7 @@ Custom JWT If you have enabled the :doc:`Custom JWT authentication provider `, you can log in using the following code: -.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_JWT.cs +.. literalinclude:: /examples/generated/code/start/Examples.codeblock.logon_JWT.cs :language: csharp .. _dotnet-login-facebook: @@ -127,7 +125,7 @@ Facebook Authentication If you have enabled :ref:`Facebook authentication `, you can log in using the following code: -.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_fb.cs +.. literalinclude:: /examples/generated/code/start/Examples.codeblock.logon_fb.cs :language: csharp .. _dotnet-login-google: @@ -138,7 +136,7 @@ Google Authentication If you have enabled :ref:`Google authentication `, you can log in using the following code: -.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_google.cs +.. literalinclude:: /examples/generated/code/start/Examples.codeblock.logon_google.cs :language: csharp .. _dotnet-login-apple: @@ -148,7 +146,7 @@ Sign-in with Apple If you have enabled :ref:`Sign-in with Apple authentication `, you can log in using the following code: -.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logon_apple.cs +.. literalinclude:: /examples/generated/code/start/Examples.codeblock.logon_apple.cs :language: csharp .. _dotnet-logout: @@ -158,7 +156,7 @@ Log Out Once logged in, you can log out by calling the ``LogOutAsync()`` method: -.. literalinclude:: /examples/generated/code/start/RealmTests.codeblock.logout.cs +.. literalinclude:: /examples/generated/code/start/Examples.codeblock.logout.cs :language: csharp .. include:: /includes/log-out-queries-in-progress.rst diff --git a/source/examples/generated/code/final/RealmTests.codeblock.anon-login.cs b/source/examples/generated/code/final/RealmTests.codeblock.anon-login.cs deleted file mode 100644 index 5e657a9a5a..0000000000 --- a/source/examples/generated/code/final/RealmTests.codeblock.anon-login.cs +++ /dev/null @@ -1 +0,0 @@ -Realms.Sync.User user = app.LogInAsync(Credentials.Anonymous()).Result; \ No newline at end of file diff --git a/source/examples/generated/code/final/RealmTests.codeblock.create.cs b/source/examples/generated/code/final/RealmTests.codeblock.create.cs deleted file mode 100644 index 64f986ee3e..0000000000 --- a/source/examples/generated/code/final/RealmTests.codeblock.create.cs +++ /dev/null @@ -1,10 +0,0 @@ -Task testTask = new Task() -{ - Name = "Do this thing", - Status = TaskStatus.Open.ToString() -}; - -realm.Write(() => -{ - realm.Add(testTask); -}); \ No newline at end of file diff --git a/source/examples/generated/code/final/RealmTests.codeblock.delete.cs b/source/examples/generated/code/final/RealmTests.codeblock.delete.cs deleted file mode 100644 index 47a6dbbe09..0000000000 --- a/source/examples/generated/code/final/RealmTests.codeblock.delete.cs +++ /dev/null @@ -1,4 +0,0 @@ -realm.Write(() => -{ - realm.RemoveAll(); -}); \ No newline at end of file diff --git a/source/examples/generated/code/final/RealmTests.codeblock.initialize-realm.cs b/source/examples/generated/code/final/RealmTests.codeblock.initialize-realm.cs deleted file mode 100644 index d0faac8913..0000000000 --- a/source/examples/generated/code/final/RealmTests.codeblock.initialize-realm.cs +++ /dev/null @@ -1 +0,0 @@ -app = Realms.Sync.App.Create(myRealmAppId); \ No newline at end of file diff --git a/source/examples/generated/code/final/RealmTests.codeblock.read-all.cs b/source/examples/generated/code/final/RealmTests.codeblock.read-all.cs deleted file mode 100644 index 2493973cf9..0000000000 --- a/source/examples/generated/code/final/RealmTests.codeblock.read-all.cs +++ /dev/null @@ -1 +0,0 @@ -var tasks = realm.All().ToList(); \ No newline at end of file diff --git a/source/examples/generated/code/final/RealmTests.codeblock.read-some.cs b/source/examples/generated/code/final/RealmTests.codeblock.read-some.cs deleted file mode 100644 index e4b6a50eae..0000000000 --- a/source/examples/generated/code/final/RealmTests.codeblock.read-some.cs +++ /dev/null @@ -1 +0,0 @@ -tasks = realm.All().Where(t=>t.Status == "Open").ToList(); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.anon-login.cs b/source/examples/generated/code/start/Examples.codeblock.anon-login.cs new file mode 100644 index 0000000000..fcc769457b --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.anon-login.cs @@ -0,0 +1 @@ +User user = app.LogInAsync(Credentials.Anonymous()).Result; \ No newline at end of file diff --git a/source/examples/generated/code/final/RealmTests.codeblock.config.cs b/source/examples/generated/code/start/Examples.codeblock.config.cs similarity index 100% rename from source/examples/generated/code/final/RealmTests.codeblock.config.cs rename to source/examples/generated/code/start/Examples.codeblock.config.cs diff --git a/source/examples/generated/code/start/Examples.codeblock.delete.cs b/source/examples/generated/code/start/Examples.codeblock.delete.cs new file mode 100644 index 0000000000..af767023f3 --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.delete.cs @@ -0,0 +1,4 @@ +realm.Write(() => +{ + realm.RemoveAll(); +}); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.initialize-realm.cs b/source/examples/generated/code/start/Examples.codeblock.initialize-realm.cs new file mode 100644 index 0000000000..6ed9ca3ab1 --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.initialize-realm.cs @@ -0,0 +1 @@ +app = App.Create(myRealmAppId); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_API.cs b/source/examples/generated/code/start/Examples.codeblock.logon_API.cs new file mode 100644 index 0000000000..bbf0e2ef2e --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.logon_API.cs @@ -0,0 +1 @@ +User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_EP.cs b/source/examples/generated/code/start/Examples.codeblock.logon_EP.cs new file mode 100644 index 0000000000..22c388420f --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.logon_EP.cs @@ -0,0 +1 @@ +User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_Function.cs b/source/examples/generated/code/start/Examples.codeblock.logon_Function.cs new file mode 100644 index 0000000000..cb197b5bd8 --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.logon_Function.cs @@ -0,0 +1,10 @@ +var functionParameters = new +{ + username= "caleb", + password = "shhhItsASektrit!", + IQ = 42, + isCool = true +}; + +User functionUser = + await app.LogInAsync(Credentials.Function(functionParameters)); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_JWT.cs b/source/examples/generated/code/start/Examples.codeblock.logon_JWT.cs new file mode 100644 index 0000000000..60e752a0a4 --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.logon_JWT.cs @@ -0,0 +1,2 @@ +User jwtUser = + await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.---.---")); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_anon.cs b/source/examples/generated/code/start/Examples.codeblock.logon_anon.cs new file mode 100644 index 0000000000..120bd0d8c7 --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.logon_anon.cs @@ -0,0 +1 @@ +User anonUser = await app.LogInAsync(Credentials.Anonymous()); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_apple.cs b/source/examples/generated/code/start/Examples.codeblock.logon_apple.cs similarity index 67% rename from source/examples/generated/code/start/RealmTests.codeblock.logon_apple.cs rename to source/examples/generated/code/start/Examples.codeblock.logon_apple.cs index 63355c97a2..515b6c6484 100644 --- a/source/examples/generated/code/start/RealmTests.codeblock.logon_apple.cs +++ b/source/examples/generated/code/start/Examples.codeblock.logon_apple.cs @@ -1,2 +1,2 @@ -Realms.Sync.User appleUser = +User appleUser = await app.LogInAsync(Credentials.Apple("")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_fb.cs b/source/examples/generated/code/start/Examples.codeblock.logon_fb.cs similarity index 72% rename from source/examples/generated/code/start/RealmTests.codeblock.logon_fb.cs rename to source/examples/generated/code/start/Examples.codeblock.logon_fb.cs index ca2657ccf2..a39e6ab8e7 100644 --- a/source/examples/generated/code/start/RealmTests.codeblock.logon_fb.cs +++ b/source/examples/generated/code/start/Examples.codeblock.logon_fb.cs @@ -1,2 +1,2 @@ -Realms.Sync.User fbUser = +User fbUser = await app.LogInAsync(Credentials.Facebook("")); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_google.cs b/source/examples/generated/code/start/Examples.codeblock.logon_google.cs new file mode 100644 index 0000000000..9f12d2c3fa --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.logon_google.cs @@ -0,0 +1,2 @@ +User googleUser = + await app.LogInAsync(Credentials.Google("")); \ No newline at end of file diff --git a/source/examples/generated/code/final/RealmTests.codeblock.logout.cs b/source/examples/generated/code/start/Examples.codeblock.logout.cs similarity index 100% rename from source/examples/generated/code/final/RealmTests.codeblock.logout.cs rename to source/examples/generated/code/start/Examples.codeblock.logout.cs diff --git a/source/examples/generated/code/final/RealmTests.codeblock.modify.cs b/source/examples/generated/code/start/Examples.codeblock.modify.cs similarity index 78% rename from source/examples/generated/code/final/RealmTests.codeblock.modify.cs rename to source/examples/generated/code/start/Examples.codeblock.modify.cs index 734f89c1f8..0d1d2edfba 100644 --- a/source/examples/generated/code/final/RealmTests.codeblock.modify.cs +++ b/source/examples/generated/code/start/Examples.codeblock.modify.cs @@ -1,4 +1,4 @@ -Task t = realm.All() +RealmTask t = realm.All() .Where(t => t.Id == testTaskId) .FirstOrDefault(); diff --git a/source/examples/generated/code/start/Examples.codeblock.read-all.cs b/source/examples/generated/code/start/Examples.codeblock.read-all.cs new file mode 100644 index 0000000000..25ba1e62b8 --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.read-all.cs @@ -0,0 +1 @@ +var tasks = realm.All().ToList(); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.read-some.cs b/source/examples/generated/code/start/Examples.codeblock.read-some.cs new file mode 100644 index 0000000000..e8c315b518 --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.read-some.cs @@ -0,0 +1 @@ +tasks = realm.All().Where(t => t.Status == "Open").ToList(); \ No newline at end of file diff --git a/source/examples/generated/code/final/RealmTests.cs b/source/examples/generated/code/start/Examples.cs similarity index 64% rename from source/examples/generated/code/final/RealmTests.cs rename to source/examples/generated/code/start/Examples.cs index df059e47ed..07baa22089 100644 --- a/source/examples/generated/code/final/RealmTests.cs +++ b/source/examples/generated/code/start/Examples.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System; using System.Linq; using dotnet; using MongoDB.Bson; @@ -9,22 +8,23 @@ namespace UnitTests { - public class RealmTests + public class Examples { - Realms.Sync.App app; + App app; ObjectId testTaskId; - Realms.Sync.User user; + User user; SyncConfiguration config; const string myRealmAppId = "tuts-tijya"; [SetUp] public async System.Threading.Tasks.Task Setup() { - app = Realms.Sync.App.Create(myRealmAppId); + app = App.Create(myRealmAppId); user = app.LogInAsync(Credentials.EmailPassword("foo@foo.com", "foobar")).Result; config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); - Task testTask = new Task() + // :code-block-stat: create + RealmTask testTask = new RealmTask() { Name = "Do this thing", Status = TaskStatus.Open.ToString() @@ -41,12 +41,12 @@ public async System.Threading.Tasks.Task Setup() [Test] public async System.Threading.Tasks.Task GetsSyncedTasks() { - Realms.Sync.User user = app.LogInAsync(Credentials.Anonymous()).Result; + User user = app.LogInAsync(Credentials.Anonymous()).Result; config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); - var tasks = realm.All().ToList(); + var tasks = realm.All().ToList(); Assert.AreEqual(1, tasks.Count); - tasks = realm.All().Where(t=>t.Status == "Open").ToList(); + tasks = realm.All().Where(t => t.Status == "Open").ToList(); Assert.AreEqual(1, tasks.Count); return; } @@ -56,7 +56,7 @@ public async System.Threading.Tasks.Task ModifiesATask() { config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); - Task t = realm.All() + RealmTask t = realm.All() .Where(t => t.Id == testTaskId) .FirstOrDefault(); @@ -65,7 +65,7 @@ public async System.Threading.Tasks.Task ModifiesATask() t.Status = TaskStatus.InProgress.ToString(); }); - var allTasks = realm.All().ToList(); + var allTasks = realm.All().ToList(); Assert.AreEqual(1, allTasks.Count); Assert.AreEqual(TaskStatus.InProgress.ToString(), allTasks.First().Status); @@ -75,58 +75,60 @@ public async System.Threading.Tasks.Task ModifiesATask() [Test] public async System.Threading.Tasks.Task LogsOnManyWays() { - Realms.Sync.User anonUser = await app.LogInAsync(Credentials.Anonymous()); + User anonUser = await app.LogInAsync(Credentials.Anonymous()); Assert.AreEqual(UserState.LoggedIn, anonUser.State); await anonUser.LogOutAsync(); - Realms.Sync.User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); + User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); Assert.AreEqual(UserState.LoggedIn, emailUser.State); await emailUser.LogOutAsync(); - Realms.Sync.User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); + User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); Assert.AreEqual(UserState.LoggedIn, apiUser.State); await apiUser.LogOutAsync(); - var functionParameters = new Dictionary() + var functionParameters = new { - { "username", "caleb" }, - { "password", "shhhItsASektrit!" }, - { "someOtherProperty", "cheesecake" } + username= "caleb", + password = "shhhItsASektrit!", + IQ = 42, + isCool = true }; - Realms.Sync.User functionUser = + + User functionUser = await app.LogInAsync(Credentials.Function(functionParameters)); Assert.AreEqual(UserState.LoggedIn, functionUser.State); await functionUser.LogOutAsync(); - Realms.Sync.User jwtUser = - await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNhbGViIiwiaWF0IjoxNjAxNjc4ODcyLCJleHAiOjI1MTYyMzkwMjIsImF1ZCI6InR1dHMtdGlqeWEifQ.LHbeSI2FDWrlUVOBxe-rasuFiW-etv2Gu5e3eAa6Y6k")); + User jwtUser = + await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.---.---")); Assert.AreEqual(UserState.LoggedIn, jwtUser.State); await jwtUser.LogOutAsync(); try { - Realms.Sync.User fbUser = + User fbUser = await app.LogInAsync(Credentials.Facebook("")); } catch (Exception e) { - Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + Assert.AreEqual("InvalidSession: authentication via 'oauth2-facebook' is unsupported", e.Message); } try { - Realms.Sync.User googleUser = - await app.LogInAsync(Credentials.Google("")); + User googleUser = + await app.LogInAsync(Credentials.Google("")); } catch (Exception e) { - Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + Assert.AreEqual("InvalidSession: authentication via 'oauth2-google' is unsupported", e.Message); } try { - Realms.Sync.User appleUser = + User appleUser = await app.LogInAsync(Credentials.Apple("")); } - + catch (Exception e) { - Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); + Assert.AreEqual("InvalidSession: authentication via 'oauth2-apple' is unsupported", e.Message); } -} + } [TearDown] public async System.Threading.Tasks.Task TearDown() @@ -135,10 +137,10 @@ public async System.Threading.Tasks.Task TearDown() Realm realm = await Realm.GetInstanceAsync(config); realm.Write(() => { - realm.RemoveAll(); + realm.RemoveAll(); }); await user.LogOutAsync(); return; - } + } } } \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmApp.swift b/source/examples/generated/code/start/RealmApp.swift deleted file mode 100644 index e435fcf681..0000000000 --- a/source/examples/generated/code/start/RealmApp.swift +++ /dev/null @@ -1,5 +0,0 @@ -import RealmSwift - -let YOUR_REALM_APP_ID = "example-testers-kvjdy" - -let app = App(id: YOUR_REALM_APP_ID) diff --git a/source/examples/generated/code/start/RealmTests.codeblock.anon-login.cs b/source/examples/generated/code/start/RealmTests.codeblock.anon-login.cs deleted file mode 100644 index 5e657a9a5a..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.anon-login.cs +++ /dev/null @@ -1 +0,0 @@ -Realms.Sync.User user = app.LogInAsync(Credentials.Anonymous()).Result; \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.config.cs b/source/examples/generated/code/start/RealmTests.codeblock.config.cs deleted file mode 100644 index 0488b955fa..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.config.cs +++ /dev/null @@ -1,2 +0,0 @@ -config = new SyncConfiguration("My Project", user); -Realm realm = await Realm.GetInstanceAsync(config); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.create.cs b/source/examples/generated/code/start/RealmTests.codeblock.create.cs deleted file mode 100644 index 64f986ee3e..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.create.cs +++ /dev/null @@ -1,10 +0,0 @@ -Task testTask = new Task() -{ - Name = "Do this thing", - Status = TaskStatus.Open.ToString() -}; - -realm.Write(() => -{ - realm.Add(testTask); -}); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.delete.cs b/source/examples/generated/code/start/RealmTests.codeblock.delete.cs deleted file mode 100644 index 47a6dbbe09..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.delete.cs +++ /dev/null @@ -1,4 +0,0 @@ -realm.Write(() => -{ - realm.RemoveAll(); -}); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.initialize-realm.cs b/source/examples/generated/code/start/RealmTests.codeblock.initialize-realm.cs deleted file mode 100644 index d0faac8913..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.initialize-realm.cs +++ /dev/null @@ -1 +0,0 @@ -app = Realms.Sync.App.Create(myRealmAppId); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_API.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_API.cs deleted file mode 100644 index b99985bc70..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.logon_API.cs +++ /dev/null @@ -1 +0,0 @@ -Realms.Sync.User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_EP.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_EP.cs deleted file mode 100644 index 4fa1b000d0..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.logon_EP.cs +++ /dev/null @@ -1 +0,0 @@ -Realms.Sync.User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_Function.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_Function.cs deleted file mode 100644 index 9038d487cd..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.logon_Function.cs +++ /dev/null @@ -1,8 +0,0 @@ -var functionParameters = new Dictionary() -{ - { "username", "caleb" }, - { "password", "shhhItsASektrit!" }, - { "someOtherProperty", "cheesecake" } -}; -Realms.Sync.User functionUser = - await app.LogInAsync(Credentials.Function(functionParameters)); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_JWT.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_JWT.cs deleted file mode 100644 index 853f5c727c..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.logon_JWT.cs +++ /dev/null @@ -1,2 +0,0 @@ -Realms.Sync.User jwtUser = - await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNhbGViIiwiaWF0IjoxNjAxNjc4ODcyLCJleHAiOjI1MTYyMzkwMjIsImF1ZCI6InR1dHMtdGlqeWEifQ.LHbeSI2FDWrlUVOBxe-rasuFiW-etv2Gu5e3eAa6Y6k")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_anon.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_anon.cs deleted file mode 100644 index 2e59cb33cf..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.logon_anon.cs +++ /dev/null @@ -1 +0,0 @@ -Realms.Sync.User anonUser = await app.LogInAsync(Credentials.Anonymous()); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logon_google.cs b/source/examples/generated/code/start/RealmTests.codeblock.logon_google.cs deleted file mode 100644 index 632b370fa5..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.logon_google.cs +++ /dev/null @@ -1,2 +0,0 @@ -Realms.Sync.User googleUser = - await app.LogInAsync(Credentials.Google("")); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.logout.cs b/source/examples/generated/code/start/RealmTests.codeblock.logout.cs deleted file mode 100644 index 1c6e25f246..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.logout.cs +++ /dev/null @@ -1 +0,0 @@ -await user.LogOutAsync(); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.modify.cs b/source/examples/generated/code/start/RealmTests.codeblock.modify.cs deleted file mode 100644 index 734f89c1f8..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.modify.cs +++ /dev/null @@ -1,8 +0,0 @@ -Task t = realm.All() - .Where(t => t.Id == testTaskId) - .FirstOrDefault(); - -realm.Write(() => -{ - t.Status = TaskStatus.InProgress.ToString(); -}); diff --git a/source/examples/generated/code/start/RealmTests.codeblock.read-all.cs b/source/examples/generated/code/start/RealmTests.codeblock.read-all.cs deleted file mode 100644 index 2493973cf9..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.read-all.cs +++ /dev/null @@ -1 +0,0 @@ -var tasks = realm.All().ToList(); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.codeblock.read-some.cs b/source/examples/generated/code/start/RealmTests.codeblock.read-some.cs deleted file mode 100644 index e4b6a50eae..0000000000 --- a/source/examples/generated/code/start/RealmTests.codeblock.read-some.cs +++ /dev/null @@ -1 +0,0 @@ -tasks = realm.All().Where(t=>t.Status == "Open").ToList(); \ No newline at end of file diff --git a/source/examples/generated/code/start/RealmTests.cs b/source/examples/generated/code/start/RealmTests.cs deleted file mode 100644 index df059e47ed..0000000000 --- a/source/examples/generated/code/start/RealmTests.cs +++ /dev/null @@ -1,144 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using dotnet; -using MongoDB.Bson; -using NUnit.Framework; -using Realms; -using Realms.Sync; - -namespace UnitTests -{ - public class RealmTests - { - Realms.Sync.App app; - ObjectId testTaskId; - Realms.Sync.User user; - SyncConfiguration config; - const string myRealmAppId = "tuts-tijya"; - - [SetUp] - public async System.Threading.Tasks.Task Setup() - { - app = Realms.Sync.App.Create(myRealmAppId); - user = app.LogInAsync(Credentials.EmailPassword("foo@foo.com", "foobar")).Result; - config = new SyncConfiguration("My Project", user); - Realm realm = await Realm.GetInstanceAsync(config); - Task testTask = new Task() - { - Name = "Do this thing", - Status = TaskStatus.Open.ToString() - }; - - realm.Write(() => - { - realm.Add(testTask); - }); - testTaskId = testTask.Id; - return; - } - - [Test] - public async System.Threading.Tasks.Task GetsSyncedTasks() - { - Realms.Sync.User user = app.LogInAsync(Credentials.Anonymous()).Result; - config = new SyncConfiguration("My Project", user); - Realm realm = await Realm.GetInstanceAsync(config); - var tasks = realm.All().ToList(); - Assert.AreEqual(1, tasks.Count); - tasks = realm.All().Where(t=>t.Status == "Open").ToList(); - Assert.AreEqual(1, tasks.Count); - return; - } - - [Test] - public async System.Threading.Tasks.Task ModifiesATask() - { - config = new SyncConfiguration("My Project", user); - Realm realm = await Realm.GetInstanceAsync(config); - Task t = realm.All() - .Where(t => t.Id == testTaskId) - .FirstOrDefault(); - - realm.Write(() => - { - t.Status = TaskStatus.InProgress.ToString(); - }); - - var allTasks = realm.All().ToList(); - Assert.AreEqual(1, allTasks.Count); - Assert.AreEqual(TaskStatus.InProgress.ToString(), allTasks.First().Status); - - return; - } - - [Test] - public async System.Threading.Tasks.Task LogsOnManyWays() - { - Realms.Sync.User anonUser = await app.LogInAsync(Credentials.Anonymous()); - Assert.AreEqual(UserState.LoggedIn, anonUser.State); - await anonUser.LogOutAsync(); - Realms.Sync.User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); - Assert.AreEqual(UserState.LoggedIn, emailUser.State); - await emailUser.LogOutAsync(); - Realms.Sync.User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); - Assert.AreEqual(UserState.LoggedIn, apiUser.State); - await apiUser.LogOutAsync(); - var functionParameters = new Dictionary() - { - { "username", "caleb" }, - { "password", "shhhItsASektrit!" }, - { "someOtherProperty", "cheesecake" } - }; - Realms.Sync.User functionUser = - await app.LogInAsync(Credentials.Function(functionParameters)); - Assert.AreEqual(UserState.LoggedIn, functionUser.State); - await functionUser.LogOutAsync(); - Realms.Sync.User jwtUser = - await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNhbGViIiwiaWF0IjoxNjAxNjc4ODcyLCJleHAiOjI1MTYyMzkwMjIsImF1ZCI6InR1dHMtdGlqeWEifQ.LHbeSI2FDWrlUVOBxe-rasuFiW-etv2Gu5e3eAa6Y6k")); - Assert.AreEqual(UserState.LoggedIn, jwtUser.State); - await jwtUser.LogOutAsync(); - try - { - Realms.Sync.User fbUser = - await app.LogInAsync(Credentials.Facebook("")); - } - catch (Exception e) - { - Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); - } - try - { - Realms.Sync.User googleUser = - await app.LogInAsync(Credentials.Google("")); - } - catch (Exception e) - { - Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); - } - try - { - Realms.Sync.User appleUser = - await app.LogInAsync(Credentials.Apple("")); - } - - catch (Exception e) - { - Assert.AreEqual("http error code considered fatal: Client Error: 401", e.Message); - } -} - - [TearDown] - public async System.Threading.Tasks.Task TearDown() - { - config = new SyncConfiguration("My Project", user); - Realm realm = await Realm.GetInstanceAsync(config); - realm.Write(() => - { - realm.RemoveAll(); - }); - await user.LogOutAsync(); - return; - } - } -} \ No newline at end of file From 91f7dae6b434aa01189524a1d6f35743a56a92b3 Mon Sep 17 00:00:00 2001 From: MongoCaleb Date: Tue, 6 Oct 2020 09:25:37 -0700 Subject: [PATCH 3/3] moar reviews --- examples/dotnet/Examples/Examples.cs | 36 ++++++++++++------- source/dotnet/authenticate.txt | 14 ++++---- .../code/start/Examples.codeblock.create.cs | 10 ++++++ .../start/Examples.codeblock.logon_API.cs | 2 +- .../code/start/Examples.codeblock.logon_EP.cs | 3 +- .../Examples.codeblock.logon_Function.cs | 2 +- .../start/Examples.codeblock.logon_JWT.cs | 2 +- .../start/Examples.codeblock.logon_apple.cs | 2 +- .../code/start/Examples.codeblock.logon_fb.cs | 2 +- .../start/Examples.codeblock.logon_google.cs | 2 +- ...amples.codeblock.open-synced-realm-sync.cs | 1 + .../code/start/Examples.codeblock.read-all.cs | 2 +- .../start/Examples.codeblock.read-some.cs | 2 +- .../examples/generated/code/start/Examples.cs | 32 ++++++++++------- 14 files changed, 70 insertions(+), 42 deletions(-) create mode 100644 source/examples/generated/code/start/Examples.codeblock.create.cs create mode 100644 source/examples/generated/code/start/Examples.codeblock.open-synced-realm-sync.cs diff --git a/examples/dotnet/Examples/Examples.cs b/examples/dotnet/Examples/Examples.cs index 2a15795b1b..08a0c080be 100644 --- a/examples/dotnet/Examples/Examples.cs +++ b/examples/dotnet/Examples/Examples.cs @@ -25,8 +25,12 @@ public async System.Threading.Tasks.Task Setup() user = app.LogInAsync(Credentials.EmailPassword("foo@foo.com", "foobar")).Result; config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); - // :code-block-stat: create - RealmTask testTask = new RealmTask() + // :code-block-end: + // :code-block-start: open-synced-realm-sync + Realm synchronousRealm = Realm.GetInstance(config); + // :code-block-end: + // :code-block-start: create + RealmTask testTask = new RealmTask { Name = "Do this thing", Status = TaskStatus.Open.ToString() @@ -52,13 +56,13 @@ public async System.Threading.Tasks.Task GetsSyncedTasks() Realm realm = await Realm.GetInstanceAsync(config); // :code-block-end: // :code-block-start: read-all - var tasks = realm.All().ToList(); + var tasks = realm.All(); // :code-block-end: - Assert.AreEqual(1, tasks.Count); + Assert.AreEqual(1, tasks.Count()); // :code-block-start: read-some - tasks = realm.All().Where(t => t.Status == "Open").ToList(); + tasks = realm.All().Where(t => t.Status == "Open"); // :code-block-end: - Assert.AreEqual(1, tasks.Count); + Assert.AreEqual(1, tasks.Count()); return; } @@ -94,12 +98,14 @@ public async System.Threading.Tasks.Task LogsOnManyWays() Assert.AreEqual(UserState.LoggedIn, anonUser.State); await anonUser.LogOutAsync(); // :code-block-start: logon_EP - User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); + User emailUser = await app.LogInAsync( + Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); // :code-block-end: Assert.AreEqual(UserState.LoggedIn, emailUser.State); await emailUser.LogOutAsync(); + var apiKey = "eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv"; // :code-block-start: logon_API - User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); + User apiUser = await app.LogInAsync(Credentials.ApiKey(apiKey)); // :code-block-end: Assert.AreEqual(UserState.LoggedIn, apiUser.State); await apiUser.LogOutAsync(); @@ -109,7 +115,7 @@ public async System.Threading.Tasks.Task LogsOnManyWays() username= "caleb", password = "shhhItsASektrit!", IQ = 42, - isCool = true + isCool = false }; User functionUser = @@ -117,17 +123,19 @@ public async System.Threading.Tasks.Task LogsOnManyWays() // :code-block-end: Assert.AreEqual(UserState.LoggedIn, functionUser.State); await functionUser.LogOutAsync(); + var jwt_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNhbGViIiwiaWF0IjoxNjAxNjc4ODcyLCJleHAiOjI1MTYyMzkwMjIsImF1ZCI6InR1dHMtdGlqeWEifQ.LHbeSI2FDWrlUVOBxe-rasuFiW-etv2Gu5e3eAa6Y6k"; // :code-block-start: logon_JWT User jwtUser = - await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.---.---")); + await app.LogInAsync(Credentials.JWT(jwt_token)); // :code-block-end: Assert.AreEqual(UserState.LoggedIn, jwtUser.State); await jwtUser.LogOutAsync(); try { + var facebookToken = ""; // :code-block-start: logon_fb User fbUser = - await app.LogInAsync(Credentials.Facebook("")); + await app.LogInAsync(Credentials.Facebook(facebookToken)); // :code-block-end: } catch (Exception e) @@ -136,9 +144,10 @@ public async System.Threading.Tasks.Task LogsOnManyWays() } try { + var googleAuthCode = ""; // :code-block-start: logon_google User googleUser = - await app.LogInAsync(Credentials.Google("")); + await app.LogInAsync(Credentials.Google(googleAuthCode)); // :code-block-end: } catch (Exception e) @@ -147,9 +156,10 @@ public async System.Threading.Tasks.Task LogsOnManyWays() } try { + var appleToken = ""; // :code-block-start: logon_apple User appleUser = - await app.LogInAsync(Credentials.Apple("")); + await app.LogInAsync(Credentials.Apple(appleToken)); // :code-block-end: } diff --git a/source/dotnet/authenticate.txt b/source/dotnet/authenticate.txt index 8331d086f7..b88c0be6d2 100644 --- a/source/dotnet/authenticate.txt +++ b/source/dotnet/authenticate.txt @@ -88,8 +88,8 @@ you can log in using the following code: .. _dotnet-login-api-key: -API Key -~~~~~~~ +API Key Authentication +~~~~~~~~~~~~~~~~~~~~~~ If you have enabled :ref:`API Key authentication `, you can log in using the following code: @@ -98,8 +98,8 @@ you can log in using the following code: .. _dotnet-login-custom-function: -Custom Function -~~~~~~~~~~~~~~~ +Custom Function Authentication +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you have enabled the :doc:`Custom Function authentication provider `, you can log in using the following code: @@ -109,8 +109,8 @@ you can log in using the following code: .. _dotnet-login-custom-jwt: -Custom JWT -~~~~~~~~~~ +Custom JWT Authentication +~~~~~~~~~~~~~~~~~~~~~~~~~ If you have enabled the :doc:`Custom JWT authentication provider `, you can log in using the following code: @@ -131,7 +131,7 @@ you can log in using the following code: .. _dotnet-login-google: Google Authentication -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~ If you have enabled :ref:`Google authentication `, you can log in using the following code: diff --git a/source/examples/generated/code/start/Examples.codeblock.create.cs b/source/examples/generated/code/start/Examples.codeblock.create.cs new file mode 100644 index 0000000000..324e4c8c49 --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.create.cs @@ -0,0 +1,10 @@ +RealmTask testTask = new RealmTask +{ + Name = "Do this thing", + Status = TaskStatus.Open.ToString() +}; + +realm.Write(() => +{ + realm.Add(testTask); +}); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_API.cs b/source/examples/generated/code/start/Examples.codeblock.logon_API.cs index bbf0e2ef2e..539fc8dab0 100644 --- a/source/examples/generated/code/start/Examples.codeblock.logon_API.cs +++ b/source/examples/generated/code/start/Examples.codeblock.logon_API.cs @@ -1 +1 @@ -User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); \ No newline at end of file +User apiUser = await app.LogInAsync(Credentials.ApiKey(apiKey)); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_EP.cs b/source/examples/generated/code/start/Examples.codeblock.logon_EP.cs index 22c388420f..b423aa7a52 100644 --- a/source/examples/generated/code/start/Examples.codeblock.logon_EP.cs +++ b/source/examples/generated/code/start/Examples.codeblock.logon_EP.cs @@ -1 +1,2 @@ -User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); \ No newline at end of file +User emailUser = await app.LogInAsync( + Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_Function.cs b/source/examples/generated/code/start/Examples.codeblock.logon_Function.cs index cb197b5bd8..f311f2eed2 100644 --- a/source/examples/generated/code/start/Examples.codeblock.logon_Function.cs +++ b/source/examples/generated/code/start/Examples.codeblock.logon_Function.cs @@ -3,7 +3,7 @@ username= "caleb", password = "shhhItsASektrit!", IQ = 42, - isCool = true + isCool = false }; User functionUser = diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_JWT.cs b/source/examples/generated/code/start/Examples.codeblock.logon_JWT.cs index 60e752a0a4..e6e915381b 100644 --- a/source/examples/generated/code/start/Examples.codeblock.logon_JWT.cs +++ b/source/examples/generated/code/start/Examples.codeblock.logon_JWT.cs @@ -1,2 +1,2 @@ User jwtUser = - await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.---.---")); \ No newline at end of file + await app.LogInAsync(Credentials.JWT(jwt_token)); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_apple.cs b/source/examples/generated/code/start/Examples.codeblock.logon_apple.cs index 515b6c6484..d025f2e529 100644 --- a/source/examples/generated/code/start/Examples.codeblock.logon_apple.cs +++ b/source/examples/generated/code/start/Examples.codeblock.logon_apple.cs @@ -1,2 +1,2 @@ User appleUser = - await app.LogInAsync(Credentials.Apple("")); \ No newline at end of file + await app.LogInAsync(Credentials.Apple(appleToken)); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_fb.cs b/source/examples/generated/code/start/Examples.codeblock.logon_fb.cs index a39e6ab8e7..b09ca006a1 100644 --- a/source/examples/generated/code/start/Examples.codeblock.logon_fb.cs +++ b/source/examples/generated/code/start/Examples.codeblock.logon_fb.cs @@ -1,2 +1,2 @@ User fbUser = - await app.LogInAsync(Credentials.Facebook("")); \ No newline at end of file + await app.LogInAsync(Credentials.Facebook(facebookToken)); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.logon_google.cs b/source/examples/generated/code/start/Examples.codeblock.logon_google.cs index 9f12d2c3fa..39c99723e2 100644 --- a/source/examples/generated/code/start/Examples.codeblock.logon_google.cs +++ b/source/examples/generated/code/start/Examples.codeblock.logon_google.cs @@ -1,2 +1,2 @@ User googleUser = - await app.LogInAsync(Credentials.Google("")); \ No newline at end of file + await app.LogInAsync(Credentials.Google(googleAuthCode)); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.open-synced-realm-sync.cs b/source/examples/generated/code/start/Examples.codeblock.open-synced-realm-sync.cs new file mode 100644 index 0000000000..ddd77b8a88 --- /dev/null +++ b/source/examples/generated/code/start/Examples.codeblock.open-synced-realm-sync.cs @@ -0,0 +1 @@ +Realm synchronousRealm = Realm.GetInstance(config); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.read-all.cs b/source/examples/generated/code/start/Examples.codeblock.read-all.cs index 25ba1e62b8..55e0215bb9 100644 --- a/source/examples/generated/code/start/Examples.codeblock.read-all.cs +++ b/source/examples/generated/code/start/Examples.codeblock.read-all.cs @@ -1 +1 @@ -var tasks = realm.All().ToList(); \ No newline at end of file +var tasks = realm.All(); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.codeblock.read-some.cs b/source/examples/generated/code/start/Examples.codeblock.read-some.cs index e8c315b518..957e45505b 100644 --- a/source/examples/generated/code/start/Examples.codeblock.read-some.cs +++ b/source/examples/generated/code/start/Examples.codeblock.read-some.cs @@ -1 +1 @@ -tasks = realm.All().Where(t => t.Status == "Open").ToList(); \ No newline at end of file +tasks = realm.All().Where(t => t.Status == "Open"); \ No newline at end of file diff --git a/source/examples/generated/code/start/Examples.cs b/source/examples/generated/code/start/Examples.cs index 07baa22089..4a0d64b5a5 100644 --- a/source/examples/generated/code/start/Examples.cs +++ b/source/examples/generated/code/start/Examples.cs @@ -23,8 +23,8 @@ public async System.Threading.Tasks.Task Setup() user = app.LogInAsync(Credentials.EmailPassword("foo@foo.com", "foobar")).Result; config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); - // :code-block-stat: create - RealmTask testTask = new RealmTask() + Realm synchronousRealm = Realm.GetInstance(config); + RealmTask testTask = new RealmTask { Name = "Do this thing", Status = TaskStatus.Open.ToString() @@ -44,10 +44,10 @@ public async System.Threading.Tasks.Task GetsSyncedTasks() User user = app.LogInAsync(Credentials.Anonymous()).Result; config = new SyncConfiguration("My Project", user); Realm realm = await Realm.GetInstanceAsync(config); - var tasks = realm.All().ToList(); - Assert.AreEqual(1, tasks.Count); - tasks = realm.All().Where(t => t.Status == "Open").ToList(); - Assert.AreEqual(1, tasks.Count); + var tasks = realm.All(); + Assert.AreEqual(1, tasks.Count()); + tasks = realm.All().Where(t => t.Status == "Open"); + Assert.AreEqual(1, tasks.Count()); return; } @@ -78,10 +78,12 @@ public async System.Threading.Tasks.Task LogsOnManyWays() User anonUser = await app.LogInAsync(Credentials.Anonymous()); Assert.AreEqual(UserState.LoggedIn, anonUser.State); await anonUser.LogOutAsync(); - User emailUser = await app.LogInAsync(Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); + User emailUser = await app.LogInAsync( + Credentials.EmailPassword("caleb@mongodb.com", "shhhItsASektrit!")); Assert.AreEqual(UserState.LoggedIn, emailUser.State); await emailUser.LogOutAsync(); - User apiUser = await app.LogInAsync(Credentials.ApiKey("eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv")); + var apiKey = "eRECwv1e6gkLEse99XokWOgegzoguEkwmvYvXk08zAucG4kXmZu7TTgV832SwFCv"; + User apiUser = await app.LogInAsync(Credentials.ApiKey(apiKey)); Assert.AreEqual(UserState.LoggedIn, apiUser.State); await apiUser.LogOutAsync(); var functionParameters = new @@ -89,21 +91,23 @@ public async System.Threading.Tasks.Task LogsOnManyWays() username= "caleb", password = "shhhItsASektrit!", IQ = 42, - isCool = true + isCool = false }; User functionUser = await app.LogInAsync(Credentials.Function(functionParameters)); Assert.AreEqual(UserState.LoggedIn, functionUser.State); await functionUser.LogOutAsync(); + var jwt_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNhbGViIiwiaWF0IjoxNjAxNjc4ODcyLCJleHAiOjI1MTYyMzkwMjIsImF1ZCI6InR1dHMtdGlqeWEifQ.LHbeSI2FDWrlUVOBxe-rasuFiW-etv2Gu5e3eAa6Y6k"; User jwtUser = - await app.LogInAsync(Credentials.JWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.---.---")); + await app.LogInAsync(Credentials.JWT(jwt_token)); Assert.AreEqual(UserState.LoggedIn, jwtUser.State); await jwtUser.LogOutAsync(); try { + var facebookToken = ""; User fbUser = - await app.LogInAsync(Credentials.Facebook("")); + await app.LogInAsync(Credentials.Facebook(facebookToken)); } catch (Exception e) { @@ -111,8 +115,9 @@ public async System.Threading.Tasks.Task LogsOnManyWays() } try { + var googleAuthCode = ""; User googleUser = - await app.LogInAsync(Credentials.Google("")); + await app.LogInAsync(Credentials.Google(googleAuthCode)); } catch (Exception e) { @@ -120,8 +125,9 @@ public async System.Threading.Tasks.Task LogsOnManyWays() } try { + var appleToken = ""; User appleUser = - await app.LogInAsync(Credentials.Apple("")); + await app.LogInAsync(Credentials.Apple(appleToken)); } catch (Exception e)