ソースを参照

Switch to UserInfoRequestedEvent in qauth.

pull/407/head
Greg Holmes 9年前
コミット
f202f8a056

+ 11
- 15
qauth/src/com/dmdirc/addons/qauth/QAuthManager.java ファイルの表示

35
 import com.dmdirc.events.ServerConnectedEvent;
35
 import com.dmdirc.events.ServerConnectedEvent;
36
 import com.dmdirc.events.ServerInviteReceivedEvent;
36
 import com.dmdirc.events.ServerInviteReceivedEvent;
37
 import com.dmdirc.events.ServerNoticeEvent;
37
 import com.dmdirc.events.ServerNoticeEvent;
38
-import com.dmdirc.events.ServerNumericEvent;
38
+import com.dmdirc.events.UserInfoResponseEvent;
39
 import com.dmdirc.interfaces.Connection;
39
 import com.dmdirc.interfaces.Connection;
40
 import com.dmdirc.interfaces.User;
40
 import com.dmdirc.interfaces.User;
41
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
41
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
42
+import com.dmdirc.parser.events.UserInfoEvent;
42
 import com.dmdirc.plugins.PluginDomain;
43
 import com.dmdirc.plugins.PluginDomain;
43
 import com.dmdirc.plugins.PluginInfo;
44
 import com.dmdirc.plugins.PluginInfo;
44
 import com.dmdirc.util.validators.NotEmptyValidator;
45
 import com.dmdirc.util.validators.NotEmptyValidator;
64
     private boolean autoInvite;
65
     private boolean autoInvite;
65
     private boolean acceptInvites;
66
     private boolean acceptInvites;
66
     private boolean waitingWhois;
67
     private boolean waitingWhois;
67
-    private boolean authed;
68
 
68
 
69
     @Inject
69
     @Inject
70
     public QAuthManager(
70
     public QAuthManager(
113
         connection.getLocalUser().ifPresent(u -> {
113
         connection.getLocalUser().ifPresent(u -> {
114
             connection.requestUserInfo(u);
114
             connection.requestUserInfo(u);
115
             waitingWhois = true;
115
             waitingWhois = true;
116
-            authed = false;
117
         });
116
         });
118
     }
117
     }
119
 
118
 
130
     }
129
     }
131
 
130
 
132
     @Handler
131
     @Handler
133
-    void handleServerNumericEvent(final ServerNumericEvent event) {
132
+    void handleUserInfoResponse(final UserInfoResponseEvent event) {
134
         if (!waitingWhois) {
133
         if (!waitingWhois) {
135
             return;
134
             return;
136
         }
135
         }
137
-        if(event.getNumeric() == 330 && event.getConnection().getLocalUser().map(User::getNickname)
138
-                .orElse("").equalsIgnoreCase(event.getArgs()[3])) {
139
-            // TODO: Check account matches? (param arg 4)
140
-            authed = true;
141
-        }
142
-        if (event.getNumeric() == 318 && event.getConnection().getLocalUser().map(User::getNickname)
143
-                .orElse("").equalsIgnoreCase(event.getArgs()[3])) {
144
-            waitingWhois = false;
145
-            if (!authed) {
146
-                auth(event.getConnection());
136
+        event.getConnection().getLocalUser().ifPresent(u -> {
137
+            if (u.equals(event.getUser())) {
138
+                // TODO: Check account matches?
139
+                if (!event.getInfo(UserInfoEvent.UserInfoType.ACCOUNT_NAME).isPresent()) {
140
+                    auth(event.getConnection());
141
+                }
142
+                waitingWhois = false;
147
             }
143
             }
148
-        }
144
+        });
149
     }
145
     }
150
 
146
 
151
     @Handler
147
     @Handler

+ 32
- 1
qauth/test/com/dmdirc/addons/qauth/QAuthManagerTest.java ファイルの表示

33
 import com.dmdirc.events.ServerConnectedEvent;
33
 import com.dmdirc.events.ServerConnectedEvent;
34
 import com.dmdirc.events.ServerInviteReceivedEvent;
34
 import com.dmdirc.events.ServerInviteReceivedEvent;
35
 import com.dmdirc.events.ServerNoticeEvent;
35
 import com.dmdirc.events.ServerNoticeEvent;
36
+import com.dmdirc.events.UserInfoResponseEvent;
36
 import com.dmdirc.interfaces.Connection;
37
 import com.dmdirc.interfaces.Connection;
37
 import com.dmdirc.interfaces.User;
38
 import com.dmdirc.interfaces.User;
38
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
39
 import com.dmdirc.interfaces.config.AggregateConfigProvider;
