Msg/UpdateProjectAdmin

The admin of a project can be updated:

  • message validations
  • when the project exists
  • when the admin is the admin of the project
  • the project admin is updated

Message validations

a valid message

Given the message

{
  "admin": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6",
  "project_id": "C01-001",
  "new_admin": "regen1tnh2q55v8wyygtt9srz5safamzdengsnlm0yy4"
}

When the message is validated

Then expect no error.

an error is returned if project id is empty

Given the message

{
  "admin": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6"
}

When the message is validated

Then expect the error "project id: empty string is not allowed: parse error: invalid request".

an error is returned if project id is not formatted

Given the message

{
  "admin": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6",
  "project_id": "foo"
}

When the message is validated

Then expect the error "project id: expected format [class-id]-[project-sequence]: parse error: invalid request".

an error is returned if admin and new admin are the same

Given the message

{
  "admin": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6",
  "project_id": "C01-001",
  "new_admin": "regen1depk54cuajgkzea6zpgkq36tnjwdzv4ak663u6"
}

When the message is validated

Then expect the error "admin and new admin cannot be the same: invalid request".

The project must exist

Background

Given a credit type with abbreviation "C"

And a credit class with class id "C01"

And a project with project id "C01-001" and admin alice.

the project exists

When alice attempts to update project admin with project id "C01-001"

Then expect no error.

the project does not exist

When alice attempts to update project admin with project id "C01-002"

Then expect the error "could not get project with id C01-002: not found: invalid request".

The admin must be the admin of the project

Background

Given a credit type with abbreviation "C"

And a credit class with class id "C01"

And a project with project id "C01-001" and admin alice.

the admin is the admin of the project

When alice attempts to update project admin with project id "C01-001"

Then expect no error.

the admin is not the admin of the project

When bob attempts to update project admin with project id "C01-001"

Then expect error contains "is not the admin of project C01-001: unauthorized".

The project admin is updated

Background

Given a credit type with abbreviation "C"

And a credit class with class id "C01"

And a project with project id "C01-001" and admin alice.

the project admin is updated

When alice attempts to update project admin with project id "C01-001" and new admin bob

Then expect project with project id "C01-001" and admin bob.

Event is emitted

Background

Given a credit type with abbreviation "C"

And a credit class with class id "C01"

And a project with project id "C01-001" and admin alice.

EventUpdateProjectAdmin is emitted

When alice attempts to update project admin with project id "C01-001" and new admin bob

Then expect event with properties

{
  "project_id": "C01-001"
}