---
name: "GitLab::API::v4::Mock::Engine"
section: "3pm"
platform: "linux"
package: "libgitlab-api-v4-perl"
version: "0.27-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/GitLab::API::v4::Mock::Engine"
---

# GitLab::API::v4::Mock::Engine(3pm)

Mocking the internals of a GitLab server.

## NAME

GitLab::API::v4::Mock::Engine - Mocking the internals of a GitLab server.

## SYNOPSIS

```
    use GitLab::API::v4::Mock::Engine;

    my $engine = GitLab::API::v4::Mock::Engine->new();

    my $user = $engine->create_user({
        email    => $email,
        username => $username,
        name     => $name,
        ...,
    });

    print "User created with ID: $user->{id}\n";
```

## DESCRIPTION

This module provides the tooling to run a mock of the internal state of a GitLab server.

At this time very little is validated.  For example, when you create a user with "create\_user" there is no logic which double checks that you specify the required `"email"` field or that you don't put in fields that are unexpected.

## ATTRIBUTES

### next\_ids

```
    my $ids = $engine->next_ids();
```

A hash reference containing object types to the next ID.

Used by "next\_id\_for".

### users

```
    my $users = $engine->users();
    foreach my $user (@$users) { ... }
```

Returns the full array reference of all users hash references.

## METHODS

### next\_id\_for

```
    my $id = $engine->next_id_for( 'user' );
```

Given an object type this will return the next unused ID.

## USER METHODS

### user

```
    my $user = $engine->user( $id );
```

Returns a user hash reference for the given ID.

If no user is found with the ID then `"undef"` is returned.

### create\_user

```
    my $user = $engine->create_user( $user );
    my $id = $user->{id};
```

Takes a user hash reference, sets the `"id"` field, and stores it in "users".

Returns the updated user hash reference.

### update\_user

```
    my $user = $engine->update_user( $id, $new_user_data );
```

Takes the ID of the user to update and a hash reference of fields to update.

Returns the updated user hash reference.

### delete\_user

```
    my $user = $engine->delete_user( $id );
```

Deletes the user with the specified ID from "users".

If no user is found with the ID then `"undef"` is returned. Otherwise the user hash reference is returned.

## SUPPORT

See "SUPPORT" in GitLab::API::v4.

## AUTHORS

See "AUTHORS" in GitLab::API::v4.

## LICENSE

See "LICENSE" in GitLab::API::v4.
