• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

box / box-java-sdk-gen / #69

10 Apr 2025 09:09AM UTC coverage: 35.201% (-0.007%) from 35.208%
#69

Pull #271

github

web-flow
Merge 1ee1a61f8 into 60f1ea923
Pull Request #271: Fix: Fix sanitising headers in Java (box/box-codegen#698)

1 of 9 new or added lines in 2 files covered. (11.11%)

3 existing lines in 3 files now uncovered.

15269 of 43376 relevant lines covered (35.2%)

0.35 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

72.29
/src/main/java/com/box/sdkgen/box/oauth/BoxOAuth.java
1
package com.box.sdkgen.box.oauth;
2

3
import static com.box.sdkgen.internal.utils.UtilsManager.entryOf;
4
import static com.box.sdkgen.internal.utils.UtilsManager.mapOf;
5
import static com.box.sdkgen.internal.utils.UtilsManager.prepareParams;
6
import static com.box.sdkgen.serialization.json.JsonManager.sdToUrlParams;
7

8
import com.box.sdkgen.box.errors.BoxSDKError;
9
import com.box.sdkgen.box.tokenstorage.TokenStorage;
10
import com.box.sdkgen.managers.authorization.AuthorizationManager;
11
import com.box.sdkgen.networking.auth.Authentication;
12
import com.box.sdkgen.networking.network.NetworkSession;
13
import com.box.sdkgen.schemas.accesstoken.AccessToken;
14
import com.box.sdkgen.schemas.postoauth2revoke.PostOAuth2Revoke;
15
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2Token;
16
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2TokenGrantTypeField;
17
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2TokenSubjectTokenTypeField;
18
import com.box.sdkgen.serialization.json.JsonManager;
19
import java.util.List;
20
import java.util.Map;
21