39
 import com.dmdirc.interfaces.config.ConfigProvider;
40
 import com.dmdirc.interfaces.config.ConfigProvider;
41
+import com.dmdirc.parser.events.UserInfoEvent;
40
 import com.dmdirc.plugins.PluginInfo;
42
 import com.dmdirc.plugins.PluginInfo;
41
 import com.dmdirc.plugins.PluginMetaData;
43
 import com.dmdirc.plugins.PluginMetaData;
42
 
44
 
54
 import static org.mockito.Matchers.anyString;
56
 import static org.mockito.Matchers.anyString;
55
 import static org.mockito.Mockito.never;
57
 import static org.mockito.Mockito.never;
56
 import static org.mockito.Mockito.verify;
58
 import static org.mockito.Mockito.verify;
59
+import static org.mockito.Mockito.verifyNoMoreInteractions;
57
 import static org.mockito.Mockito.verifyZeroInteractions;
60
 import static org.mockito.Mockito.verifyZeroInteractions;
58
 import static org.mockito.Mockito.when;
61
 import static org.mockito.Mockito.when;
59
 
62
 
79
     @Mock private Invite invite;
82
     @Mock private Invite invite;
80
     @Mock private Connection connection;
83
     @Mock private Connection connection;
81
     @Mock private PreferencesCategory preferencesCategory;
84
     @Mock private PreferencesCategory preferencesCategory;
85
+    @Mock private UserInfoResponseEvent userInfoResponseEvent;
82
     @Captor private ArgumentCaptor<PreferencesCategory> preferencesCategoryArgumentCaptor;
86
     @Captor private ArgumentCaptor<PreferencesCategory> preferencesCategoryArgumentCaptor;
83
     private QAuthManager instance;
87
     private QAuthManager instance;
84
 
88
 
107
         when(preferencesDialogModel.getConfigManager()).thenReturn(aggregateConfigProvider);
111
         when(preferencesDialogModel.getConfigManager()).thenReturn(aggregateConfigProvider);
108
         when(preferencesDialogModel.getIdentity()).thenReturn(configProvider);
112
         when(preferencesDialogModel.getIdentity()).thenReturn(configProvider);
109
         when(preferencesDialogModel.getCategory("Plugins")).thenReturn(preferencesCategory);
113
         when(preferencesDialogModel.getCategory("Plugins")).thenReturn(preferencesCategory);
114
+        when(userInfoResponseEvent.getConnection()).thenReturn(connection);
110
         instance = new QAuthManager("pluginDomain", pluginInfo, config, eventBus);
115
         instance = new QAuthManager("pluginDomain", pluginInfo, config, eventBus);
111
 
116
 
112
         instance.handleUsername("username");
117
         instance.handleUsername("username");
256
         assertTrue(preferencesCategoryArgumentCaptor.getValue().getSettings().size() > 1);
261
         assertTrue(preferencesCategoryArgumentCaptor.getValue().getSettings().size() > 1);
257
     }
262
     }
258
 
263
 
259
-    // TODO: Test ServerNumericEvent method
264
+    @Test
265
+    public void testWhoisReply_NotWaiting() throws Exception {
266
+        instance.handleUserInfoResponse(userInfoResponseEvent);
267
+        verifyNoMoreInteractions(connection);
268
+    }
269
+
270
+    @Test
271
+    public void testWhoisReply_Waiting_Authed() throws Exception {
272
+        when(userInfoResponseEvent.getInfo(UserInfoEvent.UserInfoType.ACCOUNT_NAME))
273
+                .thenReturn(Optional.of("RAR"));
274
+        when(userInfoResponseEvent.getUser()).thenReturn(localUser);
275
+        instance.handleWhois(true);
276
+        instance.handleConnect(serverConnectedEvent);
277
+        instance.handleUserInfoResponse(userInfoResponseEvent);
278
+        verify(connection, never()).sendMessage(anyString(), anyString());
279
+    }
280
+
281
+    @Test
282
+    public void testWhoisReply_Waiting_NotAuthed() throws Exception {
283
+        when(userInfoResponseEvent.getInfo(UserInfoEvent.UserInfoType.ACCOUNT_NAME))
284
+                .thenReturn(Optional.empty());
285
+        when(userInfoResponseEvent.getUser()).thenReturn(localUser);
286
+        instance.handleWhois(true);
287
+        instance.handleConnect(serverConnectedEvent);
288
+        instance.handleUserInfoResponse(userInfoResponseEvent);
289
+        verify(connection).sendMessage(anyString(), anyString());
290
+    }
260
 }
291
 }

読み込み中…
キャンセル
保存