github.com/TrueCloudLab/frostfs-api-go/v2@v2.0.0-20230228134343-196241c4e79a/session/test/generate.go (about)

     1  package sessiontest
     2  
     3  import (
     4  	acltest "github.com/TrueCloudLab/frostfs-api-go/v2/acl/test"
     5  	"github.com/TrueCloudLab/frostfs-api-go/v2/internal/random"
     6  	refstest "github.com/TrueCloudLab/frostfs-api-go/v2/refs/test"
     7  	"github.com/TrueCloudLab/frostfs-api-go/v2/session"
     8  	statustest "github.com/TrueCloudLab/frostfs-api-go/v2/status/test"
     9  )
    10  
    11  func GenerateCreateRequestBody(empty bool) *session.CreateRequestBody {
    12  	m := new(session.CreateRequestBody)
    13  
    14  	if !empty {
    15  		m.SetExpiration(555)
    16  		m.SetOwnerID(refstest.GenerateOwnerID(false))
    17  	}
    18  
    19  	return m
    20  }
    21  
    22  func GenerateCreateRequest(empty bool) *session.CreateRequest {
    23  	m := new(session.CreateRequest)
    24  
    25  	if !empty {
    26  		m.SetBody(GenerateCreateRequestBody(false))
    27  	}
    28  
    29  	m.SetMetaHeader(GenerateRequestMetaHeader(empty))
    30  	m.SetVerificationHeader(GenerateRequestVerificationHeader(empty))
    31  
    32  	return m
    33  }
    34  
    35  func GenerateCreateResponseBody(empty bool) *session.CreateResponseBody {
    36  	m := new(session.CreateResponseBody)
    37  
    38  	if !empty {
    39  		m.SetID([]byte{1, 2, 3})
    40  		m.SetSessionKey([]byte{4, 5, 6})
    41  	}
    42  
    43  	return m
    44  }
    45  
    46  func GenerateCreateResponse(empty bool) *session.CreateResponse {
    47  	m := new(session.CreateResponse)
    48  
    49  	if !empty {
    50  		m.SetBody(GenerateCreateResponseBody(false))
    51  	}
    52  
    53  	m.SetMetaHeader(GenerateResponseMetaHeader(empty))
    54  	m.SetVerificationHeader(GenerateResponseVerificationHeader(empty))
    55  
    56  	return m
    57  }
    58  
    59  func GenerateResponseVerificationHeader(empty bool) *session.ResponseVerificationHeader {
    60  	return generateResponseVerificationHeader(empty, true)
    61  }
    62  
    63  func generateResponseVerificationHeader(empty, withOrigin bool) *session.ResponseVerificationHeader {
    64  	m := new(session.ResponseVerificationHeader)
    65  
    66  	if !empty {
    67  		m.SetBodySignature(refstest.GenerateSignature(false))
    68  	}
    69  
    70  	m.SetMetaSignature(refstest.GenerateSignature(empty))
    71  	m.SetOriginSignature(refstest.GenerateSignature(empty))
    72  
    73  	if withOrigin {
    74  		m.SetOrigin(generateResponseVerificationHeader(empty, false))
    75  	}
    76  
    77  	return m
    78  }
    79  
    80  func GenerateResponseMetaHeader(empty bool) *session.ResponseMetaHeader {
    81  	return generateResponseMetaHeader(empty, true)
    82  }
    83  
    84  func generateResponseMetaHeader(empty, withOrigin bool) *session.ResponseMetaHeader {
    85  	m := new(session.ResponseMetaHeader)
    86  
    87  	if !empty {
    88  		m.SetEpoch(13)
    89  		m.SetTTL(100)
    90  	}
    91  
    92  	m.SetXHeaders(GenerateXHeaders(empty))
    93  	m.SetVersion(refstest.GenerateVersion(empty))
    94  	m.SetStatus(statustest.Status(empty))
    95  
    96  	if withOrigin {
    97  		m.SetOrigin(generateResponseMetaHeader(empty, false))
    98  	}
    99  
   100  	return m
   101  }
   102  
   103  func GenerateRequestVerificationHeader(empty bool) *session.RequestVerificationHeader {
   104  	return generateRequestVerificationHeader(empty, true)
   105  }
   106  
   107  func generateRequestVerificationHeader(empty, withOrigin bool) *session.RequestVerificationHeader {
   108  	m := new(session.RequestVerificationHeader)
   109  
   110  	if !empty {
   111  		m.SetBodySignature(refstest.GenerateSignature(false))
   112  	}
   113  
   114  	m.SetMetaSignature(refstest.GenerateSignature(empty))
   115  	m.SetOriginSignature(refstest.GenerateSignature(empty))
   116  
   117  	if withOrigin {
   118  		m.SetOrigin(generateRequestVerificationHeader(empty, false))
   119  	}
   120  
   121  	return m
   122  }
   123  
   124  func GenerateRequestMetaHeader(empty bool) *session.RequestMetaHeader {
   125  	return generateRequestMetaHeader(empty, true)
   126  }
   127  
   128  func generateRequestMetaHeader(empty, withOrigin bool) *session.RequestMetaHeader {
   129  	m := new(session.RequestMetaHeader)
   130  
   131  	if !empty {
   132  		m.SetEpoch(13)
   133  		m.SetTTL(100)
   134  		m.SetNetworkMagic(1337)
   135  	}
   136  
   137  	m.SetXHeaders(GenerateXHeaders(empty))
   138  	m.SetVersion(refstest.GenerateVersion(empty))
   139  	m.SetSessionToken(GenerateSessionToken(empty))
   140  	m.SetBearerToken(acltest.GenerateBearerToken(empty))
   141  
   142  	if withOrigin {
   143  		m.SetOrigin(generateRequestMetaHeader(empty, false))
   144  	}
   145  
   146  	return m
   147  }
   148  
   149  func GenerateSessionToken(empty bool) *session.Token {
   150  	m := new(session.Token)
   151  
   152  	if !empty {
   153  		m.SetBody(GenerateSessionTokenBody(false))
   154  	}
   155  
   156  	m.SetSignature(refstest.GenerateSignature(empty))
   157  
   158  	return m
   159  }
   160  
   161  func GenerateSessionTokenBody(empty bool) *session.TokenBody {
   162  	m := new(session.TokenBody)
   163  
   164  	if !empty {
   165  		m.SetID([]byte{1})
   166  		m.SetSessionKey([]byte{2})
   167  		m.SetOwnerID(refstest.GenerateOwnerID(false))
   168  		m.SetLifetime(GenerateTokenLifetime(false))
   169  
   170  		switch random.Uint32(2) {
   171  		case 0:
   172  			m.SetContext(GenerateObjectSessionContext(false))
   173  		case 1:
   174  			m.SetContext(GenerateContainerSessionContext(false))
   175  		}
   176  	}
   177  
   178  	return m
   179  }
   180  
   181  func GenerateTokenLifetime(empty bool) *session.TokenLifetime {
   182  	m := new(session.TokenLifetime)
   183  
   184  	if !empty {
   185  		m.SetExp(1)
   186  		m.SetIat(2)
   187  		m.SetExp(3)
   188  	}
   189  
   190  	return m
   191  }
   192  
   193  func GenerateObjectSessionContext(empty bool) *session.ObjectSessionContext {
   194  	m := new(session.ObjectSessionContext)
   195  
   196  	if !empty {
   197  		m.SetVerb(session.ObjectVerbHead)
   198  		m.SetTarget(refstest.GenerateContainerID(false), refstest.GenerateObjectIDs(false)...)
   199  	}
   200  
   201  	return m
   202  }
   203  
   204  func GenerateContainerSessionContext(empty bool) *session.ContainerSessionContext {
   205  	m := new(session.ContainerSessionContext)
   206  
   207  	if !empty {
   208  		m.SetVerb(session.ContainerVerbDelete)
   209  		m.SetWildcard(true)
   210  		m.SetContainerID(refstest.GenerateContainerID(false))
   211  	}
   212  
   213  	return m
   214  }
   215  
   216  func GenerateXHeader(empty bool) *session.XHeader {
   217  	m := new(session.XHeader)
   218  
   219  	if !empty {
   220  		m.SetKey("key")
   221  		m.SetValue("val")
   222  	}
   223  
   224  	return m
   225  }
   226  
   227  func GenerateXHeaders(empty bool) []session.XHeader {
   228  	var xs []session.XHeader
   229  
   230  	if !empty {
   231  		xs = append(xs,
   232  			*GenerateXHeader(false),
   233  			*GenerateXHeader(false),
   234  		)
   235  	}
   236  
   237  	return xs
   238  }