All files / app/assets/javascripts/jira_connect/subscriptions api.js

82.14% Statements 23/28
57.14% Branches 4/7
55.55% Functions 5/9
82.14% Lines 23/28

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97            11x 11x 11x 11x     11x   11x       11x 1x   1x             11x         1x                         11x                   11x 1x 1x     11x 1x   1x                           11x 2x   2x               11x       11x      
import axios from 'axios';
import { buildApiUrl } from '~/api/api_utils';
 
import { GITLAB_COM_BASE_PATH } from '~/jira_connect/subscriptions/constants';
import { getJwt } from './utils';
 
const CURRENT_USER_PATH = '/api/:version/user';
const JIRA_CONNECT_SUBSCRIPTIONS_PATH = '/api/:version/integrations/jira_connect/subscriptions';
const JIRA_CONNECT_INSTALLATIONS_PATH = '/-/jira_connect/installations';
const JIRA_CONNECT_OAUTH_APPLICATION_ID_PATH = '/-/jira_connect/oauth_application_id';
 
// This export is only used for testing purposes
export const axiosInstance = axios.create();
 
export const setApiBaseURL = (baseURL = null) => {
  axiosInstance.defaults.baseURL = baseURL;
};
 
export const removeSubscription = async (removePath) => {
  const jwt = await getJwt();
 
  return axiosInstance.delete(removePath, {
    params: {
      jwt,
    },
  });
};
 
export const fetchGroups = async (
  groupsPath,
  { minAccessLevel, page, perPage, search },
  accessToken = null,
) => {
  return axiosInstance.get(groupsPath, {
    params: {
      min_access_level: minAccessLevel,
      page,
      per_page: perPage,
      search,
    },
    headers: {
      ...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}),
    },
  });
};
 
export const fetchSubscriptions = async (subscriptionsPath) => {
  const jwt = await getJwt();
 
  return axiosInstance.get(subscriptionsPath, {
    params: {
      jwt,
    },
  });
};
 
export const getCurrentUser = (options) => {
  const url = buildApiUrl(CURRENT_USER_PATH);
  return axiosInstance.get(url, { ...options });
};
 
export const addJiraConnectSubscription = (namespacePath, { jwt, accessToken }) => {
  const url = buildApiUrl(JIRA_CONNECT_SUBSCRIPTIONS_PATH);
 
  return axiosInstance.post(
    url,
    {
      jwt,
      namespace_path: namespacePath,
    },
    {
      headers: {
        Authorization: `Bearer ${accessToken}`,
      },
    },
  );
};
 
export const updateInstallation = async (instanceUrl) => {
  const jwt = await getJwt();
 
  return axiosInstance.put(JIRA_CONNECT_INSTALLATIONS_PATH, {
    jwt,
    installation: {
      instance_url: instanceUrl === GITLAB_COM_BASE_PATH ? null : instanceUrl,
    },
  });
};
 
export const fetchOAuthApplicationId = () => {
  return axiosInstance.get(JIRA_CONNECT_OAUTH_APPLICATION_ID_PATH);
};
 
export const fetchOAuthToken = (oauthTokenPath, data = {}) => {
  return axiosInstance.post(oauthTokenPath, data);
};