attzonko / mmpy_bot

A python-based chatbot for Mattermost (http://www.mattermost.org).
MIT License
266 stars 104 forks source link

CI testing against a Mattermost server #180

Closed unode closed 2 years ago

unode commented 3 years ago

Following from a discussion in the chat (@jneeven @attzonko) we identified a few obstacles and some possible solutions that need to be further explored.

Using

Challenges

Possibilities to explore

saf6260 commented 3 years ago

Hey @unode, apologies if this is random, but I've done something like this before for Mattermost's golang bot wrapper (See the add_users.sh and docker-compose files in their repo for some setup) as well as wanted to mention you can use mmctl to create and return bot tokens (you just have to log in first with a created user, but its quite easy to do using their cli options.

Depending on my free time (since I'm a student), I'd be happy to assist in this effort if you'd like to chat about it more sometime, or if not, hopefully the link I posted might assist a bit

unode commented 3 years ago

Hi @saf6260. Thanks a lot for the pointers! This is gold and a massive time saver!!!

Would be great to have a chat. We don't want to distract you from your studies but if you ever want to, join us on Discord. Cheers!

saf6260 commented 3 years ago

Hey @unode, thanks for the invite! Definitely interested in joining, however it appears I'm having an issue joining via the link provided. Is there a different link I can use? Or I can figure out a different way to send you my discord info if that is easier

unode commented 3 years ago

Hum... the link seems to work for me. Could you maybe try a different browser (without addons) or visiting the link in incognito mode?

Perhaps some screenshots will help us figure out what might be happening...

On my side, this is what I get when I visit the link: screenshot_2021-04-14_21-40-11_283843696

saf6260 commented 3 years ago

That worked, thanks! Guess I had a secondary addon that blocked something. Its worked from other links, so not sure what happened

unode commented 3 years ago

I was able to work on this for another project and works (locally) with the mattermost/mattermost-preview container.

Here's a possibly useful extract:

TARGET="container_name"
MM="docker exec $TARGET mattermost --config=mattermost/config/config_docker.json"
MMCTL="docker exec $TARGET mmctl"

# Create the initial (admin) user
$MM user create --email 'root@localhost' --username root --password password --system_admin

# Authenticate mmctl so we can use some instructions only available or effective through the REST API
$MMCTL auth login http://localhost:8065 --name local --username root --password password

From this we can use mattermost or mmctl to create teams, channels, bot accounts, etc...

$MM user create --email 'user@localhost' --username user --password password --system_admin
$MMCTL config set ServiceSettings.EnableBotAccountCreation true
$MMCTL config set ServiceSettings.SiteURL 'http://localhost:8065'
OUTPUT="$($MMCTL bot create mybot --display-name mybot --with-token)"
$MMCTL roles system_admin mybot
$MMCTL bot assign mybot user
$MM team create --name testteam --display_name TestTeam
$MM team add testteam root user mybot
$MM channel create --team testteam --name bot_test --display_name "bot_test" --private
$MM channel add testteam:bot_test root user mybot

To extract the bot token from the output this gets the job done:

printf "BOT_TOKEN=%s\n" "$(echo "$OUTPUT" | grep autogenerated | sed 's/: autogenerated//g')"
unode commented 2 years ago

Integration tests already do this so closing.