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

box / box-java-sdk-gen / #17

17 Mar 2025 04:26PM UTC coverage: 35.208% (-0.005%) from 35.213%
#17

push

github

web-flow
feat: Expose token storage for authentication classes (box/box-codegen#682) (#250)

0 of 4 new or added lines in 4 files covered. (0.0%)

4 existing lines in 4 files now uncovered.

15234 of 43269 relevant lines covered (35.21%)

0.35 hits per line

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

89.66
/src/main/java/com/box/sdkgen/box/developertokenauth/BoxDeveloperTokenAuth.java
1
package com.box.sdkgen.box.developertokenauth;
2

3
import com.box.sdkgen.box.errors.BoxSDKError;
4
import com.box.sdkgen.box.tokenstorage.InMemoryTokenStorage;
5
import com.box.sdkgen.box.tokenstorage.TokenStorage;
6
import com.box.sdkgen.managers.authorization.AuthorizationManager;
7
import com.box.sdkgen.networking.auth.Authentication;
8
import com.box.sdkgen.networking.network.NetworkSession;
9
import com.box.sdkgen.schemas.accesstoken.AccessToken;
10
import com.box.sdkgen.schemas.postoauth2revoke.PostOAuth2Revoke;
11
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2Token;
12
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2TokenGrantTypeField;
13
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2TokenSubjectTokenTypeField;
14
import java.util.List;
15

16
public class BoxDeveloperTokenAuth implements Authentication {
17

18
  public final String token;
19

20
  public DeveloperTokenConfig config;
21

22
  public final TokenStorage tokenStorage;
23

24
  public BoxDeveloperTokenAuth(String token) {
1✔
25
    this.token = token;
1✔
26
    this.config = new DeveloperTokenConfig();
1✔
27
    this.tokenStorage =
1✔
28
        new InMemoryTokenStorage.InMemoryTokenStorageBuilder()
29
            .token(new AccessToken.AccessTokenBuilder().accessToken(this.token).build())
1✔
30
            .build();
1✔
31
  }
1✔
32

33
  protected BoxDeveloperTokenAuth(BoxDeveloperTokenAuthBuilder builder) {
1✔
34
    this.token = builder.token;
1✔
35
    this.config = builder.config;
1✔
36
    this.tokenStorage =
1✔
37
        new InMemoryTokenStorage.InMemoryTokenStorageBuilder()
38
            .token(new AccessToken.AccessTokenBuilder().accessToken(this.token).build())
1✔
39
            .build();
1✔
40
  }
1✔
41

42
  public AccessToken retrieveToken() {
43
    return retrieveToken(null);
1✔
44
  }
45

46
  @Override
47
  public AccessToken retrieveToken(NetworkSession networkSession) {
48
    AccessToken token = this.tokenStorage.get();
1✔
49
    if (token == null) {
1✔
50
      throw new BoxSDKError("No access token is available.");
1✔
51
    }
52
    return token;
1✔
53
  }
54

55
  public AccessToken refreshToken() {
56
    return refreshToken(null);
×
57
  }
58

59
  @Override
60
  public AccessToken refreshToken(NetworkSession networkSession) {
61
    throw new BoxSDKError("Developer token has expired. Please provide a new one.");
×
62
  }
63

64
  public String retrieveAuthorizationHeader() {
65
    return retrieveAuthorizationHeader(null);
×
66
  }
67

68
  @Override
69
  public String retrieveAuthorizationHeader(NetworkSession networkSession) {
70
    AccessToken token = this.retrieveToken(networkSession);
1✔
71
    return String.join("", "Bearer ", token.getAccessToken());
1✔
72
  }
73

74
  public void revokeToken() {
75
    revokeToken(null);
1✔
76
  }
1✔
77

78
  @Override
79
  public void revokeToken(NetworkSession networkSession) {
80
    AccessToken token = this.tokenStorage.get();
1✔
81
    if (token == null) {
1✔
82
      return;
×
83
    }
84
    AuthorizationManager authManager = new AuthorizationManager();
1✔
85
    authManager.revokeAccessToken(
1✔
86
        new PostOAuth2Revoke.PostOAuth2RevokeBuilder()
87
            .clientId(this.config.getClientId())
1✔
88
            .clientSecret(this.config.getClientSecret())
1✔
89
            .token(token.getAccessToken())
1✔
90
            .build());
1✔
91
    this.tokenStorage.clear();
1✔
92
  }
1✔
93

94
  @Override
95
  public AccessToken downscopeToken(
96
      List<String> scopes, String resource, String sharedLink, NetworkSession networkSession) {
97
    AccessToken token = this.tokenStorage.get();
1✔
98
    if (token == null || token.getAccessToken() == null) {
1✔
99
      throw new BoxSDKError("No access token is available.");
×
100
    }
101
    AuthorizationManager authManager = new AuthorizationManager();
1✔
102
    AccessToken downscopedToken =
1✔
103
        authManager.requestAccessToken(
1✔
104
            new PostOAuth2Token.PostOAuth2TokenBuilder(
105
                    PostOAuth2TokenGrantTypeField.URN_IETF_PARAMS_OAUTH_GRANT_TYPE_TOKEN_EXCHANGE)
106
                .subjectToken(token.getAccessToken())
1✔
107
                .subjectTokenType(
1✔
108
                    PostOAuth2TokenSubjectTokenTypeField
109
                        .URN_IETF_PARAMS_OAUTH_TOKEN_TYPE_ACCESS_TOKEN)
110
                .resource(resource)
1✔
111
                .scope(String.join(" ", scopes))
1✔
112
                .boxSharedLink(sharedLink)
1✔
113
                .build());
1✔
114
    return downscopedToken;
1✔
115
  }
116

117
  public TokenStorage getTokenStorage() {
NEW
118
    return tokenStorage;
×
119
  }
120

121
  public static class BoxDeveloperTokenAuthBuilder {
122

123
    protected final String token;
124

125
    protected DeveloperTokenConfig config;
126

127
    public BoxDeveloperTokenAuthBuilder(String token) {
1✔
128
      this.token = token;
1✔
129
      this.config = new DeveloperTokenConfig();
1✔
130
    }
1✔
131

132
    public BoxDeveloperTokenAuthBuilder config(DeveloperTokenConfig config) {
133
      this.config = config;
1✔
134
      return this;
1✔
135
    }
136

137
    public BoxDeveloperTokenAuth build() {
138
      return new BoxDeveloperTokenAuth(this);
1✔
139
    }
140
  }
141
}
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