|
5 | 5 | require 'stream-chat' |
6 | 6 |
|
7 | 7 | describe StreamChat::Client do |
| 8 | + def loop_times(times) |
| 9 | + loop do |
| 10 | + begin |
| 11 | + yield() |
| 12 | + return |
| 13 | + rescue StandardError, RSpec::Expectations::ExpectationNotMetError |
| 14 | + raise if times == 0 |
| 15 | + end |
| 16 | + |
| 17 | + sleep(1) |
| 18 | + times -= 1 |
| 19 | + end |
| 20 | + end |
| 21 | + |
8 | 22 | before(:all) do |
9 | 23 | @client = StreamChat::Client.new(ENV['STREAM_CHAT_API_KEY'], ENV['STREAM_CHAT_API_SECRET'], base_url: ENV['STREAM_CHAT_API_HOST']) |
10 | 24 |
|
|
458 | 472 | it 'request the export for a channel that does not exist' do |
459 | 473 | expect do |
460 | 474 | @client.export_channels({ type: 'messaging', id: SecureRandom.uuid }) |
461 | | - end.to raise_error |
| 475 | + end.to raise_error StreamChat::StreamAPIException |
462 | 476 | end |
463 | 477 |
|
464 | 478 | it 'request the channel export' do |
|
594 | 608 | end |
595 | 609 | end |
596 | 610 | end |
| 611 | + |
| 612 | + describe 'permissions' do |
| 613 | + before(:all) do |
| 614 | + @permission_id = SecureRandom.uuid |
| 615 | + end |
| 616 | + |
| 617 | + it 'create a permission' do |
| 618 | + @client.create_permission({ |
| 619 | + id: @permission_id, |
| 620 | + name: @permission_id, |
| 621 | + action: 'CreateChannel', |
| 622 | + owner: false, |
| 623 | + same_team: false, |
| 624 | + condition: { |
| 625 | + '$subject.magic_custom_field': 'custom' |
| 626 | + } |
| 627 | + }) |
| 628 | + end |
| 629 | + |
| 630 | + it 'get permission' do |
| 631 | + loop_times 10 do |
| 632 | + permission = @client.get_permission(@permission_id) |
| 633 | + expect(permission['id']).to eq @cmd |
| 634 | + expect(permission['name']).to eq @cmd |
| 635 | + end |
| 636 | + end |
| 637 | + |
| 638 | + it 'update that permission' do |
| 639 | + loop_times 10 do |
| 640 | + @client.update_permission(@permission_id, { |
| 641 | + id: @permission_id, |
| 642 | + name: @permission_id, |
| 643 | + description: 'desc', |
| 644 | + action: 'CreateChannel', |
| 645 | + condition: { |
| 646 | + '$subject.magic_custom_field': 'custom' |
| 647 | + } |
| 648 | + }) |
| 649 | + permission = @client.get_permission(@permission_id)['permission'] |
| 650 | + expect(permission['name']).to eq @permission_id |
| 651 | + expect(permission['description']).to eq 'desc' |
| 652 | + end |
| 653 | + end |
| 654 | + |
| 655 | + it 'list permissions' do |
| 656 | + loop_times 10 do |
| 657 | + permissions = @client.list_permissions['permissions'] |
| 658 | + found = false |
| 659 | + permissions.each do |permission| |
| 660 | + if permission['id'] == @permission_id |
| 661 | + found = true |
| 662 | + break |
| 663 | + end |
| 664 | + end |
| 665 | + |
| 666 | + expect(found).to be true |
| 667 | + end |
| 668 | + end |
| 669 | + |
| 670 | + it 'delete that permission' do |
| 671 | + loop_times 10 do |
| 672 | + @client.delete_permission(@permission_id) |
| 673 | + end |
| 674 | + end |
| 675 | + |
| 676 | + it 'create role' do |
| 677 | + @client.create_role(@permission_id) |
| 678 | + end |
| 679 | + |
| 680 | + it 'list new role' do |
| 681 | + loop_times 10 do |
| 682 | + roles = @client.list_roles['roles'] |
| 683 | + found = false |
| 684 | + roles.each do |role| |
| 685 | + if role['name'] == @permission_id |
| 686 | + found = true |
| 687 | + break |
| 688 | + end |
| 689 | + end |
| 690 | + expect(found).to be true |
| 691 | + end |
| 692 | + end |
| 693 | + |
| 694 | + it 'delete role' do |
| 695 | + loop_times 10 do |
| 696 | + @client.delete_role @permission_id |
| 697 | + end |
| 698 | + end |
| 699 | + end |
597 | 700 | end |
0 commit comments