evennia/docs/versions/0.9.1/_modules/evennia/accounts/tests.html
2020-06-13 00:15:39 +02:00

540 lines
No EOL
81 KiB
HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>evennia.accounts.tests &#8212; Evennia 0.9.1 documentation</title>
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/language_data.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for evennia.accounts.tests</h1><div class="highlight"><pre>
<span></span><span class="c1"># -*- coding: utf-8 -*-</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">from</span> <span class="nn">mock</span> <span class="k">import</span> <span class="n">Mock</span><span class="p">,</span> <span class="n">MagicMock</span><span class="p">,</span> <span class="n">patch</span>
<span class="kn">from</span> <span class="nn">random</span> <span class="k">import</span> <span class="n">randint</span>
<span class="kn">from</span> <span class="nn">unittest</span> <span class="k">import</span> <span class="n">TestCase</span>
<span class="kn">from</span> <span class="nn">django.test</span> <span class="k">import</span> <span class="n">override_settings</span>
<span class="kn">from</span> <span class="nn">evennia.accounts.accounts</span> <span class="k">import</span> <span class="n">AccountSessionHandler</span>
<span class="kn">from</span> <span class="nn">evennia.accounts.accounts</span> <span class="k">import</span> <span class="n">DefaultAccount</span><span class="p">,</span> <span class="n">DefaultGuest</span>
<span class="kn">from</span> <span class="nn">evennia.utils.test_resources</span> <span class="k">import</span> <span class="n">EvenniaTest</span>
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">create</span>
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">uses_database</span>
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
<div class="viewcode-block" id="TestAccountSessionHandler"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestAccountSessionHandler">[docs]</a><span class="k">class</span> <span class="nc">TestAccountSessionHandler</span><span class="p">(</span><span class="n">TestCase</span><span class="p">):</span>
<span class="s2">&quot;Check AccountSessionHandler class&quot;</span>
<div class="viewcode-block" id="TestAccountSessionHandler.setUp"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestAccountSessionHandler.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span>
<span class="n">f</span><span class="s2">&quot;TestAccount{randint(0, 999999)}&quot;</span><span class="p">,</span>
<span class="n">email</span><span class="o">=</span><span class="s2">&quot;test@test.com&quot;</span><span class="p">,</span>
<span class="n">password</span><span class="o">=</span><span class="s2">&quot;testpassword&quot;</span><span class="p">,</span>
<span class="n">typeclass</span><span class="o">=</span><span class="n">DefaultAccount</span><span class="p">,</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span> <span class="o">=</span> <span class="n">AccountSessionHandler</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestAccountSessionHandler.tearDown"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestAccountSessionHandler.tearDown">[docs]</a> <span class="k">def</span> <span class="nf">tearDown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;account&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span></div>
<div class="viewcode-block" id="TestAccountSessionHandler.test_get"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestAccountSessionHandler.test_get">[docs]</a> <span class="k">def</span> <span class="nf">test_get</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check get method&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">get</span><span class="p">(),</span> <span class="p">[])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> <span class="p">[])</span>
<span class="kn">import</span> <span class="nn">evennia.server.sessionhandler</span>
<span class="n">s1</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
<span class="n">s1</span><span class="o">.</span><span class="n">logged_in</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">s1</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">uid</span>
<span class="n">evennia</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSIONS</span><span class="p">[</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span> <span class="o">=</span> <span class="n">s1</span>
<span class="n">s2</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
<span class="n">s2</span><span class="o">.</span><span class="n">logged_in</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">s2</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">uid</span> <span class="o">+</span> <span class="mi">1</span>
<span class="n">evennia</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSIONS</span><span class="p">[</span><span class="n">s2</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span> <span class="o">=</span> <span class="n">s2</span>
<span class="n">s3</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
<span class="n">s3</span><span class="o">.</span><span class="n">logged_in</span> <span class="o">=</span> <span class="kc">False</span>
<span class="n">s3</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">uid</span> <span class="o">+</span> <span class="mi">2</span>
<span class="n">evennia</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSIONS</span><span class="p">[</span><span class="n">s3</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span> <span class="o">=</span> <span class="n">s3</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">([</span><span class="n">s</span><span class="o">.</span><span class="n">uid</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">get</span><span class="p">()],</span> <span class="p">[</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">([</span><span class="n">s</span><span class="o">.</span><span class="n">uid</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">uid</span><span class="p">)]],</span> <span class="p">[</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">([</span><span class="n">s</span><span class="o">.</span><span class="n">uid</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">uid</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)],</span> <span class="p">[])</span></div>
<div class="viewcode-block" id="TestAccountSessionHandler.test_all"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestAccountSessionHandler.test_all">[docs]</a> <span class="k">def</span> <span class="nf">test_all</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check all method&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">get</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">all</span><span class="p">())</span></div>
<div class="viewcode-block" id="TestAccountSessionHandler.test_count"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestAccountSessionHandler.test_count">[docs]</a> <span class="k">def</span> <span class="nf">test_count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check count method&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">count</span><span class="p">(),</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">get</span><span class="p">()))</span></div></div>
<div class="viewcode-block" id="TestDefaultGuest"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultGuest">[docs]</a><span class="nd">@override_settings</span><span class="p">(</span><span class="n">GUEST_ENABLED</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">GUEST_LIST</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;bruce_wayne&quot;</span><span class="p">])</span>
<span class="k">class</span> <span class="nc">TestDefaultGuest</span><span class="p">(</span><span class="n">EvenniaTest</span><span class="p">):</span>
<span class="s2">&quot;Check DefaultGuest class&quot;</span>
<span class="n">ip</span> <span class="o">=</span> <span class="s2">&quot;212.216.134.22&quot;</span>
<div class="viewcode-block" id="TestDefaultGuest.test_create_not_enabled"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultGuest.test_create_not_enabled">[docs]</a> <span class="nd">@override_settings</span><span class="p">(</span><span class="n">GUEST_ENABLED</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">test_create_not_enabled</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># Guest account should not be permitted</span>
<span class="n">account</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultGuest</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="n">ip</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ip</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">&quot;Guest account was created despite being disabled.&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultGuest.test_authenticate"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultGuest.test_authenticate">[docs]</a> <span class="k">def</span> <span class="nf">test_authenticate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># Create a guest account</span>
<span class="n">account</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultGuest</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="n">ip</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ip</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">&quot;Guest account should have been created.&quot;</span><span class="p">)</span>
<span class="c1"># Create a second guest account</span>
<span class="n">account</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultGuest</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="n">ip</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ip</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span>
<span class="n">account</span><span class="p">,</span> <span class="s2">&quot;Two guest accounts were created with a single entry on the guest list!&quot;</span>
<span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultGuest.test_create"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultGuest.test_create">[docs]</a> <span class="nd">@patch</span><span class="p">(</span><span class="s2">&quot;evennia.accounts.accounts.ChannelDB.objects.get_channel&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">test_create</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">get_channel</span><span class="p">):</span>
<span class="n">get_channel</span><span class="o">.</span><span class="n">connect</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">with</span> <span class="n">override_settings</span><span class="p">(</span><span class="n">GUEST_HOME</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">room1</span><span class="o">.</span><span class="n">dbref</span><span class="p">):</span>
<span class="n">account</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultGuest</span><span class="o">.</span><span class="n">create</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">&quot;Guest account should have been created.&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultGuest.test_at_post_login"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultGuest.test_at_post_login">[docs]</a> <span class="k">def</span> <span class="nf">test_at_post_login</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">char1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">at_post_login</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">at_post_login</span><span class="p">()</span></div>
<div class="viewcode-block" id="TestDefaultGuest.test_at_server_shutdown"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultGuest.test_at_server_shutdown">[docs]</a> <span class="k">def</span> <span class="nf">test_at_server_shutdown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">account</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultGuest</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">ip</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ip</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">delete</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">]</span>
<span class="n">account</span><span class="o">.</span><span class="n">at_server_shutdown</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">delete</span><span class="o">.</span><span class="n">assert_called</span><span class="p">()</span></div>
<div class="viewcode-block" id="TestDefaultGuest.test_at_post_disconnect"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultGuest.test_at_post_disconnect">[docs]</a> <span class="k">def</span> <span class="nf">test_at_post_disconnect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">account</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultGuest</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">ip</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ip</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">delete</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">]</span>
<span class="n">account</span><span class="o">.</span><span class="n">at_post_disconnect</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">delete</span><span class="o">.</span><span class="n">assert_called</span><span class="p">()</span></div></div>
<div class="viewcode-block" id="TestDefaultAccountAuth"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountAuth">[docs]</a><span class="k">class</span> <span class="nc">TestDefaultAccountAuth</span><span class="p">(</span><span class="n">EvenniaTest</span><span class="p">):</span>
<div class="viewcode-block" id="TestDefaultAccountAuth.setUp"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountAuth.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">TestDefaultAccountAuth</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">setUp</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="s2">&quot;testpassword&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span>
<span class="n">f</span><span class="s2">&quot;TestAccount{randint(100000, 999999)}&quot;</span><span class="p">,</span>
<span class="n">email</span><span class="o">=</span><span class="s2">&quot;test@test.com&quot;</span><span class="p">,</span>
<span class="n">password</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">password</span><span class="p">,</span>
<span class="n">typeclass</span><span class="o">=</span><span class="n">DefaultAccount</span><span class="p">,</span>
<span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccountAuth.test_authentication"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountAuth.test_authentication">[docs]</a> <span class="k">def</span> <span class="nf">test_authentication</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Confirm Account authentication method is authenticating/denying users.&quot;</span>
<span class="c1"># Valid credentials</span>
<span class="n">obj</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultAccount</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">password</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">&quot;Account did not authenticate given valid credentials.&quot;</span><span class="p">)</span>
<span class="c1"># Invalid credentials</span>
<span class="n">obj</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultAccount</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="s2">&quot;xyzzy&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">&quot;Account authenticated using invalid credentials.&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccountAuth.test_create"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountAuth.test_create">[docs]</a> <span class="k">def</span> <span class="nf">test_create</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Confirm Account creation is working as expected.&quot;</span>
<span class="c1"># Create a normal account</span>
<span class="n">account</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultAccount</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">username</span><span class="o">=</span><span class="s2">&quot;ziggy&quot;</span><span class="p">,</span> <span class="n">password</span><span class="o">=</span><span class="s2">&quot;stardust11&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">&quot;New account should have been created.&quot;</span><span class="p">)</span>
<span class="c1"># Try creating a duplicate account</span>
<span class="n">account2</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultAccount</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">username</span><span class="o">=</span><span class="s2">&quot;Ziggy&quot;</span><span class="p">,</span> <span class="n">password</span><span class="o">=</span><span class="s2">&quot;starman11&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">account2</span><span class="p">,</span> <span class="s2">&quot;Duplicate account name should not have been allowed.&quot;</span><span class="p">)</span>
<span class="n">account</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span></div>
<div class="viewcode-block" id="TestDefaultAccountAuth.test_throttle"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountAuth.test_throttle">[docs]</a> <span class="k">def</span> <span class="nf">test_throttle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Confirm throttle activates on too many failures.&quot;</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">20</span><span class="p">):</span>
<span class="n">obj</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">DefaultAccount</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="s2">&quot;xyzzy&quot;</span><span class="p">,</span> <span class="n">ip</span><span class="o">=</span><span class="s2">&quot;12.24.36.48&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span>
<span class="n">obj</span><span class="p">,</span>
<span class="s2">&quot;Authentication was provided a bogus password; this should NOT have returned an account!&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span>
<span class="s2">&quot;too many login failures&quot;</span> <span class="ow">in</span> <span class="n">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span>
<span class="s2">&quot;Failed logins should have been throttled.&quot;</span><span class="p">,</span>
<span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccountAuth.test_username_validation"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountAuth.test_username_validation">[docs]</a> <span class="k">def</span> <span class="nf">test_username_validation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check username validators deny relevant usernames&quot;</span>
<span class="c1"># Should not accept Unicode by default, lest users pick names like this</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">uses_database</span><span class="p">(</span><span class="s2">&quot;mysql&quot;</span><span class="p">):</span>
<span class="c1"># TODO As of Mar 2019, mysql does not pass this test due to collation problems</span>
<span class="c1"># that has not been possible to resolve</span>
<span class="n">result</span><span class="p">,</span> <span class="n">error</span> <span class="o">=</span> <span class="n">DefaultAccount</span><span class="o">.</span><span class="n">validate_username</span><span class="p">(</span><span class="s2">&quot;¯\_(ツ)_/¯&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="s2">&quot;Validator allowed kanji in username.&quot;</span><span class="p">)</span>
<span class="c1"># Should not allow duplicate username</span>
<span class="n">result</span><span class="p">,</span> <span class="n">error</span> <span class="o">=</span> <span class="n">DefaultAccount</span><span class="o">.</span><span class="n">validate_username</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="s2">&quot;Duplicate username should not have passed validation.&quot;</span><span class="p">)</span>
<span class="c1"># Should not allow username too short</span>
<span class="n">result</span><span class="p">,</span> <span class="n">error</span> <span class="o">=</span> <span class="n">DefaultAccount</span><span class="o">.</span><span class="n">validate_username</span><span class="p">(</span><span class="s2">&quot;xx&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="s2">&quot;2-character username passed validation.&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccountAuth.test_password_validation"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountAuth.test_password_validation">[docs]</a> <span class="k">def</span> <span class="nf">test_password_validation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check password validators deny bad passwords&quot;</span>
<span class="n">account</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span>
<span class="n">f</span><span class="s2">&quot;TestAccount{randint(100000, 999999)}&quot;</span><span class="p">,</span>
<span class="n">email</span><span class="o">=</span><span class="s2">&quot;test@test.com&quot;</span><span class="p">,</span>
<span class="n">password</span><span class="o">=</span><span class="s2">&quot;testpassword&quot;</span><span class="p">,</span>
<span class="n">typeclass</span><span class="o">=</span><span class="n">DefaultAccount</span><span class="p">,</span>
<span class="p">)</span>
<span class="k">for</span> <span class="n">bad</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;123&quot;</span><span class="p">,</span> <span class="s2">&quot;password&quot;</span><span class="p">,</span> <span class="s2">&quot;TestAccount&quot;</span><span class="p">,</span> <span class="s2">&quot;#&quot;</span><span class="p">,</span> <span class="s2">&quot;xyzzy&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">validate_password</span><span class="p">(</span><span class="n">bad</span><span class="p">,</span> <span class="n">account</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
<span class="s2">&quot;Check validators allow sufficiently complex passwords&quot;</span>
<span class="k">for</span> <span class="n">better</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;Mxyzptlk&quot;</span><span class="p">,</span> <span class="s2">&quot;j0hn, i&#39;M 0n1y d4nc1nG&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">validate_password</span><span class="p">(</span><span class="n">better</span><span class="p">,</span> <span class="n">account</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">account</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span></div>
<div class="viewcode-block" id="TestDefaultAccountAuth.test_password_change"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountAuth.test_password_change">[docs]</a> <span class="k">def</span> <span class="nf">test_password_change</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check password setting and validation is working as expected&quot;</span>
<span class="n">account</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span>
<span class="n">f</span><span class="s2">&quot;TestAccount{randint(100000, 999999)}&quot;</span><span class="p">,</span>
<span class="n">email</span><span class="o">=</span><span class="s2">&quot;test@test.com&quot;</span><span class="p">,</span>
<span class="n">password</span><span class="o">=</span><span class="s2">&quot;testpassword&quot;</span><span class="p">,</span>
<span class="n">typeclass</span><span class="o">=</span><span class="n">DefaultAccount</span><span class="p">,</span>
<span class="p">)</span>
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">ValidationError</span>
<span class="c1"># Try setting some bad passwords</span>
<span class="k">for</span> <span class="n">bad</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;#&quot;</span><span class="p">,</span> <span class="s2">&quot;TestAccount&quot;</span><span class="p">,</span> <span class="s2">&quot;password&quot;</span><span class="p">):</span>
<span class="n">valid</span><span class="p">,</span> <span class="n">error</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">validate_password</span><span class="p">(</span><span class="n">bad</span><span class="p">,</span> <span class="n">account</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">valid</span><span class="p">)</span>
<span class="c1"># Try setting a better password (test for False; returns None on success)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">set_password</span><span class="p">(</span><span class="s2">&quot;Mxyzptlk&quot;</span><span class="p">))</span>
<span class="n">account</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span></div></div>
<div class="viewcode-block" id="TestDefaultAccount"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccount">[docs]</a><span class="k">class</span> <span class="nc">TestDefaultAccount</span><span class="p">(</span><span class="n">TestCase</span><span class="p">):</span>
<span class="s2">&quot;Check DefaultAccount class&quot;</span>
<div class="viewcode-block" id="TestDefaultAccount.setUp"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccount.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">puppet</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">sessid</span> <span class="o">=</span> <span class="mi">0</span></div>
<div class="viewcode-block" id="TestDefaultAccount.test_puppet_object_no_object"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_no_object">[docs]</a> <span class="k">def</span> <span class="nf">test_puppet_object_no_object</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check puppet_object method called with no object param&quot;</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">DefaultAccount</span><span class="p">()</span><span class="o">.</span><span class="n">puppet_object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fail</span><span class="p">(</span><span class="s2">&quot;Expected error: &#39;Object not found&#39;&quot;</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">RuntimeError</span> <span class="k">as</span> <span class="n">re</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="s2">&quot;Object not found&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">re</span><span class="p">))</span></div>
<div class="viewcode-block" id="TestDefaultAccount.test_puppet_object_no_session"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_no_session">[docs]</a> <span class="k">def</span> <span class="nf">test_puppet_object_no_session</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check puppet_object method called with no session param&quot;</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">DefaultAccount</span><span class="p">()</span><span class="o">.</span><span class="n">puppet_object</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">Mock</span><span class="p">())</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fail</span><span class="p">(</span><span class="s2">&quot;Expected error: &#39;Session not found&#39;&quot;</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">RuntimeError</span> <span class="k">as</span> <span class="n">re</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="s2">&quot;Session not found&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">re</span><span class="p">))</span></div>
<div class="viewcode-block" id="TestDefaultAccount.test_puppet_object_already_puppeting"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_already_puppeting">[docs]</a> <span class="k">def</span> <span class="nf">test_puppet_object_already_puppeting</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check puppet_object method called, already puppeting this&quot;</span>
<span class="kn">import</span> <span class="nn">evennia.server.sessionhandler</span>
<span class="n">account</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span>
<span class="n">f</span><span class="s2">&quot;TestAccount{randint(0, 999999)}&quot;</span><span class="p">,</span>
<span class="n">email</span><span class="o">=</span><span class="s2">&quot;test@test.com&quot;</span><span class="p">,</span>
<span class="n">password</span><span class="o">=</span><span class="s2">&quot;testpassword&quot;</span><span class="p">,</span>
<span class="n">typeclass</span><span class="o">=</span><span class="n">DefaultAccount</span><span class="p">,</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">uid</span>
<span class="n">evennia</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSIONS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">s1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">logged_in</span> <span class="o">=</span> <span class="kc">True</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">data_out</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">puppet</span> <span class="o">=</span> <span class="n">obj</span>
<span class="n">account</span><span class="o">.</span><span class="n">puppet_object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="p">,</span> <span class="n">obj</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">data_out</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
<span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">&quot;You are already puppeting this object.&quot;</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">at_post_puppet</span><span class="o">.</span><span class="n">call_args</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccount.test_puppet_object_no_permission"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_no_permission">[docs]</a> <span class="k">def</span> <span class="nf">test_puppet_object_no_permission</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check puppet_object method called, no permission&quot;</span>
<span class="kn">import</span> <span class="nn">evennia.server.sessionhandler</span>
<span class="n">account</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span>
<span class="n">f</span><span class="s2">&quot;TestAccount{randint(0, 999999)}&quot;</span><span class="p">,</span>
<span class="n">email</span><span class="o">=</span><span class="s2">&quot;test@test.com&quot;</span><span class="p">,</span>
<span class="n">password</span><span class="o">=</span><span class="s2">&quot;testpassword&quot;</span><span class="p">,</span>
<span class="n">typeclass</span><span class="o">=</span><span class="n">DefaultAccount</span><span class="p">,</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">uid</span>
<span class="n">evennia</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSIONS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">s1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">data_out</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">()</span>
<span class="n">obj</span><span class="o">.</span><span class="n">access</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="n">account</span><span class="o">.</span><span class="n">puppet_object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="p">,</span> <span class="n">obj</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">data_out</span><span class="o">.</span><span class="n">call_args</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="s2">&quot;text&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;You don&#39;t have permission to puppet&quot;</span><span class="p">)</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">at_post_puppet</span><span class="o">.</span><span class="n">call_args</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccount.test_puppet_object_joining_other_session"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_joining_other_session">[docs]</a> <span class="nd">@override_settings</span><span class="p">(</span><span class="n">MULTISESSION_MODE</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">test_puppet_object_joining_other_session</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check puppet_object method called, joining other session&quot;</span>
<span class="kn">import</span> <span class="nn">evennia.server.sessionhandler</span>
<span class="n">account</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span>
<span class="n">f</span><span class="s2">&quot;TestAccount{randint(0, 999999)}&quot;</span><span class="p">,</span>
<span class="n">email</span><span class="o">=</span><span class="s2">&quot;test@test.com&quot;</span><span class="p">,</span>
<span class="n">password</span><span class="o">=</span><span class="s2">&quot;testpassword&quot;</span><span class="p">,</span>
<span class="n">typeclass</span><span class="o">=</span><span class="n">DefaultAccount</span><span class="p">,</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">uid</span>
<span class="n">evennia</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSIONS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">s1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">puppet</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">logged_in</span> <span class="o">=</span> <span class="kc">True</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">data_out</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">()</span>
<span class="n">obj</span><span class="o">.</span><span class="n">access</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">obj</span><span class="o">.</span><span class="n">account</span> <span class="o">=</span> <span class="n">account</span>
<span class="n">obj</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">all</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="p">])</span>
<span class="n">account</span><span class="o">.</span><span class="n">puppet_object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="p">,</span> <span class="n">obj</span><span class="p">)</span>
<span class="c1"># works because django.conf.settings.MULTISESSION_MODE is not in (1, 3)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">data_out</span><span class="o">.</span><span class="n">call_args</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="s2">&quot;text&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;from another of your sessions.|n&quot;</span><span class="p">)</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">at_post_puppet</span><span class="o">.</span><span class="n">call_args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="p">{})</span></div>
<div class="viewcode-block" id="TestDefaultAccount.test_puppet_object_already_puppeted"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_already_puppeted">[docs]</a> <span class="k">def</span> <span class="nf">test_puppet_object_already_puppeted</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Check puppet_object method called, already puppeted&quot;</span>
<span class="kn">import</span> <span class="nn">evennia.server.sessionhandler</span>
<span class="n">account</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span>
<span class="n">f</span><span class="s2">&quot;TestAccount{randint(0, 999999)}&quot;</span><span class="p">,</span>
<span class="n">email</span><span class="o">=</span><span class="s2">&quot;test@test.com&quot;</span><span class="p">,</span>
<span class="n">password</span><span class="o">=</span><span class="s2">&quot;testpassword&quot;</span><span class="p">,</span>
<span class="n">typeclass</span><span class="o">=</span><span class="n">DefaultAccount</span><span class="p">,</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span> <span class="o">=</span> <span class="n">account</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">uid</span>
<span class="n">evennia</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSIONS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">uid</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">s1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">puppet</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">logged_in</span> <span class="o">=</span> <span class="kc">True</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">data_out</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">()</span>
<span class="n">obj</span><span class="o">.</span><span class="n">access</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">obj</span><span class="o">.</span><span class="n">account</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">()</span>
<span class="n">obj</span><span class="o">.</span><span class="n">at_post_puppet</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">()</span>
<span class="n">account</span><span class="o">.</span><span class="n">puppet_object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="p">,</span> <span class="n">obj</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">s1</span><span class="o">.</span><span class="n">data_out</span><span class="o">.</span><span class="n">call_args</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="s2">&quot;text&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span>
<span class="s2">&quot;is already puppeted by another Account.&quot;</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNone</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">at_post_puppet</span><span class="o">.</span><span class="n">call_args</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="TestAccountPuppetDeletion"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestAccountPuppetDeletion">[docs]</a><span class="k">class</span> <span class="nc">TestAccountPuppetDeletion</span><span class="p">(</span><span class="n">EvenniaTest</span><span class="p">):</span>
<div class="viewcode-block" id="TestAccountPuppetDeletion.test_puppet_deletion"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestAccountPuppetDeletion.test_puppet_deletion">[docs]</a> <span class="nd">@override_settings</span><span class="p">(</span><span class="n">MULTISESSION_MODE</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">test_puppet_deletion</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># Check for existing chars</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="p">,</span> <span class="s2">&quot;Account should not have any chars by default.&quot;</span>
<span class="p">)</span>
<span class="c1"># Add char1 to account&#39;s playable characters</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="p">,</span> <span class="s2">&quot;Char was not added to account.&quot;</span><span class="p">)</span>
<span class="c1"># See what happens when we delete char1.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
<span class="c1"># Playable char list should be empty.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="p">,</span>
<span class="n">f</span><span class="s2">&quot;Playable character list is not empty! </span><span class="si">{self.account.db._playable_characters}</span><span class="s2">&quot;</span><span class="p">,</span>
<span class="p">)</span></div></div>
<div class="viewcode-block" id="TestDefaultAccountEv"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountEv">[docs]</a><span class="k">class</span> <span class="nc">TestDefaultAccountEv</span><span class="p">(</span><span class="n">EvenniaTest</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Testing using the EvenniaTest parent</span>
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="TestDefaultAccountEv.test_characters_property"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountEv.test_characters_property">[docs]</a> <span class="k">def</span> <span class="nf">test_characters_property</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;test existence of None in _playable_characters Attr&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span>
<span class="n">chars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">characters</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">chars</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">])</span></div>
<div class="viewcode-block" id="TestDefaultAccountEv.test_puppet_success"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountEv.test_puppet_success">[docs]</a> <span class="k">def</span> <span class="nf">test_puppet_success</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
<span class="k">with</span> <span class="n">patch</span><span class="p">(</span><span class="s2">&quot;evennia.accounts.accounts._MULTISESSION_MODE&quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">puppet_object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span><span class="s2">&quot;You are already puppeting this object.&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccountEv.test_idle_time"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountEv.test_idle_time">[docs]</a> <span class="nd">@patch</span><span class="p">(</span><span class="s2">&quot;evennia.accounts.accounts.time.time&quot;</span><span class="p">,</span> <span class="n">return_value</span><span class="o">=</span><span class="mi">10000</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">test_idle_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mock_time</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">cmd_last_visible</span> <span class="o">=</span> <span class="mi">10000</span> <span class="o">-</span> <span class="mi">10</span>
<span class="n">idle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">idle_time</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">idle</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
<span class="c1"># test no sessions</span>
<span class="k">with</span> <span class="n">patch</span><span class="p">(</span>
<span class="s2">&quot;evennia.accounts.accounts._SESSIONS.sessions_from_account&quot;</span><span class="p">,</span> <span class="n">return_value</span><span class="o">=</span><span class="p">[]</span>
<span class="p">)</span> <span class="k">as</span> <span class="n">mock_sessh</span><span class="p">:</span>
<span class="n">idle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">idle_time</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">idle</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccountEv.test_connection_time"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountEv.test_connection_time">[docs]</a> <span class="nd">@patch</span><span class="p">(</span><span class="s2">&quot;evennia.accounts.accounts.time.time&quot;</span><span class="p">,</span> <span class="n">return_value</span><span class="o">=</span><span class="mi">10000</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">test_connection_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mock_time</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">conn_time</span> <span class="o">=</span> <span class="mi">10000</span> <span class="o">-</span> <span class="mi">10</span>
<span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">connection_time</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
<span class="c1"># test no sessions</span>
<span class="k">with</span> <span class="n">patch</span><span class="p">(</span>
<span class="s2">&quot;evennia.accounts.accounts._SESSIONS.sessions_from_account&quot;</span><span class="p">,</span> <span class="n">return_value</span><span class="o">=</span><span class="p">[]</span>
<span class="p">)</span> <span class="k">as</span> <span class="n">mock_sessh</span><span class="p">:</span>
<span class="n">idle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">connection_time</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">idle</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccountEv.test_create_account"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountEv.test_create_account">[docs]</a> <span class="k">def</span> <span class="nf">test_create_account</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">acct</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">account</span><span class="p">(</span>
<span class="s2">&quot;TestAccount3&quot;</span><span class="p">,</span>
<span class="s2">&quot;test@test.com&quot;</span><span class="p">,</span>
<span class="s2">&quot;testpassword123&quot;</span><span class="p">,</span>
<span class="n">locks</span><span class="o">=</span><span class="s2">&quot;test:all()&quot;</span><span class="p">,</span>
<span class="n">tags</span><span class="o">=</span><span class="p">[(</span><span class="s2">&quot;tag1&quot;</span><span class="p">,</span> <span class="s2">&quot;category1&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;tag2&quot;</span><span class="p">,</span> <span class="s2">&quot;category2&quot;</span><span class="p">,</span> <span class="s2">&quot;data1&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;tag3&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)],</span>
<span class="n">attributes</span><span class="o">=</span><span class="p">[(</span><span class="s2">&quot;key1&quot;</span><span class="p">,</span> <span class="s2">&quot;value1&quot;</span><span class="p">,</span> <span class="s2">&quot;category1&quot;</span><span class="p">,</span> <span class="s2">&quot;edit:false()&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;key2&quot;</span><span class="p">,</span> <span class="s2">&quot;value2&quot;</span><span class="p">)],</span>
<span class="p">)</span>
<span class="n">acct</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">acct</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccountEv.test_at_look"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountEv.test_at_look">[docs]</a> <span class="k">def</span> <span class="nf">test_at_look</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">at_look</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="s2">&quot;Out-of-Character&quot;</span> <span class="ow">in</span> <span class="n">ret</span><span class="p">)</span>
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">at_look</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">obj1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="s2">&quot;Obj&quot;</span> <span class="ow">in</span> <span class="n">ret</span><span class="p">)</span>
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">at_look</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="s2">&quot;*&quot;</span> <span class="ow">in</span> <span class="n">ret</span><span class="p">)</span> <span class="c1"># * marks session is active in list</span>
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">at_look</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">obj1</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="s2">&quot;Obj&quot;</span> <span class="ow">in</span> <span class="n">ret</span><span class="p">)</span>
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">at_look</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="s2">&quot;Invalid&quot;</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="s2">&quot;Invalid has no in-game appearance.&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="TestDefaultAccountEv.test_msg"><a class="viewcode-back" href="../../../api/evennia.accounts.html#evennia.accounts.tests.TestDefaultAccountEv.test_msg">[docs]</a> <span class="k">def</span> <span class="nf">test_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">msg</span></div></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script><div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../../../index.html">Documentation overview</a><ul>
<li><a href="../../index.html">Module code</a><ul>
<li><a href="../../evennia.html">evennia</a><ul>
</ul></li>
</ul></li>
</ul></li>
</ul>
</div>
<h3>Versions</h3>
<ul>
<li><a href="../../../../../versions/1.0-dev/index.html">1.0-dev (develop branch)</a></li>
<li><a href="tests.html">0.9.1 (master branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2020, The Evennia developer community.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.4.4</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>