|
7 | 7 | import com.slack.api.bolt.AppConfig; |
8 | 8 | import com.slack.api.bolt.model.Bot; |
9 | 9 | import com.slack.api.bolt.model.Installer; |
| 10 | +import com.slack.api.bolt.model.builtin.DefaultInstaller; |
10 | 11 | import com.slack.api.bolt.request.Request; |
11 | 12 | import com.slack.api.bolt.request.RequestHeaders; |
12 | 13 | import com.slack.api.bolt.request.builtin.OAuthCallbackRequest; |
13 | 14 | import com.slack.api.bolt.response.Response; |
14 | 15 | import com.slack.api.bolt.service.InstallationService; |
15 | 16 | import com.slack.api.bolt.service.builtin.ClientOnlyOAuthStateService; |
| 17 | +import com.slack.api.bolt.service.builtin.oauth.view.OAuthRedirectUriPageRenderer; |
| 18 | +import com.slack.api.bolt.service.builtin.oauth.view.default_impl.OAuthDefaultRedirectUriPageRenderer; |
16 | 19 | import lombok.extern.slf4j.Slf4j; |
17 | 20 | import org.junit.After; |
18 | 21 | import org.junit.Before; |
@@ -151,4 +154,65 @@ public void oauthPersistenceErrorCallback() throws Exception { |
151 | 154 | Response response = app.run(req); |
152 | 155 | assertThat(response.getStatusCode(), is(expectedStatusCode)); |
153 | 156 | } |
| 157 | + |
| 158 | + @Test |
| 159 | + public void testDefaultRenderer_renderSuccessPage() { |
| 160 | + OAuthRedirectUriPageRenderer renderer = new OAuthDefaultRedirectUriPageRenderer(); |
| 161 | + { |
| 162 | + Installer installer = new DefaultInstaller(); |
| 163 | + installer.setAppId("A123"); |
| 164 | + installer.setTeamId("T123"); |
| 165 | + String page = renderer.renderSuccessPage(installer, "https://www.example.com/?foo=bar&baz=123"); |
| 166 | + assertThat(page.contains("https://www.example.com/?foo=bar&baz=123"), is(false)); |
| 167 | + assertThat(page.contains("<meta http-equiv=\"refresh\" content=\"0; URL=https://www.example.com/?foo=bar&baz=123\">"), is(true)); |
| 168 | + assertThat(page.contains("<a href=\"https://www.example.com/?foo=bar&baz=123\">here</a>"), is(true)); |
| 169 | + assertThat(page.contains("<a href=\"https://app.slack.com/client/T123\" target=\"_blank\">"), is(true)); |
| 170 | + } |
| 171 | + { |
| 172 | + Installer installer = new DefaultInstaller(); |
| 173 | + installer.setAppId(null); |
| 174 | + installer.setTeamId(null); |
| 175 | + String page = renderer.renderSuccessPage(installer, null); |
| 176 | + assertThat(page.contains("<meta http-equiv=\"refresh\" content=\"0; URL=slack://open\">"), is(true)); |
| 177 | + assertThat(page.contains("<a href=\"slack://open\">here</a>"), is(true)); |
| 178 | + assertThat(page.contains("<a href=\"https://slack.com/\" target=\"_blank\">"), is(true)); |
| 179 | + } |
| 180 | + { |
| 181 | + Installer installer = new DefaultInstaller(); |
| 182 | + installer.setAppId("A123"); |
| 183 | + installer.setTeamId("T123"); |
| 184 | + String page = renderer.renderSuccessPage(installer, null); |
| 185 | + assertThat(page.contains("slack://app?team=T123&id=A123"), is(false)); |
| 186 | + assertThat(page.contains("<meta http-equiv=\"refresh\" content=\"0; URL=slack://app?team=T123&id=A123\">"), is(true)); |
| 187 | + assertThat(page.contains("<a href=\"slack://app?team=T123&id=A123\">here</a>"), is(true)); |
| 188 | + assertThat(page.contains("<a href=\"https://app.slack.com/client/T123\" target=\"_blank\">"), is(true)); |
| 189 | + } |
| 190 | + { |
| 191 | + Installer installer = new DefaultInstaller(); |
| 192 | + installer.setAppId("A123"); |
| 193 | + installer.setTeamId("T123"); |
| 194 | + installer.setEnterpriseId("E123"); |
| 195 | + installer.setIsEnterpriseInstall(true); |
| 196 | + installer.setEnterpriseUrl("https://test.enterprise.slack.com/"); |
| 197 | + String page = renderer.renderSuccessPage(installer, null); |
| 198 | + assertThat(page.contains("<meta http-equiv=\"refresh\" content=\"0; URL=https://test.enterprise.slack.com/manage/organization/apps/profile/A123/workspaces/add\">"), is(true)); |
| 199 | + assertThat(page.contains("<a href=\"https://test.enterprise.slack.com/manage/organization/apps/profile/A123/workspaces/add\">here</a>"), is(true)); |
| 200 | + assertThat(page.contains("<a href=\"https://app.slack.com/client/T123\" target=\"_blank\">"), is(true)); |
| 201 | + } |
| 202 | + } |
| 203 | + |
| 204 | + @Test |
| 205 | + public void testDefaultRenderer_renderFailurePage() { |
| 206 | + OAuthRedirectUriPageRenderer renderer = new OAuthDefaultRedirectUriPageRenderer(); |
| 207 | + { |
| 208 | + String page = renderer.renderFailurePage("/slack/install", "access_denied"); |
| 209 | + assertThat(page.contains("<a href=\"/slack/install\">here</a> or contact the app owner (reason: access_denied)"), is(true)); |
| 210 | + } |
| 211 | + { |
| 212 | + String page = renderer.renderFailurePage("/slack/install&team=T123&foo=bar", "<b>test</b>"); |
| 213 | + assertThat(page.contains("/slack/install&team=T123&foo=bar"), is(false)); |
| 214 | + assertThat(page.contains("<b>test</b>"), is(false)); |
| 215 | + assertThat(page.contains("<a href=\"/slack/install&team=T123&foo=bar\">here</a> or contact the app owner (reason: <b>test</b>)"), is(true)); |
| 216 | + } |
| 217 | + } |
154 | 218 | } |
0 commit comments