22
public class BoxOAuth implements Authentication {
23

24
  public final OAuthConfig config;
25

26
  public final TokenStorage tokenStorage;
27

28
  public BoxOAuth(OAuthConfig config) {
1✔
29
    this.config = config;
1✔
30
    this.tokenStorage = this.config.getTokenStorage();
1✔
31
  }
1✔
32

33
  public String getAuthorizeUrl() {
34
    return getAuthorizeUrl(new GetAuthorizeUrlOptions());
1✔
35
  }
36

37
  public String getAuthorizeUrl(GetAuthorizeUrlOptions options) {
38
    Map<String, String> paramsMap =
1✔
39
        prepareParams(
1✔
40
            mapOf(
1✔
41
                entryOf(
1✔
42
                    "client_id",
43
                    (!(options.getClientId() == null)
1✔
UNCOV
44
                        ? options.getClientId()
×
45
                        : this.config.getClientId())),
1✔
46
                entryOf(
1✔
47
                    "response_type",
48
                    (!(options.getResponseType() == null) ? options.getResponseType() : "code")),
1✔
49
                entryOf("redirect_uri", options.getRedirectUri()),
1✔
50
                entryOf("state", options.getState()),
1✔
51
                entryOf("scope", options.getScope())));
1✔
52
    return String.join(
1✔
53
        "",
54
        "https://account.box.com/api/oauth2/authorize?",
55
        sdToUrlParams(JsonManager.serialize(paramsMap)));
1✔
56
  }
57

58
  public AccessToken getTokensAuthorizationCodeGrant(String authorizationCode) {
59
    return getTokensAuthorizationCodeGrant(authorizationCode, null);
×
60
  }
61

62
  public AccessToken getTokensAuthorizationCodeGrant(
63
      String authorizationCode, NetworkSession networkSession) {
64
    AuthorizationManager authManager =
×
65
        new AuthorizationManager.AuthorizationManagerBuilder()
66
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
×
67
            .build();
×
68
    AccessToken token =
×
69
        authManager.requestAccessToken(
×
70
            new PostOAuth2Token.PostOAuth2TokenBuilder(
71
                    PostOAuth2TokenGrantTypeField.AUTHORIZATION_CODE)
72
                .code(authorizationCode)
×
73
                .clientId(this.config.getClientId())
×
74
                .clientSecret(this.config.getClientSecret())
×
75
                .build());
×
76
    this.tokenStorage.store(token);
×
77
    return token;
×
78
  }
79

80
  public AccessToken retrieveToken() {
81
    return retrieveToken(null);
×
82
  }
83

84
  @Override
85
  public AccessToken retrieveToken(NetworkSession networkSession) {
86
    AccessToken token = this.tokenStorage.get();
1✔
87
    if (token == null) {
1✔
88
      throw new BoxSDKError(
×
89
          "Access and refresh tokens not available. Authenticate before making any API call first.");
90
    }
91
    return token;
1✔
92
  }
93

94
  public AccessToken refreshToken() {
95
    return refreshToken(null);
×
96
  }
97

98
  @Override
99
  public AccessToken refreshToken(NetworkSession networkSession) {
100
    AccessToken oldToken = this.tokenStorage.get();
1✔
101
    String tokenUsedForRefresh = (!(oldToken == null) ? oldToken.getRefreshToken() : null);
1✔
102
    AuthorizationManager authManager =
1✔
103
        new AuthorizationManager.AuthorizationManagerBuilder()
104
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
1✔
105
            .build();
1✔
106
    AccessToken token =
1✔
107
        authManager.requestAccessToken(
×
108
            new PostOAuth2Token.PostOAuth2TokenBuilder(PostOAuth2TokenGrantTypeField.REFRESH_TOKEN)
109
                .clientId(this.config.getClientId())
1✔
110
                .clientSecret(this.config.getClientSecret())
1✔
111
                .refreshToken(tokenUsedForRefresh)
1✔
112
                .build());
1✔
113
    this.tokenStorage.store(token);
×
114
    return token;
×
115
  }
116

117
  public String retrieveAuthorizationHeader() {
118
    return retrieveAuthorizationHeader(null);
×
119
  }
120

121
  @Override
122
  public String retrieveAuthorizationHeader(NetworkSession networkSession) {
123
    AccessToken token = this.retrieveToken(networkSession);
1✔
124
    return String.join("", "Bearer ", token.getAccessToken());
1✔
125
  }
126

127
  public void revokeToken() {
128
    revokeToken(null);
1✔
129
  }
1✔
130

131
  @Override
132
  public void revokeToken(NetworkSession networkSession) {
133
    AccessToken token = this.tokenStorage.get();
1✔
134
    if (token == null) {
1✔
135
      return;
×
136
    }
137
    AuthorizationManager authManager =
1✔
138
        new AuthorizationManager.AuthorizationManagerBuilder()
139
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
1✔
140
            .build();
1✔
141
    authManager.revokeAccessToken(
1✔
142
        new PostOAuth2Revoke.PostOAuth2RevokeBuilder()
143
            .clientId(this.config.getClientId())
1✔
144
            .clientSecret(this.config.getClientSecret())
1✔
145
            .token(token.getAccessToken())
1✔
146
            .build());
1✔
147
  }
1✔
148

149
  @Override
150
  public AccessToken downscopeToken(
151
      List<String> scopes, String resource, String sharedLink, NetworkSession networkSession) {
152
    AccessToken token = this.tokenStorage.get();
1✔
153
    if (token == null || token.getAccessToken() == null) {
1✔
154
      throw new BoxSDKError("No access token is available.");
×
155
    }
156
    AuthorizationManager authManager =
1✔
157
        new AuthorizationManager.AuthorizationManagerBuilder()
158
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
1✔
159
            .build();
1✔
160
    AccessToken downscopedToken =
1✔
161
        authManager.requestAccessToken(
1✔
162
            new PostOAuth2Token.PostOAuth2TokenBuilder(
163
                    PostOAuth2TokenGrantTypeField.URN_IETF_PARAMS_OAUTH_GRANT_TYPE_TOKEN_EXCHANGE)
164
                .subjectToken(token.getAccessToken())
1✔
165
                .subjectTokenType(
1✔
166
                    PostOAuth2TokenSubjectTokenTypeField
167
                        .URN_IETF_PARAMS_OAUTH_TOKEN_TYPE_ACCESS_TOKEN)
168
                .resource(resource)
1✔
169
                .scope(String.join(" ", scopes))
1✔
170
                .boxSharedLink(sharedLink)
1✔
171
                .build());
1✔
172
    return downscopedToken;
1✔
173
  }
174

175
  public TokenStorage getTokenStorage() {
176
    return tokenStorage;
×
177
  }
178
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc