Просмотр исходного кода

pd: set permit/deny mode on empty list

I ran into a situation where the permit-some and deny-some modes
are not set when the user list is empty. This behavior surfaced while
testing the TIK client. This does not occur in the regular OSCAR AIM
client because it sets "allow all" when the "deny some" list is empty
and "deny all" when the "permit some" list is empty.
Mike 1 год назад
Родитель
Сommit
1ea668ab01
2 измененных файлов с 40 добавлено и 20 удалено
  1. 0 8
      foodgroup/permit_deny.go
  2. 40 12
      foodgroup/permit_deny_test.go

+ 0 - 8
foodgroup/permit_deny.go

@@ -38,10 +38,6 @@ func (s PermitDenyService) AddDenyListEntries(
 	sess *state.Session,
 	body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries,
 ) error {
-	if len(body.Users) == 0 {
-		return nil
-	}
-
 	if len(body.Users) == 1 {
 		sn := state.NewIdentScreenName(body.Users[0].ScreenName)
 		if sn.String() == sess.IdentScreenName().String() {
@@ -78,10 +74,6 @@ func (s PermitDenyService) AddPermListEntries(
 	sess *state.Session,
 	body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries,
 ) error {
-	if len(body.Users) == 0 {
-		return nil
-	}
-
 	if len(body.Users) == 1 {
 		sn := state.NewIdentScreenName(body.Users[0].ScreenName)
 		if sn.String() == sess.IdentScreenName().String() {

+ 40 - 12
foodgroup/permit_deny_test.go

@@ -80,12 +80,26 @@ func TestPermitDenyService_AddDenyListEntries(t *testing.T) {
 			},
 		},
 		{
-			name: "set FeedbagPDModeDenySome - 0 users",
-			sess: newTestSession("me", sessOptSignonComplete),
-			bodyIn: wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries{
-				Users: []struct {
-					ScreenName string `oscar:"len_prefix=uint8"`
-				}{},
+			name:   "set FeedbagPDModeDenySome - 0 users",
+			sess:   newTestSession("me", sessOptSignonComplete),
+			bodyIn: wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries{},
+			mockParams: mockParams{
+				localBuddyListManagerParams: localBuddyListManagerParams{
+					setPDModeParams: setPDModeParams{
+						{
+							userScreenName: state.NewIdentScreenName("me"),
+							pdMode:         wire.FeedbagPDModeDenySome,
+						},
+					},
+				},
+				buddyBroadcasterParams: buddyBroadcasterParams{
+					broadcastVisibilityParams: broadcastVisibilityParams{
+						{
+							from:   state.NewIdentScreenName("me"),
+							filter: nil,
+						},
+					},
+				},
 			},
 		},
 		{
@@ -270,12 +284,26 @@ func TestPermitDenyService_AddPermListEntries(t *testing.T) {
 			},
 		},
 		{
-			name: "set FeedbagPDModePermitSome - 0 users",
-			sess: newTestSession("me", sessOptSignonComplete),
-			bodyIn: wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries{
-				Users: []struct {
-					ScreenName string `oscar:"len_prefix=uint8"`
-				}{},
+			name:   "set FeedbagPDModePermitSome - 0 users",
+			sess:   newTestSession("me", sessOptSignonComplete),
+			bodyIn: wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries{},
+			mockParams: mockParams{
+				localBuddyListManagerParams: localBuddyListManagerParams{
+					setPDModeParams: setPDModeParams{
+						{
+							userScreenName: state.NewIdentScreenName("me"),
+							pdMode:         wire.FeedbagPDModePermitSome,
+						},
+					},
+				},
+				buddyBroadcasterParams: buddyBroadcasterParams{
+					broadcastVisibilityParams: broadcastVisibilityParams{
+						{
+							from:   state.NewIdentScreenName("me"),
+							filter: nil,
+						},
+					},
+				},
 			},
 		},
 		{