# LightDMMock
A LightDM Mock that is written in modern JavaScript and based on [cytodev](https://github.com/cytodev)'s [LightDMMock](https://github.com/cytodev/LightDMMock), the lightdm-webkit2-greeter [manual](https://man.archlinux.org/man/community/lightdm-webkit2-greeter/lightdm-webkit2-greeter.1.en), the [LightDM API documentation](https://people.ubuntu.com/~robert-ancell/lightdm/reference/), and the latest version of [Antergos](https://github.com/Antergos)' lightdm-webkit2-greeter [source code](https://github.com/Antergos/web-greeter). Please note that the deprecation errors are intrusive for a reason.
## Usage
1. Clone the repo
```bash
git clone https://git.sfs.ddnss.org/EliasSchriefer/LightDMMock
```
2. Set the type of your JavaScript to `module` in your theme that needs mocking
```html
```
```html
```
3. Import `LightDMMock` and create a new instance
```javascript
import LightDMMock from "LightDMMock/src/LightDMMock.js";
window.lightdm = new LightDMMock(autofill, timeout, autoGuest);
```
## Note
If you plan on using the `.face` files in the mock you have to include the path to `LightDMMock/src`. The `.face` files linked in `users.json` are absolute links to `/home/[username]/.face`.
## Parameters of `LightDMMock()`
> **autofill**: `boolean`
>
> Whether or not the arrays for users, languages, layouts, and sessions need to be filled with mock data. I advise to test both to make your theme less prone to crashing.
>
> **timeout**: `number`
>
> Value to use for simulated autologin (this value is in seconds).
>
> **autoGuest**: `boolean`
>
> Whether or not to simulate automatic guest login. This will also enable a guest account in `lightdm.has_guest_account`.
---
### A friendly reminder
The following functions **must** be provided by the custom greeter, which LightDM will call in the process of authenticating the user. This can be found in the original documentation (man pages) of the webkit-greeter, but I have posted them here for your convenience.
> **show_prompt(text, type)**
>
> This will be called when LightDM needs to prompt the user for some reason, such
> as asking for a password. The "text" parameter will be the text of the prompt,
> and the "type" parameter will either be "text" for a visible prompt, or
> "password" for a prompt that the input should be hidden.
>
> **show_message(text, type)**
>
> This will be called when LightDM needs to display some info for the user. The
> "text" parameter will be the text of the message, and the "type" parameter will
> either be "info" for an information message, or "error" for an error message
> that LightDM has encountered.
>
> **authentication_complete()**
>
> This function is called by LightDM when authentication has completed.
>
> **autologin_timer_expired()**
>
> This function is called by LightDM when an autologin user's login timer has
> expired. The greeter should reset the authentication process.
### License
This project is licensed under the MIT License. You can find a copy of the license [here](https://git.sfs.ddnss.org/EliasSchriefer/LightDMMock/license.md).
### Contributions
You are more than welcome to submit issues as well as feature requests or just a 'how-ya-doin' in the [issue tracker](https://git.sfs.ddnss.org/EliasSchriefer/LightDMMock/issues/new). Contributing to the project can be done by forking it and submitting a pull request once it's all tested and tidy.