fix: unstable *RequestToJoin* tests fix (#3824)
fix: unstable *RequestToJoin* tests fix
This commit is contained in:
parent
a139871383
commit
f2770b6e5e
|
@ -350,13 +350,21 @@ func setUpOnRequestCommunityAndRoles(base CommunityEventsTestsInterface, role pr
|
||||||
advertiseCommunityTo(s, community, base.GetControlNode(), base.GetMember())
|
advertiseCommunityTo(s, community, base.GetControlNode(), base.GetMember())
|
||||||
|
|
||||||
joinOnRequestCommunity(s, community, base.GetControlNode(), base.GetEventSender())
|
joinOnRequestCommunity(s, community, base.GetControlNode(), base.GetEventSender())
|
||||||
refreshMessengerResponses(base)
|
|
||||||
joinOnRequestCommunity(s, community, base.GetControlNode(), base.GetMember())
|
joinOnRequestCommunity(s, community, base.GetControlNode(), base.GetMember())
|
||||||
refreshMessengerResponses(base)
|
|
||||||
|
checkMemberJoined := func(response *MessengerResponse) error {
|
||||||
|
return checkMemberJoinedToTheCommunity(response, base.GetMember().IdentityPublicKey())
|
||||||
|
}
|
||||||
|
|
||||||
|
waitOnMessengerResponse(s, WaitCommunityCondition, checkMemberJoined, base.GetEventSender())
|
||||||
|
|
||||||
// grant permissions to event sender
|
// grant permissions to event sender
|
||||||
grantPermission(s, community, base.GetControlNode(), base.GetEventSender(), role)
|
grantPermission(s, community, base.GetControlNode(), base.GetEventSender(), role)
|
||||||
refreshMessengerResponses(base)
|
checkPermissionGranted := func(response *MessengerResponse) error {
|
||||||
|
return checkRolePermissionInResponse(response, base.GetEventSender().IdentityPublicKey(), role)
|
||||||
|
}
|
||||||
|
|
||||||
|
waitOnMessengerResponse(s, WaitCommunityCondition, checkPermissionGranted, base.GetMember())
|
||||||
|
|
||||||
return community
|
return community
|
||||||
}
|
}
|
||||||
|
@ -837,6 +845,15 @@ func testRejectMemberRequestToJoin(base CommunityEventsTestsInterface, community
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().Len(response.RequestsToJoinCommunity, 1)
|
s.Require().Len(response.RequestsToJoinCommunity, 1)
|
||||||
|
|
||||||
|
// control node receives request to join
|
||||||
|
response, err = WaitOnMessengerResponse(
|
||||||
|
base.GetControlNode(),
|
||||||
|
func(r *MessengerResponse) bool { return len(r.RequestsToJoinCommunity) > 0 },
|
||||||
|
"control node did not receive community request to join",
|
||||||
|
)
|
||||||
|
s.Require().NoError(err)
|
||||||
|
s.Require().Len(response.RequestsToJoinCommunity, 1)
|
||||||
|
|
||||||
receivedRequest := response.RequestsToJoinCommunity[0]
|
receivedRequest := response.RequestsToJoinCommunity[0]
|
||||||
|
|
||||||
// event sender has not accepted request yet
|
// event sender has not accepted request yet
|
||||||
|
|
|
@ -241,7 +241,7 @@ func joinOnRequestCommunity(s *suite.Suite, community *communities.Community, co
|
||||||
_, err = WaitOnMessengerResponse(
|
_, err = WaitOnMessengerResponse(
|
||||||
user,
|
user,
|
||||||
func(r *MessengerResponse) bool {
|
func(r *MessengerResponse) bool {
|
||||||
return len(r.Communities()) > 0
|
return len(r.Communities()) > 0 && r.Communities()[0].HasMember(&user.identity.PublicKey)
|
||||||
},
|
},
|
||||||
"user did not receive request to join response",
|
"user did not receive request to join response",
|
||||||
)
|
)
|
||||||
|
@ -251,13 +251,12 @@ func joinOnRequestCommunity(s *suite.Suite, community *communities.Community, co
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().True(userCommunity.HasMember(&user.identity.PublicKey))
|
s.Require().True(userCommunity.HasMember(&user.identity.PublicKey))
|
||||||
|
|
||||||
// We can't identify which owner is a control node, so owner will receive twice request to join event
|
|
||||||
_, err = WaitOnMessengerResponse(
|
_, err = WaitOnMessengerResponse(
|
||||||
controlNode,
|
controlNode,
|
||||||
func(r *MessengerResponse) bool {
|
func(r *MessengerResponse) bool {
|
||||||
return len(r.Communities()) > 0
|
return len(r.Communities()) > 0 && r.Communities()[0].HasMember(&user.identity.PublicKey)
|
||||||
},
|
},
|
||||||
"user did not receive request to join response",
|
"control node did not receive request to join response",
|
||||||
)
|
)
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
}
|
}
|
||||||
|
@ -284,32 +283,54 @@ func grantPermission(s *suite.Suite, community *communities.Community, controlNo
|
||||||
Role: role,
|
Role: role,
|
||||||
})
|
})
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
|
s.Require().NoError(checkRolePermissionInResponse(responseAddRole, target.IdentityPublicKey(), role))
|
||||||
|
|
||||||
checkRole := func(response *MessengerResponse) bool {
|
response, err := WaitOnMessengerResponse(target, func(response *MessengerResponse) bool {
|
||||||
if len(response.Communities()) == 0 {
|
if len(response.Communities()) == 0 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
rCommunities := response.Communities()
|
|
||||||
s.Require().Len(rCommunities, 1)
|
|
||||||
switch role {
|
|
||||||
case protobuf.CommunityMember_ROLE_OWNER:
|
|
||||||
s.Require().True(rCommunities[0].IsMemberOwner(target.IdentityPublicKey()))
|
|
||||||
case protobuf.CommunityMember_ROLE_ADMIN:
|
|
||||||
s.Require().True(rCommunities[0].IsMemberAdmin(target.IdentityPublicKey()))
|
|
||||||
case protobuf.CommunityMember_ROLE_TOKEN_MASTER:
|
|
||||||
s.Require().True(rCommunities[0].IsMemberTokenMaster(target.IdentityPublicKey()))
|
|
||||||
default:
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
err := checkRolePermissionInResponse(response, target.IdentityPublicKey(), role)
|
||||||
}
|
|
||||||
|
|
||||||
s.Require().True(checkRole(responseAddRole))
|
return err == nil
|
||||||
|
|
||||||
response, err := WaitOnMessengerResponse(target, func(response *MessengerResponse) bool {
|
|
||||||
return len(response.Communities()) > 0
|
|
||||||
}, "community description changed message not received")
|
}, "community description changed message not received")
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
s.Require().True(checkRole(response))
|
s.Require().NoError(checkRolePermissionInResponse(response, target.IdentityPublicKey(), role))
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkRolePermissionInResponse(response *MessengerResponse, member *ecdsa.PublicKey, role protobuf.CommunityMember_Roles) error {
|
||||||
|
if len(response.Communities()) == 0 {
|
||||||
|
return errors.New("Response does not contain communities")
|
||||||
|
}
|
||||||
|
rCommunities := response.Communities()
|
||||||
|
switch role {
|
||||||
|
case protobuf.CommunityMember_ROLE_OWNER:
|
||||||
|
if !rCommunities[0].IsMemberOwner(member) {
|
||||||
|
return errors.New("Member without owner role")
|
||||||
|
}
|
||||||
|
case protobuf.CommunityMember_ROLE_ADMIN:
|
||||||
|
if !rCommunities[0].IsMemberAdmin(member) {
|
||||||
|
return errors.New("Member without admin role")
|
||||||
|
}
|
||||||
|
case protobuf.CommunityMember_ROLE_TOKEN_MASTER:
|
||||||
|
if !rCommunities[0].IsMemberTokenMaster(member) {
|
||||||
|
return errors.New("Member without token master role")
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return errors.New("Can't check unknonw member role")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkMemberJoinedToTheCommunity(response *MessengerResponse, member *ecdsa.PublicKey) error {
|
||||||
|
if len(response.Communities()) == 0 {
|
||||||
|
return errors.New("No communities in the response")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !response.Communities()[0].HasMember(member) {
|
||||||
|
return errors.New("Member was not added to the community")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue