Special variables — raider 0.2.0a0 documentation

# Special variables

## _users

Setting this variable is required for Raider to run.

It should contain a list of dictionaries with the user credentials. For now only usernames and passwords are evaluated, but in future it will be used for other arbitrary user related information. This data gets converted into a `UserStore` object which provides a dictionary-like structure with `User` objects inside.

Example:

    (setv _users
       [{:username "user1"
         :password "s3cr3tP4ssWrd1"}
        {:username "user2"
         :password "s3cr3tP4ssWrd2"}])

## _authentication

This variable is required for Raider to run.

It should contain all of the authentication stages in Flow objects. You can define those stages separately as variables like in the tutorial, and include them all at the end in the `_authentication` variable.

Example:

    (setv _authentication
          [initialization
           login
           multi_factor
           #_ /])

Where each item in the list is a `Flow` object, and might look like this:

    (setv initialization
          (Flow
            :name "initialization"
            :request (Request
                       :method "GET"
                       :path "about")
            :outputs [csrf_token session_id]
            :operations [(Print csrf_token session_id)
                         (Http
                           :status 200
                           :action
                           (NextStage "login")
                           :otherwise
                           (Error "Cannot initialize session"))]))

## _base_url

This variable is optional.

Setting `base_url` will enable a shortcut for writing new `Request` objects. When enabled, the Requests can be created using `:path` instead of `:url`

## _functions

This variable is optional.

It works similarly to the _authentication variable, but it includes only the Flows which don’t affect the authentication process.